Skip to content

覆盖率棘轮 ​

覆盖率阈值是防止回退的下限,而不是质量目标。只有在实测结果留出了足以容纳 V8 覆盖率正常波动的余量,并且新增测试验证的是有意义的行为而非实现细节时,才提高阈值。

阈值定义在 vitest.coverage.config.ts 中。重新生成快照:

bash
pnpm test:coverage

当前快照 ​

2026-09-29 使用 pnpm test:coverage 测得。

范围StatementsBranchesFunctionsLines
全部文件87.2678.5790.9991.27
Browser 包84.5173.8787.1489.28
Browser HTTP transport96.9093.8395.4599.55
Core 包87.4280.1090.3490.68
OTLP 包95.7985.06100.0098.68
Pretty 包90.6484.9190.0094.02

薄弱环节 ​

范围实测差距下一步
OTLP 包包级覆盖率满足 transport 失败路径契约,但 log-bridge.ts(分支 74%)和 trace.ts(分支 78%)仍有未测试的回退分支。保持包级下限,在这些分支变动时补充针对性测试。
Pretty 包包级覆盖率接近仓库平均水平。console-transport.ts 的分支覆盖率(67%)是包内最低的文件。包级下限贴近实测值;在覆盖 console 自动样式分支之前,不提高文件级下限。
Browser 包indexeddb-transport.ts(分支 64%)拉低了包的平均值。包级下限保持保守,保留 http-transport.ts 的文件级下限,逐步提高 IndexedDB 边界情况的覆盖率。

棘轮规则 ​

  • 全局阈值至少比实测总值低两个百分点,除非有意收窄差距并在本页记录原因。
  • 对已经有成熟覆盖率的高风险文件,优先设置文件级阈值,例如浏览器 HTTP 投递和 OTLP JSON 映射。
  • 不要因为其他文件拉高了平均值,就提高仍有高风险分支未覆盖的包的阈值。
  • 仅为覆盖率而写的测试也必须断言外部可观察的行为:错误、重试、过滤、导入边界、导出的文件名、生命周期清理或捕获的 payload 结构。
  • 降低阈值必须在同一次变更中经过明确的质量评审。

当前下限 ​

范围下限(statements / branches / functions / lines)说明
全局86 / 76 / 90 / 90下一次提高分支阈值应来自 browser 或 Node 的边界测试,而不是靠 Pretty 拉高。
OTLP94 / 80 / 100 / 98在补充 transport 失败路径测试后设定。
Pretty88 / 82 / 88 / 92在补充 formatter、console 回退和 stream 生命周期测试后设定。
Browser84 / 73 / 86 / 89http-transport.ts 另有文件级下限 95 / 91 / 92 / 99。

相关链接 ​

基于 MIT License 发布。