minikin/cargo-crap
Change Risk Anti-Patterns (CRAP) metric for Rust projects
解決的問題
它透過尋找既複雜又缺乏測試的函數,來識別 Rust 專案中的「劣質」程式碼。這有助於開發者找到最可能隱藏 Bug 的地方,特別是在複雜度可能很高但測試覆蓋率不足的 AI 生成程式碼中。
工作原理
該工具計算 CRAP (Change Risk Anti-Patterns) 指標,該指標將圈複雜度 (CC) 與測試覆蓋率合併為單一分數。
- 低分(例如 1.0)表示一個簡單且完全覆蓋的函數。
- 高分表示一個複雜且缺乏覆蓋率的函數。
- 如果一個函數的覆蓋率為 100%,則 CRAP 分數等於其圈複雜度。
- 具有極高複雜度(CC > 30)的函數無論其測試覆蓋率如何,都會被標記。
適用對象
希望在 CI/CD 流水線中整合自動化程式碼品質門禁,以防止複雜且未經測試的程式碼進入生產程式碼庫的 Rust 開發者與團隊。
亮點
- CI 整合:支援
--fail-above,如果任何函數超過特定閾值,則以錯誤狀態退出。 - 基準對比:可以將目前結果與 JSON 基準進行比較,以檢測程式碼品質的退化。
- 多種輸出格式:支援人類可讀的表格、JSON、GitHub annotations、Markdown、SARIF 以及 Shields.io 徽章。
- 工作區支援:能夠分析整個 Cargo 工作區 (monorepos)。