pyossmtool 0.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. pyossmtool/__init__.py +3 -0
  2. pyossmtool/bundle/catalog/checks/bandit.scan.yaml +13 -0
  3. pyossmtool/bundle/catalog/checks/codespell.spelling.yaml +12 -0
  4. pyossmtool/bundle/catalog/checks/deadcode.scan.yaml +13 -0
  5. pyossmtool/bundle/catalog/checks/gate.acronym-allowlist.yaml +14 -0
  6. pyossmtool/bundle/catalog/checks/gate.folder-breadth.yaml +14 -0
  7. pyossmtool/bundle/catalog/checks/gate.module-private-vars.yaml +14 -0
  8. pyossmtool/bundle/catalog/checks/gate.module-size.yaml +14 -0
  9. pyossmtool/bundle/catalog/checks/gitleaks.secrets.yaml +21 -0
  10. pyossmtool/bundle/catalog/checks/hadolint.dockerfile.yaml +16 -0
  11. pyossmtool/bundle/catalog/checks/jscpd.duplication.yaml +19 -0
  12. pyossmtool/bundle/catalog/checks/markdownlint.check.yaml +17 -0
  13. pyossmtool/bundle/catalog/checks/mdformat.apply.yaml +10 -0
  14. pyossmtool/bundle/catalog/checks/mdformat.format.yaml +14 -0
  15. pyossmtool/bundle/catalog/checks/mutmut.run.yaml +13 -0
  16. pyossmtool/bundle/catalog/checks/pydeps.cycles.yaml +14 -0
  17. pyossmtool/bundle/catalog/checks/pytest.coverage.yaml +19 -0
  18. pyossmtool/bundle/catalog/checks/pytest.test.yaml +14 -0
  19. pyossmtool/bundle/catalog/checks/radon.cc.yaml +13 -0
  20. pyossmtool/bundle/catalog/checks/radon.mi.yaml +13 -0
  21. pyossmtool/bundle/catalog/checks/ruff.format.apply.yaml +11 -0
  22. pyossmtool/bundle/catalog/checks/ruff.format.yaml +14 -0
  23. pyossmtool/bundle/catalog/checks/ruff.lint.yaml +15 -0
  24. pyossmtool/bundle/catalog/checks/ruff.unused.yaml +17 -0
  25. pyossmtool/bundle/catalog/checks/semgrep.scan.yaml +18 -0
  26. pyossmtool/bundle/catalog/checks/shellcheck.yaml +13 -0
  27. pyossmtool/bundle/catalog/checks/shfmt.apply.yaml +11 -0
  28. pyossmtool/bundle/catalog/checks/shfmt.format.yaml +14 -0
  29. pyossmtool/bundle/catalog/checks/sourcery.review.yaml +14 -0
  30. pyossmtool/bundle/catalog/checks/ty.check.yaml +15 -0
  31. pyossmtool/bundle/catalog/checks/vulture.scan.yaml +16 -0
  32. pyossmtool/bundle/catalog/checks/yamlfmt.apply.yaml +10 -0
  33. pyossmtool/bundle/catalog/checks/yamlfmt.format.yaml +14 -0
  34. pyossmtool/bundle/catalog/checks/yamllint.check.yaml +16 -0
  35. pyossmtool/bundle/catalog/tools/bandit.yaml +20 -0
  36. pyossmtool/bundle/catalog/tools/codespell.yaml +17 -0
  37. pyossmtool/bundle/catalog/tools/deadcode.yaml +13 -0
  38. pyossmtool/bundle/catalog/tools/gitleaks.yaml +9 -0
  39. pyossmtool/bundle/catalog/tools/hadolint.yaml +11 -0
  40. pyossmtool/bundle/catalog/tools/jscpd.yaml +15 -0
  41. pyossmtool/bundle/catalog/tools/markdownlint.yaml +18 -0
  42. pyossmtool/bundle/catalog/tools/mdformat.yaml +13 -0
  43. pyossmtool/bundle/catalog/tools/mutmut.yaml +10 -0
  44. pyossmtool/bundle/catalog/tools/pydeps.yaml +10 -0
  45. pyossmtool/bundle/catalog/tools/pytest.yaml +12 -0
  46. pyossmtool/bundle/catalog/tools/radon.yaml +10 -0
  47. pyossmtool/bundle/catalog/tools/ruff.yaml +26 -0
  48. pyossmtool/bundle/catalog/tools/script.yaml +8 -0
  49. pyossmtool/bundle/catalog/tools/semgrep.yaml +21 -0
  50. pyossmtool/bundle/catalog/tools/shellcheck.yaml +10 -0
  51. pyossmtool/bundle/catalog/tools/shfmt.yaml +13 -0
  52. pyossmtool/bundle/catalog/tools/sourcery.yaml +10 -0
  53. pyossmtool/bundle/catalog/tools/ty.yaml +20 -0
  54. pyossmtool/bundle/catalog/tools/vulture.yaml +13 -0
  55. pyossmtool/bundle/catalog/tools/yamlfmt.yaml +24 -0
  56. pyossmtool/bundle/catalog/tools/yamllint.yaml +24 -0
  57. pyossmtool/bundle/defaults/allowlists/acronyms.yaml +10 -0
  58. pyossmtool/bundle/defaults/allowlists/folder-breadth.txt +1 -0
  59. pyossmtool/bundle/defaults/allowlists/module-private-vars.txt +1 -0
  60. pyossmtool/bundle/defaults/allowlists/module-size.txt +1 -0
  61. pyossmtool/bundle/defaults/configs/bandit.yaml +5 -0
  62. pyossmtool/bundle/defaults/configs/gates/acronym-allowlist.yaml +4 -0
  63. pyossmtool/bundle/defaults/configs/gates/folder-breadth.yaml +12 -0
  64. pyossmtool/bundle/defaults/configs/gates/module-private-vars.yaml +4 -0
  65. pyossmtool/bundle/defaults/configs/gates/module-size.yaml +6 -0
  66. pyossmtool/bundle/defaults/configs/markdownlint.json +8 -0
  67. pyossmtool/bundle/defaults/configs/ruff.toml +8 -0
  68. pyossmtool/bundle/defaults/configs/ty.toml +5 -0
  69. pyossmtool/bundle/defaults/configs/yamlfmt.yaml +4 -0
  70. pyossmtool/bundle/defaults/configs/yamllint.yaml +12 -0
  71. pyossmtool/bundle/defaults/gates/README.md +150 -0
  72. pyossmtool/bundle/defaults/gates/acronym-allowlist.sh +15 -0
  73. pyossmtool/bundle/defaults/gates/folder-breadth.sh +22 -0
  74. pyossmtool/bundle/defaults/gates/lib.sh +116 -0
  75. pyossmtool/bundle/defaults/gates/module-private-vars.sh +77 -0
  76. pyossmtool/bundle/defaults/gates/module-size.sh +60 -0
  77. pyossmtool/bundle/defaults/semgrep/python-quality.yml +19 -0
  78. pyossmtool/bundle/suites/demo.yaml +11 -0
  79. pyossmtool/bundle/suites/extended.yaml +34 -0
  80. pyossmtool/bundle/suites/format.yaml +10 -0
  81. pyossmtool/bundle/suites/formatting.yaml +10 -0
  82. pyossmtool/bundle/suites/policy.yaml +11 -0
  83. pyossmtool/bundle/suites/python-quality.yaml +9 -0
  84. pyossmtool/bundle/suites/reslab-parity.yaml +41 -0
  85. pyossmtool/bundle/suites/standard.yaml +45 -0
  86. pyossmtool/cli.py +233 -0
  87. pyossmtool/config_resolver.py +117 -0
  88. pyossmtool/discovery.py +50 -0
  89. pyossmtool/gate_config.py +119 -0
  90. pyossmtool/gates.py +102 -0
  91. pyossmtool/ignore.py +270 -0
  92. pyossmtool/ignore_materialize.py +184 -0
  93. pyossmtool/installer.py +119 -0
  94. pyossmtool/models.py +279 -0
  95. pyossmtool/parsers/__init__.py +76 -0
  96. pyossmtool/parsers/analysis.py +329 -0
  97. pyossmtool/parsers/base.py +29 -0
  98. pyossmtool/parsers/common.py +57 -0
  99. pyossmtool/parsers/format_text.py +67 -0
  100. pyossmtool/parsers/gates.py +92 -0
  101. pyossmtool/parsers/patterns.py +78 -0
  102. pyossmtool/parsers/prose.py +193 -0
  103. pyossmtool/parsers/ruff.py +103 -0
  104. pyossmtool/parsers/shell.py +83 -0
  105. pyossmtool/policy/__init__.py +0 -0
  106. pyossmtool/policy/acronym_allowlist.py +322 -0
  107. pyossmtool/policy/folder_breadth.py +306 -0
  108. pyossmtool/registry.py +72 -0
  109. pyossmtool/reporter.py +87 -0
  110. pyossmtool/resolver.py +146 -0
  111. pyossmtool/runner.py +482 -0
  112. pyossmtool/runner_script.py +131 -0
  113. pyossmtool/target_expand.py +112 -0
  114. pyossmtool-0.0.1.dist-info/METADATA +94 -0
  115. pyossmtool-0.0.1.dist-info/RECORD +119 -0
  116. pyossmtool-0.0.1.dist-info/WHEEL +5 -0
  117. pyossmtool-0.0.1.dist-info/entry_points.txt +2 -0
  118. pyossmtool-0.0.1.dist-info/licenses/LICENSE +21 -0
  119. pyossmtool-0.0.1.dist-info/top_level.txt +1 -0
