概念定义
覆盖率把测试纪律变成可强制的数字。门禁说的是:你改动的代码必须被执行。当棘轮用则复利,当分数用则腐化。
工作机制
插桩跟踪每次测试执行的行;diff 覆盖率把执行图与补丁求交——门禁问的是“这个 PR 是否新增了未测行为”。趋势模式对任何相对主干的下降判负,容忍不完美的历史但保证不再退步。
使用场景
应用按变更行设门禁,库按公共 API 面设门禁。门禁要配评审指引:数字标记遗漏,人判断测试有没有说出东西。
常见误区
覆盖率只度量执行到达,不度量断言强度——那需要变异测试或评审。全局 80% 门禁换来的是一万条零断言的执行测试。排除目录要讲卫生,否则生成代码与 vendored 树淹没信号;对生成代码的覆盖率波动阻断 PR 纯烧好感。行覆盖对“没有任何测试走过的分支”沉默——分支覆盖收窄但关不掉这个缺口。