minikin/cargo-crap
Change Risk Anti-Patterns (CRAP) metric for Rust projects
해결하는 문제
이 도구는 복잡도가 높으면서 테스트가 제대로 이루어지지 않은 함수를 찾아 Rust 프로젝트 내의 "품질이 낮은" 코드를 식별합니다. 이는 특히 복잡도는 높지만 테스트 커버리지가 부족할 수 있는 AI 생성 코드에서 버그가 숨어있을 가능성이 가장 높은 위치를 개발자가 찾는 데 도움을 줍니다.
작동 방식
이 도구는 순환 복잡도(CC)와 테스트 커버리지를 하나의 점수로 결합한 CRAP (Change Risk Anti-Patterns) 지표를 계산합니다.
- 낮은 점수(예: 1.0)는 단순하고 테스트가 완벽하게 완료된 함수를 나타냅니다.
- 높은 점수는 함수가 복잡하고 커버리지가 부족함을 나타냅니다.
- 함수가 100% 커버리지를 가지는 경우, CRAP 점수는 순환 복잡도와 동일합니다.
- 매우 높은 복잡도(CC > 30)를 가진 함수는 테스트 커버리지와 관계없이 플래그가 지정됩니다.
대상
복잡하고 테스트되지 않은 코드가 프로덕션 코드베이스에 유입되는 것을 방지하기 위해 CI/CD 파이프라인에 자동화된 코드 품질 게이트를 통합하고자 하는 Rust 개발자 및 팀.
주요 특징
- CI 통합:
--fail-above를 지원하여 함수가 특정 임계값을 초과하면 에러와 함께 종료됩니다. - 베이스라인 비교: 현재 결과를 JSON 베이스라인과 비교하여 코드 품질의 퇴행을 감지할 수 있습니다.
- 다양한 출력 형식: 사람이 읽기 쉬운 테이블, JSON, GitHub annotations, Markdown, SARIF 및 Shields.io 배지를 지원합니다.
- 워크스페이스 지원: 전체 Cargo 워크스페이스(모노레포)를 분석할 수 있습니다.