pyossmtool/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ """pyossmtool — quality-gate orchestrator for AI-assisted development."""
2
+
3
+ __version__ = "0.0.1"
@@ -0,0 +1,13 @@
1
+ id: bandit.scan
2
+ tool: bandit
3
+ name: Bandit Security Scan
4
+ description: Scan Python code for common security issues.
5
+ argv:
6
+ - -r
7
+ - "{target}"
8
+ - -f
9
+ - json
10
+ - -q
11
+ parser: bandit_json
12
+ success:
13
+ exit_codes: [0, 1]
@@ -0,0 +1,12 @@
1
+ id: codespell.spelling
2
+ tool: codespell
3
+ name: Codespell
4
+ description: Check prose for common misspellings.
5
+ argv:
6
+ - "{target}"
7
+ parser: codespell_text
8
+ success:
9
+ exit_codes: [0]
10
+ remediation:
11
+ suggested_commands:
12
+ - codespell -w {target}
@@ -0,0 +1,13 @@
1
+ id: deadcode.scan
2
+ tool: deadcode
3
+ name: Deadcode Scan
4
+ description: Find unused Python definitions.
5
+ argv:
6
+ - --no-color
7
+ - "{target}"
8
+ parser: deadcode_text
9
+ success:
10
+ exit_codes: [0]
11
+ remediation:
12
+ suggested_commands:
13
+ - deadcode --no-color {target}
@@ -0,0 +1,14 @@
1
+ id: gate.acronym-allowlist
2
+ tool: script
3
+ name: Acronym Allowlist Gate
4
+ description: Require documented expansions for acronyms in contributor prose.
5
+ script: bundled:gates/acronym-allowlist.sh
6
+ parser: gate_json
7
+ output_file: .pyossmtool/reports/gate.acronym-allowlist.json
8
+ argv: []
9
+ config:
10
+ bundled: gates/acronym-allowlist.yaml
11
+ project_file: .pyossmtool/configs/gates/gate.acronym-allowlist.yaml
12
+ allowlist_bundled: acronyms.yaml
13
+ success:
14
+ exit_codes: [0]
@@ -0,0 +1,14 @@
1
+ id: gate.folder-breadth
2
+ tool: script
3
+ name: Folder Breadth Gate
4
+ description: Cap direct sibling file counts in leaf directories.
5
+ script: bundled:gates/folder-breadth.sh
6
+ parser: gate_json
7
+ output_file: .pyossmtool/reports/gate.folder-breadth.json
8
+ argv: []
9
+ config:
10
+ bundled: gates/folder-breadth.yaml
11
+ project_file: .pyossmtool/configs/gates/gate.folder-breadth.yaml
12
+ allowlist_bundled: folder-breadth.txt
13
+ success:
14
+ exit_codes: [0]
@@ -0,0 +1,14 @@
1
+ id: gate.module-private-vars
2
+ tool: script
3
+ name: Module Private Vars Gate
4
+ description: Forbid module-level names with a single leading underscore.
5
+ script: bundled:gates/module-private-vars.sh
6
+ parser: gate_json
7
+ output_file: .pyossmtool/reports/gate.module-private-vars.json
8
+ argv: []
9
+ config:
10
+ bundled: gates/module-private-vars.yaml
11
+ project_file: .pyossmtool/configs/gates/gate.module-private-vars.yaml
12
+ allowlist_bundled: module-private-vars.txt
13
+ success:
14
+ exit_codes: [0]
@@ -0,0 +1,14 @@
1
+ id: gate.module-size
2
+ tool: script
3
+ name: Module Size Gate
4
+ description: Enforce portfolio and new-file line limits on Python modules.
5
+ script: bundled:gates/module-size.sh
6
+ parser: gate_json
7
+ output_file: .pyossmtool/reports/gate.module-size.json
8
+ argv: []
9
+ config:
10
+ bundled: gates/module-size.yaml
11
+ project_file: .pyossmtool/configs/gates/gate.module-size.yaml
12
+ allowlist_bundled: module-size.txt
13
+ success:
14
+ exit_codes: [0]
@@ -0,0 +1,21 @@
1
+ id: gitleaks.secrets
2
+ tool: gitleaks
3
+ name: Gitleaks Secret Scan
4
+ description: Scan repository for leaked secrets.
5
+ argv:
6
+ - detect
7
+ - --source
8
+ - "{target}"
9
+ - --no-banner
10
+ - --redact
11
+ - --report-format
12
+ - json
13
+ - --report-path
14
+ - .pyossmtool/gitleaks-report.json
15
+ parser: gitleaks_json
16
+ success:
17
+ exit_codes: [0]
18
+ output_file: .pyossmtool/gitleaks-report.json
19
+ remediation:
20
+ suggested_commands:
21
+ - gitleaks detect --source {target}
@@ -0,0 +1,16 @@
1
+ id: hadolint.dockerfile
2
+ tool: hadolint
3
+ name: Hadolint
4
+ description: Lint Dockerfiles.
5
+ argv:
6
+ - --format
7
+ - json
8
+ - '{target}'
9
+ parser: hadolint_json
10
+ success:
11
+ exit_codes:
12
+ - 0
13
+ - 1
14
+ remediation:
15
+ suggested_commands:
16
+ - hadolint {target}
@@ -0,0 +1,19 @@
1
+ id: jscpd.duplication
2
+ tool: jscpd
3
+ name: JSCPD Duplication Scan
4
+ description: Detect duplicated code blocks above threshold.
5
+ argv:
6
+ - "{target}"
7
+ - --reporters
8
+ - json
9
+ - --silent
10
+ - --min-lines
11
+ - "3"
12
+ - --min-tokens
13
+ - "20"
14
+ parser: jscpd_json
15
+ success:
16
+ exit_codes: [0]
17
+ policy:
18
+ max_duplication_percent: 50
19
+ output_file: report/jscpd-report.json
@@ -0,0 +1,17 @@
1
+ id: markdownlint.check
2
+ tool: markdownlint
3
+ name: Markdownlint
4
+ description: Lint Markdown files for style issues.
5
+ argv:
6
+ - -c
7
+ - '{config}'
8
+ - -j
9
+ - '{target}'
10
+ parser: markdownlint_json
11
+ success:
12
+ exit_codes:
13
+ - 0
14
+ - 1
15
+ remediation:
16
+ suggested_commands:
17
+ - markdownlint {target}
@@ -0,0 +1,10 @@
1
+ id: mdformat.apply
2
+ tool: mdformat
3
+ name: mdformat Apply
4
+ description: Apply Markdown formatting.
5
+ mode: format
6
+ argv:
7
+ - "{target}"
8
+ parser: noop
9
+ success:
10
+ exit_codes: [0]
@@ -0,0 +1,14 @@
1
+ id: mdformat.format
2
+ tool: mdformat
3
+ name: mdformat Check
4
+ description: Verify Markdown formatting without applying changes.
5
+ argv:
6
+ - --check
7
+ - '{target}'
8
+ parser: mdformat_text
9
+ success:
10
+ exit_codes:
11
+ - 0
12
+ remediation:
13
+ suggested_commands:
14
+ - mdformat {target}
@@ -0,0 +1,13 @@
1
+ id: mutmut.run
2
+ tool: mutmut
3
+ name: Mutmut Mutation Testing
4
+ description: Run mutation tests (slow; requires [tool.mutmut] in pyproject.toml).
5
+ argv:
6
+ - run
7
+ parser: mutmut_text
8
+ success:
9
+ exit_codes: [0]
10
+ remediation:
11
+ suggested_commands:
12
+ - mutmut run
13
+ - mutmut results
@@ -0,0 +1,14 @@
1
+ id: pydeps.cycles
2
+ tool: pydeps
3
+ name: Pydeps Import Cycles
4
+ description: Fail when Python import cycles are detected.
5
+ argv:
6
+ - "{target}"
7
+ - --show-cycles
8
+ - --no-show
9
+ parser: pydeps_cycles_text
10
+ success:
11
+ exit_codes: [0, 1, 2]
12
+ remediation:
13
+ suggested_commands:
14
+ - pydeps {target} --show-cycles --no-show
@@ -0,0 +1,19 @@
1
+ id: pytest.coverage
2
+ tool: pytest
3
+ name: Pytest Coverage
4
+ description: Run tests with coverage floor enforcement.
5
+ argv:
6
+ - "{target}"
7
+ - --cov={cov}
8
+ - --cov-report=term-missing
9
+ - --cov-fail-under=80
10
+ - -q
11
+ parser: pytest_text
12
+ success:
13
+ exit_codes: [0]
14
+ policy:
15
+ min_coverage_percent: 80
16
+ coverage_source: src/
17
+ remediation:
18
+ suggested_commands:
19
+ - pytest {target} --cov={cov}
@@ -0,0 +1,14 @@
1
+ id: pytest.test
2
+ tool: pytest
3
+ name: Pytest
4
+ description: Run the project test suite.
5
+ argv:
6
+ - "{target}"
7
+ - -q
8
+ - --tb=line
9
+ parser: pytest_text
10
+ success:
11
+ exit_codes: [0]
12
+ remediation:
13
+ suggested_commands:
14
+ - pytest {target}
@@ -0,0 +1,13 @@
1
+ id: radon.cc
2
+ tool: radon
3
+ name: Radon Cyclomatic Complexity
4
+ description: Fail when function complexity rank exceeds policy.
5
+ argv:
6
+ - cc
7
+ - "{target}"
8
+ - -j
9
+ parser: radon_cc_json
10
+ success:
11
+ exit_codes: [0]
12
+ policy:
13
+ max_complexity_rank: A
@@ -0,0 +1,13 @@
1
+ id: radon.mi
2
+ tool: radon
3
+ name: Radon Maintainability Index
4
+ description: Fail when module maintainability rank exceeds policy.
5
+ argv:
6
+ - mi
7
+ - "{target}"
8
+ - -j
9
+ parser: radon_mi_json
10
+ success:
11
+ exit_codes: [0]
12
+ policy:
13
+ max_complexity_rank: A
@@ -0,0 +1,11 @@
1
+ id: ruff.format.apply
2
+ tool: ruff
3
+ name: Ruff Format Apply
4
+ description: Apply Ruff formatting to Python sources.
5
+ mode: format
6
+ argv:
7
+ - format
8
+ - "{target}"
9
+ parser: noop
10
+ success:
11
+ exit_codes: [0]
@@ -0,0 +1,14 @@
1
+ id: ruff.format
2
+ tool: ruff
3
+ name: Ruff Format Check
4
+ description: Verify Python formatting without applying changes.
5
+ argv:
6
+ - format
7
+ - --check
8
+ - "{target}"
9
+ parser: ruff_format_text
10
+ success:
11
+ exit_codes: [0]
12
+ remediation:
13
+ suggested_commands:
14
+ - ruff format {target}
@@ -0,0 +1,15 @@
1
+ id: ruff.lint
2
+ tool: ruff
3
+ name: Ruff Lint
4
+ description: Run ruff check on Python sources.
5
+ argv:
6
+ - check
7
+ - "{target}"
8
+ - --output-format
9
+ - json
10
+ parser: ruff_json
11
+ success:
12
+ exit_codes: [0]
13
+ remediation:
14
+ suggested_commands:
15
+ - ruff check --fix {target}
@@ -0,0 +1,17 @@
1
+ id: ruff.unused
2
+ tool: ruff
3
+ name: Ruff Unused Imports
4
+ description: Detect unused imports and variables (F401, F841).
5
+ argv:
6
+ - check
7
+ - "{target}"
8
+ - --select
9
+ - F401,F841
10
+ - --output-format
11
+ - json
12
+ parser: ruff_json
13
+ success:
14
+ exit_codes: [0]
15
+ remediation:
16
+ suggested_commands:
17
+ - ruff check --select F401,F841 --fix {target}
@@ -0,0 +1,18 @@
1
+ id: semgrep.scan
2
+ tool: semgrep
3
+ name: Semgrep Scan
4
+ description: Static analysis for security and architecture patterns.
5
+ argv:
6
+ - scan
7
+ - --config
8
+ - "{config}"
9
+ - "{target}"
10
+ - --error
11
+ - --json
12
+ - --quiet
13
+ parser: semgrep_json
14
+ success:
15
+ exit_codes: [0, 1]
16
+ remediation:
17
+ suggested_commands:
18
+ - semgrep scan --config <rules> {target}
@@ -0,0 +1,13 @@
1
+ id: shellcheck
2
+ tool: shellcheck
3
+ name: ShellCheck
4
+ description: Lint shell scripts and output JSON diagnostics.
5
+ argv:
6
+ - -f
7
+ - json
8
+ - '{target}'
9
+ parser: shellcheck_json
10
+ success:
11
+ exit_codes:
12
+ - 0
13
+ - 1
@@ -0,0 +1,11 @@
1
+ id: shfmt.apply
2
+ tool: shfmt
3
+ name: shfmt Apply
4
+ description: Apply shell script formatting.
5
+ mode: format
6
+ argv:
7
+ - -w
8
+ - "{target}"
9
+ parser: noop
10
+ success:
11
+ exit_codes: [0]
@@ -0,0 +1,14 @@
1
+ id: shfmt.format
2
+ tool: shfmt
3
+ name: shfmt Format Check
4
+ description: Verify shell script formatting via diff mode.
5
+ argv:
6
+ - -d
7
+ - '{target}'
8
+ parser: shfmt_diff
9
+ success:
10
+ exit_codes:
11
+ - 0
12
+ remediation:
13
+ suggested_commands:
14
+ - shfmt -w {target}
@@ -0,0 +1,14 @@
1
+ id: sourcery.review
2
+ tool: sourcery
3
+ name: Sourcery Review
4
+ description: Automated code review suggestions (optional; may require Sourcery account).
5
+ argv:
6
+ - review
7
+ - "{target}"
8
+ - --check
9
+ parser: sourcery_text
10
+ success:
11
+ exit_codes: [0, 1]
12
+ remediation:
13
+ suggested_commands:
14
+ - sourcery review {target}
@@ -0,0 +1,15 @@
1
+ id: ty.check
2
+ tool: ty
3
+ name: ty Type Check
4
+ description: Static type checking with concise diagnostics.
5
+ argv:
6
+ - check
7
+ - "{target}"
8
+ - --output-format
9
+ - concise
10
+ parser: ty_concise
11
+ success:
12
+ exit_codes: [0]
13
+ remediation:
14
+ suggested_commands:
15
+ - ty check {target}
@@ -0,0 +1,16 @@
1
+ id: vulture.scan
2
+ tool: vulture
3
+ name: Vulture Scan
4
+ description: Find dead Python code with high confidence.
5
+ argv:
6
+ - "{target}"
7
+ - --min-confidence
8
+ - "80"
9
+ parser: vulture_text
10
+ success:
11
+ exit_codes: [0, 3]
12
+ policy:
13
+ min_confidence: 80
14
+ remediation:
15
+ suggested_commands:
16
+ - vulture {target}
@@ -0,0 +1,10 @@
1
+ id: yamlfmt.apply
2
+ tool: yamlfmt
3
+ name: yamlfmt Apply
4
+ description: Apply YAML formatting.
5
+ mode: format
6
+ argv:
7
+ - "{target}"
8
+ parser: noop
9
+ success:
10
+ exit_codes: [0]
@@ -0,0 +1,14 @@
1
+ id: yamlfmt.format
2
+ tool: yamlfmt
3
+ name: yamlfmt Lint
4
+ description: Lint YAML files for formatting issues.
5
+ argv:
6
+ - -lint
7
+ - '{target}'
8
+ parser: yamlfmt_text
9
+ success:
10
+ exit_codes:
11
+ - 0
12
+ remediation:
13
+ suggested_commands:
14
+ - yamlfmt {target}
@@ -0,0 +1,16 @@
1
+ id: yamllint.check
2
+ tool: yamllint
3
+ name: Yamllint
4
+ description: Lint YAML files for syntax and style issues.
5
+ argv:
6
+ - -f
7
+ - parsable
8
+ - '{target}'
9
+ parser: yamllint_text
10
+ success:
11
+ exit_codes:
12
+ - 0
13
+ - 1
14
+ remediation:
15
+ suggested_commands:
16
+ - yamllint {target}
@@ -0,0 +1,20 @@
1
+ id: bandit
2
+ name: Bandit
3
+ description: Security issue scanner for Python.
4
+ install:
5
+ method: pip
6
+ package: bandit>=1.9.0
7
+ binary: bandit
8
+ documentation_url: https://bandit.readthedocs.io/
9
+ config:
10
+ flag: -c
11
+ bundled: bandit.yaml
12
+ pyproject:
13
+ - tool
14
+ - bandit
15
+ use_pyproject_as_path: true
16
+ ignore:
17
+ kind: flag_pairs
18
+ flag: -x
19
+ files:
20
+ - '**/*.py'
@@ -0,0 +1,17 @@
1
+ id: codespell
2
+ name: codespell
3
+ description: Fix common misspellings in text files.
4
+ install:
5
+ method: pip
6
+ package: codespell>=2.4.0
7
+ binary: codespell
8
+ documentation_url: https://github.com/codespell-project/codespell
9
+ config:
10
+ pyproject:
11
+ - tool
12
+ - codespell
13
+ ignore:
14
+ kind: skip_file
15
+ flag: --skip
16
+ file: codespell.skip
17
+ files: []
@@ -0,0 +1,13 @@
1
+ id: deadcode
2
+ name: deadcode
3
+ description: Find unused Python code by static analysis.
4
+ install:
5
+ method: pip
6
+ package: deadcode>=2.4.0
7
+ binary: deadcode
8
+ documentation_url: https://github.com/alanedwardes/deadcode
9
+ ignore:
10
+ kind: prefix
11
+ prefix: --exclude=
12
+ files:
13
+ - '**/*.py'
@@ -0,0 +1,9 @@
1
+ id: gitleaks
2
+ name: Gitleaks
3
+ description: Secret scanning for git repositories.
4
+ install:
5
+ method: system
6
+ package: gitleaks
7
+ binary: gitleaks
8
+ documentation_url: https://github.com/gitleaks/gitleaks
9
+ files: []
@@ -0,0 +1,11 @@
1
+ id: hadolint
2
+ name: Hadolint
3
+ description: Dockerfile linter.
4
+ install:
5
+ method: system
6
+ package: hadolint
7
+ binary: hadolint
8
+ documentation_url: https://github.com/hadolint/hadolint
9
+ files:
10
+ - '**/Dockerfile'
11
+ - '**/*.Dockerfile'
@@ -0,0 +1,15 @@
1
+ id: jscpd
2
+ name: JSCPD
3
+ description: Copy/paste detector for duplicated code.
4
+ install:
5
+ method: npm
6
+ package: jscpd
7
+ binary: jscpd
8
+ documentation_url: https://docs.jscpd.io/
9
+ ignore:
10
+ kind: config_overlay
11
+ format: json
12
+ file: jscpd.json
13
+ flag: --config
14
+ key: ignore
15
+ files: []
@@ -0,0 +1,18 @@
1
+ id: markdownlint
2
+ name: markdownlint
3
+ description: Markdown style linter (markdownlint-cli).
4
+ install:
5
+ method: npm
6
+ package: markdownlint-cli
7
+ binary: markdownlint
8
+ documentation_url: https://github.com/DavidAnson/markdownlint
9
+ config:
10
+ flag: -c
11
+ bundled: markdownlint.json
12
+ pass_flag: false
13
+ repo_files:
14
+ - .markdownlint.json
15
+ - .markdownlint.yaml
16
+ - .markdownlint.yml
17
+ files:
18
+ - '**/*.{md,markdown}'
@@ -0,0 +1,13 @@
1
+ id: mdformat
2
+ name: mdformat
3
+ description: Markdown formatter with --check mode.
4
+ install:
5
+ method: pip
6
+ package: mdformat>=0.7.0
7
+ binary: mdformat
8
+ documentation_url: https://github.com/executablebooks/mdformat
9
+ config:
10
+ repo_files:
11
+ - .mdformat.toml
12
+ files:
13
+ - '**/*.{md,markdown}'
@@ -0,0 +1,10 @@
1
+ id: mutmut
2
+ name: mutmut
3
+ description: Mutation testing for Python.
4
+ install:
5
+ method: pip
6
+ package: mutmut>=3.6.0
7
+ binary: mutmut
8
+ documentation_url: https://mutmut.readthedocs.io/
9
+ files:
10
+ - '**/*.py'