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 指示牌。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目