minikin/cargo-crap
Change Risk Anti-Patterns (CRAP) metric for Rust projects
它解决了什么问题
cargo-crap 是一个为 Rust 开发者设计的工具,用于识别「高风险」代码。它针对那些既高度复杂(难以阅读和维护)又测试不足(覆盖率低)的函数,这些地方最有可能隐藏着 bug。
它如何工作
该工具计算 CRAP(变更风险反模式)指标。这是一个将圈复杂度(CC)和测试覆盖率结合成单一评分的公式。
- 低分: 一个简单且完全测试的函数得分为 1.0。
- 高分: 随着复杂度增加和覆盖率降低,评分上升。
- 硬性限制: 如果函数的复杂度过高(大约高于 30),则无论测试覆盖率如何,都会被标记为高风险。
它可与 cargo-llvm-cov 等覆盖率工具集成,以读取 LCOV 报告,并可用于 CI/CD 流水线中,当代码风险超过某个阈值时使构建失败。
适用人群
希望保持高代码质量并确保复杂逻辑不会被遗漏测试的 Rust 开发者和团队。
主要特性
- CI 集成: 可使用
--fail-above或--fail-regression来阻止风险上升,从而控制构建。 - 基线对比: 支持将当前结果与之前的 JSON 基线进行比较,以追踪改进或退化情况。
- 重复函数检测: 可基于结构相似性识别候选重复函数。
- 多种输出格式: 支持人类可读的表格、JSON、GitHub 注释、SARIF 和 Shields.io 指示牌。
相关
- 项目
- 项目
- 项目
- 项目
- 项目