SuperAPI AI 工具集

crap-analysis

通用与其它

查看项目

更新于 10-16 02:28

技能介绍

CRAP 分数通过圈复杂度与测试覆盖率结合衡量代码风险,公式为 CRAP = Complexity x (1 - Coverage)^2。分数低于 5 属低风险,5 至 30 为中等,高于 30 为高风险,需要补测试或重构。

主要用途:在改动前评估代码质量与覆盖率;识别需要重构或补测的高风险代码;按风险优先级安排测试;为 CI/CD 设置覆盖率门槛。

使用方式:在仓库根目录创建 coverage.runsettings,格式必须包含 opencover 以携带圈复杂度指标;通过 dotnet tool restore 安装 ReportGenerator(本地工具或全局),再用 dotnet test --settings coverage.runsettings --collect:"XPlat Code Coverage" --results-directory ./TestResults 收集覆盖率,最后执行 dotnet reportgenerator -reports:"TestResults/**/coverage.opencover.xml" -targetdir:"coverage" -reporttypes:"Html;TextSummary;MarkdownSummaryGithub" 生成报告。报告中的 Risk Hotspots 区域按复杂度排序列出方法,并给出圈复杂度、NPath 复杂度与 CRAP 分数。

配置要点:可在 runsettings 中排除测试、基准、迁移程序集及生成代码等;推荐线覆盖率大于 80%、分支覆盖率大于 60%、CRAP 低于 30。可集成 GitHub Actions 或 Azure Pipelines,将摘要输出为 GitHub 兼容 Markdown 或 Cobertura 格式。

限制:资料主要面向 .NET 项目,依赖 OpenCover 格式提供圈复杂度;文档中给出的阈值为建议标准,实际采用需结合项目情况。资料未提供其他语言或非 .NET 环境的支持说明。