minikin/cargo-crap
Change Risk Anti-Patterns (CRAP) metric for Rust projects
解決的問題
cargo-crap 是一個為 Rust 開發者設計的工具,用於識別「高風險」的程式碼。它專注於那些既高度複雜(難以閱讀和維護)又測試不足(覆蓋率低)的函數,這些地方最有可能藏有錯誤。
工作原理
該工具計算 CRAP(變更風險反模式)指標。這是一個將循環複雜度(CC)與測試覆蓋率結合成單一分數的公式。
- 低分數: 簡單且完全測試的函數得分為 1.0。
- 高分數: 隨著複雜度增加且覆蓋率下降,分數上升。
- 硬性限制: 如果函數的複雜度過高(約超過 30),即使測試覆蓋率很高,也會被標記為高風險。
它可與 cargo-llvm-cov 等覆蓋率工具整合,讀取 LCOV 報告,並可於 CI/CD 管道中使用,當程式碼風險超過某個門檻值時使建置失敗。
適用對象
希望維持高程式碼品質並確保複雜邏輯不會被忽略測試的 Rust 開發者與團隊。
主要特色
- CI 整合: 可使用
--fail-above或--fail-regression來封鎖建置,防止風險增加。 - 基線比較: 支援將目前結果與先前的 JSON 基線進行比較,以追蹤改善或退步。
- 重複函數檢測: 可根據結構相似性識別可能的重複函數候選者。
- 多種輸出格式: 支援人類可讀的表格、JSON、GitHub 標註、SARIF 和 Shields.io 標籤。
相關
- 專案
- 專案
- 專案
- 專案
- 專案