minikin/cargo-crap
Change Risk Anti-Patterns (CRAP) metric for Rust projects
解决的问题
cargo-crap 旨在识别“复杂且未测试”的 Rust 函数。它针对代码库中逻辑复杂(高循环复杂度)但缺乏足够测试覆盖率的风险区域,这些区域在修改时最有可能引发回归问题。
工作原理
该工具使用 syn 解析 Rust 源代码,并读取由 cargo-llvm-cov 或 cargo tarpaulin 等工具生成的 LCOV 覆盖率文件。它使用以下公式为每个函数计算 CRAP(变更风险反模式)分数:
CRAP(m) = comp(m)² × (1 − cov(m)/100)³ + comp(m)
其中 comp 为循环复杂度,cov 为行覆盖率百分比。分数越高,表示函数既复杂又测试不足。该工具可集成到 CI/CD 流水线中,当分数超过特定阈值或出现分数退化时,使构建失败。
适用人群
希望保持高代码质量和测试覆盖率的 Rust 开发者及团队,特别是处理 AI 生成代码时,这类代码可能隐藏复杂性。
特色亮点
- CI/CD 集成:支持基于阈值或回归门禁失败构建,防止质量下降。
- LCOV 兼容:与标准 Rust 覆盖率工具兼容。
- 详细报告:提供包含覆盖率百分比和未覆盖行范围的表格。
- AI 驱动的优先级排序:可选集成 TypeSafe,基于逻辑而非结构分析重复函数,判断是否应合并。
- 多种输出格式:支持人类可读表格、Markdown、PR 评论和 JSON。
相关
- 项目
- 项目
- 项目
- 项目
- 项目