SuperAPI AI 工具集

crap-score

智能体与模型

查看项目

更新于 10-16 00:04

技能介绍

用途:计算 .NET 方法、类或文件的 CRAP 分数,将圈复杂度与覆盖率合成单一风险指标,用于判断哪些代码因复杂且测试不足而存在变更风险,帮助安排测试与重构优先级。

主要能力:CRAP 公式为 complexity²×(1−coverage)³+complexity。按风险分级:<5 低、5–15 中、15–30 高、>30 严重。需要先收集 Cobertura 覆盖率报告,再从报告或代码指标中获取每个方法的圈复杂度,然后逐方法计算并按分数降序展示,输出复杂度、覆盖率、CRAP 与风险等级,并给出高 CRAP 方法的补测或抽取方法等建议。还可计算把某方法降到 CRAP 15 以下所需的覆盖率,但当复杂度本身≥15 时,仅靠测试无法达标,必须先降低复杂度。

使用方式:输入方法名、类名或文件路径;可选测试项目路径与源项目路径。先用仓库兼容命令生成 Cobertura XML,例如 coverlet.collector 配合 VSTest:dotnet test <test.csproj> --collect:"XPlat Code Coverage" --results-directory <results-dir>;或用 Microsoft.Testing.Extensions.CodeCoverage 的 .NET 9 桥接 MTP:dotnet test <test.csproj> -- --coverage --coverage-output-format cobertura --coverage-output <output-path>;.NET 10+ 原生 MTP:dotnet test --project <test.csproj> --coverage --coverage-output-format cobertura --coverage-output <output-path>。之后解析 Cobertura XML 中的方法行覆盖率,必要时按行范围匹配异步或 lambda 方法名。

限制:CRAP 必须依赖真实覆盖率数据,禁止估算覆盖率;空报告或缺少目标方法不等于 0% 覆盖率,应重新生成或停止并报告阻塞。不得在未获授权时安装覆盖率包、修改项目清单或全局工具;传统非 SDK 项目需仓库自带可产出 Cobertura 的命令。复杂度优先使用机器产出指标,否则手工计数并标注;当 line-rate 与命中行比例差异超过正常四舍五入(约一个百分点)时,应视为报告自相矛盾并停止计算。自动生成代码默认排除。若用户仅需覆盖率百分比、编写新测试或全项目分析,应改用相应技能。