Skip to content
返回质量保障

审查指标

追踪审查周期时间、评论质量和缺陷逃逸率以改进审查过程本身。

为什么

代码审查是过程,如任何过程可测和改进——但大多团队不测,故不知审查变快还是慢、反馈是否有用、bug 是否逃审查到生产。关键指标: 审查周期时间(PR 开到合并多久——若 3 天团队阻)、缺陷逃逸率(多少 bug 过审查到生产——若高审查不抓 bug)和评论质量(评论可行动还是仅"看起来好"——若模糊审查不教)。测这些非评审查者;是找瓶颈(审查是瓶颈还是上游?)和改进过程(需更小 PR?更多审查者?更好工具?)。无指标审查改进是猜;有指标是定向。

何时使用

持续追踪、每月审查、对趋势行动——追踪但不行动的指标浪费。

如何做

1. 追审查周期时间
   - PR 开到合并时间(总周期时间)
   - PR 开到首审查时间(响应时间)
   - 首审查到合并时间(迭代时间)
   - 目标: 小 PR < 24 小时、大 < 48

2. 追缺陷逃逸率
   - 数到生产的 bug(用户报告或监控)
   - 其中多少在过审查的代码中?
   - 缺陷逃逸率 = 审查过 bug / 总 bug
   - 目标: < 10%(90% bug 生产前抓)

3. 追评论质量(抽样、不自动化)
   - 每月抽 10 审查评论
   - 具体吗(引行、名问题)?
   - 可行动吗(提修复或方向)?
   - 友善吗(关于代码非人)?
   - 目标: > 80% 抽样评论满足三

4. 追审查参与
   - 一审查者做 80% 审查吗?(巴士因子风险)
   - 一些开发者从不审查吗?(知识筒仓)
   - 目标: 审查分布团队

5. 对趋势行动
   - 周期时间长?→ PR 太大或审查者慢
   - 缺陷逃逸高?→ 审查肤浅或清单不全
   - 评论低质量?→ 培训团队审查礼仪
   - 参与偏?→ 轮审查者或初级配资深

示例

// 用 GitHub Action 追审查周期时间
// .github/workflows/review-metrics.yml
name: 审查指标
on:
  pull_request:
    types: [closed]
jobs:
  track:
    if: github.event.pull_request.merged
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo '{ "pr": ${{ github.event.pull_request.number }},
            "cycle_hours": ${{ (github.event.pull_request.merged_at - github.event.pull_request.created_at) / 3600 }},
            "author": "${{ github.event.pull_request.user.login }}",
            "lines": ${{ github.event.pull_request.additions + github.event.pull_request.deletions }}
          }' >> metrics.json
          curl -X POST https://metrics.example.com/api/review -d @metrics.json

// 仪表盘: 审查周期时间随时间
// 第 1 周: 均 18 小时、中位 8、p90 72
// 第 2 周: 均 24 小时、中位 12、p90 96 ← 趋势上、调查
// 第 3 周: 均 16 小时、中位 6、p90 48 ← 干预后

// 缺陷逃逸率(从生产事件)
// Q1: 生产 30 bug、24 过审查 → 80% 逃逸率(坏!)
// 行动: 加审查清单、培训团队
// Q2: 生产 20 bug、8 过审查 → 40% 逃逸率(改善中)
// Q3: 生产 15 bug、3 过审查 → 20% 逃逸率(目标: <10%)

// 评论质量抽样(每月)
// 1 月抽 10 评论:
// - 7 具体、可行动、友善(好)
// - 2 模糊("这坏")(需培训)
// - 1 不友善("你总这样")(需辅导)
// 分: 70%——低于 80% 目标、安排审查礼仪会

// 审查参与(每季)
// Q1: alice 40%、bob 30%、carol 20%、dave 5%、eve 5%
// 行动: dave 和 eve 不审查——轮审查轮换、
// 与 alice 和 bob 结对建技能
// Q2: alice 25%、bob 25%、carol 20%、dave 15%、eve 15% ← 更分布

常见问题

  • ⚠追周期时间但不行动——仪表盘显周期时间从 1 天升到 3 天但无人调查、团队速度降无干预。
  • ⚠用指标评个人审查者——缺陷逃逸率最高的审查者被罚、停审查、团队失审查者指标变武器。
  • ⚠仅追周期时间漏质量——周期时间 4 小时(好!)、但审查是橡皮图章、缺陷逃逸率 60%、速度隐质量问题。
  • ⚠手动电子表格收指标——数据陈旧、趋势不可见、团队花更多时间收非行动。

最佳实践

  • ✓追审查周期时间、缺陷逃逸率和评论质量并对趋势行动——无行动的指标浪费、目标是改进非测量。
  • ✓用指标改进过程非评个人——高缺陷逃逸率意味过程坏(缺清单、PR 太大)非审查者坏。
  • ✓速度(周期时间)和质量(缺陷逃逸、评论质量)都追——快橡皮图章审查非好审查、指标须平衡两者。
  • ✓自动化数据收(GitHub Actions、指标仪表盘)使团队花时间对趋势行动非收数据——电子表格陈旧数据被忽略。