用途:解释 .NET 覆盖率证据能证明什么,核算达标所需增量,并指出阻碍进度的方法。用于解读已提供的行/分支/条件覆盖率、覆盖率缺口与停滞,以及显式要求的项目级覆盖率风险分析。
主要能力:
- 依据 Cobertura 的 covered/valid 行数推导总体覆盖率;目标 T 所需覆盖行数为 ceiling(valid lines × T)。
- 区分“行被执行”与“两个判定结果都执行”;condition-coverage="50% (1/2)" 只证明一个结果运行,不指明是哪个。
- 核对成员缺口与项目总数,方法行范围可能重叠或遗漏类级行,不可简单相加当作项目真相。
- 仅在明确要求风险热点/CRAP/重构安全时,按复杂度与覆盖率计算 CRAP 排序,默认取前 3 个,除用户要求外不超过 10 行。
使用方式:
- 已有覆盖率摘要或有效 Cobertura 路径时直接分析,不重跑测试、不安装工具、不生成报告文件。
- 无可用证据且确需分析时,读取 references/setup-discovery.md,优先使用已发现的 Cobertura;否则调用 run-tests 收集,再分析生成报告。自动收集仅适用于 SDK 风格项目;经典非 SDK 或 packages.config 项目须使用仓库自带的覆盖率命令,没有则停止并要求提供 Cobertura XML。
- 完整报告按需读取 references/output-format.md;HTML/CSV 再读 references/report-generation.md。
可选输入及默认值:项目/解决方案路径(当前目录)、行覆盖率阈值(80%)、分支覆盖率阈值(70%)、已有 Cobertura 路径、CRAP 阈值(30)、热点数量(3)。
限制:不编写或生成测试;命名方法/类的 CRAP 用 crap-score 技能;静态源与测试配对用 find-untested-sources;行为/伪变异缺口用 test-gap-analysis;仅收集覆盖率或只打印原始百分比用 run-tests,非 .NET 覆盖率由原生工具处理。不修改生产代码;不宣称不存在的产物路径。解释与核算问题时首句直接回答,最多用一个紧凑表格,避免输出大段仪表盘。测试退出码为 1 时覆盖率可能仍存在,可带警告继续;其他非零构建失败则停止收集。