GitHub Code Coverage merge protection:先定義上線契約,再選百分比

Dev
GitHub 可把 coverage 與 code quality threshold 作為 PR 合併保護。設定 80% 前,應先定義 baseline、diff coverage、例外與 rollout。
好的 coverage gate 不是神奇數字,而是讓高風險變更可以被解釋的營運契約。

發生了什麼

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.

來源