fix: honor repo bandit config in badge quality check
CI / validate (pull_request) Failing after 1m16s
CI / auto-merge (pull_request) Skipped

This commit is contained in:
Emil Simeonov
2026-09-21 20:44:14 +02:00
parent 3b2a278f87
commit 1a42216b02
3 changed files with 65 additions and 1 deletions
+40
View File
@@ -0,0 +1,40 @@
# DEVX-175: Badge generation must honor repo bandit configuration
## Problem
`collect_quality()` in `generate_badges.py` runs `bandit -r src/` with no
config file. Repos that declare a `[tool.bandit]` section in
`pyproject.toml` (skip lists aligned with infrastructure patterns — for
example sso-bridge skips B404/B603/B501) lint clean via `make lint-all`, but the
quality badge still reports `bandit: FAIL` — a false-FAIL badge that
contradicts the actual lint gate.
## Approach
REQ-1: When `pyproject.toml` exists in the target repo and contains a
`[tool.bandit]` section, pass `-c pyproject.toml` to the bandit invocation
in `collect_quality()`.
REQ-2: Repos without `[tool.bandit]` keep the current invocation unchanged.
## Test Plan
- Unit test: repo fixture with `[tool.bandit]` → command includes
`-c pyproject.toml`; without the section → plain invocation.
- Manual: `python -m devx.tools.generate_badges` in sso-bridge reports
`bandit: pass`.
## Deploy Plan
devx release → repos pick it up on next devx pin bump; no infra changes.
## Rollback Plan
Revert the commit; badges revert to unconfigured bandit runs.
## Acceptance Criteria
- [x] REQ-1 implemented with `# Implements: REQ-1` comment
- [x] REQ-2 preserved (no config → unchanged command)
- [x] Unit tests cover both branches
- [x] `make lint-all` + `make pytest-cov` pass in devx