You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
2.0 KiB
43 lines
2.0 KiB
# Known anti-patterns and recommended remediation (Phase 1 findings)
|
|
|
|
anti_patterns:
|
|
- id: broad_except_swallows_errors
|
|
description: "Wide except: clauses that swallow exceptions without logging or re-raising."
|
|
examples:
|
|
- path: multiple
|
|
note: "Observed in various pipeline and ingestion spots where except Exception: returns a default without context."
|
|
remediation:
|
|
- "Replace broad except with specific exceptions."
|
|
- "When broad except is absolutely needed, call logger.exception(...) and re-raise or convert to a typed domain error."
|
|
- "Add unit tests to ensure critical errors are visible in CI logs."
|
|
|
|
- id: mixed_print_and_logging
|
|
description: "Mixing print() and logging() for errors and info messages."
|
|
examples:
|
|
- path: api_client.py
|
|
excerpt: |
|
|
```python
|
|
print(f"Fetched {len(voting_records)} voting records from API")
|
|
...
|
|
except Exception as e:
|
|
print(f"Error fetching motions from API: {e}")
|
|
```
|
|
remediation:
|
|
- "Use logging.getLogger(__name__) and logger.info/warning/exception consistently."
|
|
- "Add a top-level logging configuration for Streamlit and scripts."
|
|
|
|
- id: no_lockfile
|
|
description: "No lockfile present -> unreproducible installs and CI unpredictability."
|
|
remediation:
|
|
- "Add a lockfile (poetry.lock, requirements.txt produced by pip-tools) and pin versions in CI."
|
|
- "Make CI use the lockfile for reproducible builds."
|
|
|
|
- id: declared_but_unused_dependency
|
|
description: "Dependency declared but unused (openai in pyproject)."
|
|
remediation:
|
|
- "Either remove the dependency or add clear adapter code/tests that exercise it. Keep pyproject tidy."
|
|
|
|
- id: brittle_identity_heuristics
|
|
description: "Heuristics for MP identity (comma-based parsing) are brittle."
|
|
remediation:
|
|
- "Add robust parsing rules and unit tests; prefer canonical identifiers (persoon_id) where available."
|
|
|