GitHub Code Coverage merge protection:先定義上線契約,再選百分比
發生了什麼
GitHub 在 2026 年 6 月 30 日宣布,GitHub Code Coverage 可用於 pull request merge protection。當 PR 未達 coverage 或 code quality threshold 時,可以阻止合併。
為什麼重要
重要變化是 coverage 訊號進入 review、ruleset 與 branch protection,而不是只留在外部 dashboard。
社群訊號
開發者社群長期爭論 coverage threshold:高覆蓋率不代表高品質,但放任覆蓋率下降會累積測試債務。
營運影響
實務上應分開看 total coverage 和 diff coverage。前者描述長期健康度,後者看本次 PR 是否新增未測試程式碼。
檢查清單
建議先 soft fail,保存 main branch baseline,明確排除 generated code 與 migrations,並指定誰可批准 coverage 下降。
風險
風險是假安全感與變慢的 CI。coverage gate 只能補足好的 assertions、integration tests 與人工 review,不能取代它們。
Rollout checklist
• Start with a baseline, not an ideal target.
• Separate total coverage from diff coverage.
• Document exclusions and exception approvers.
• Use soft fail before hard enforcement.
來源
- GitHub Changelog: GitHub Code Coverage merge protection for pull requests
- GitHub Docs: Setting pull request thresholds for code quality and coverage
- GitHub Docs: Setting up code coverage for your repository
- GitHub Docs: About GitHub Code Quality
- GitHub Docs: About status checks
- GitHub Docs: About protected branches
- GitHub Docs: Interpreting code quality results