代码审查工作流
用 GitHub Copilot 做 review 预筛、建议修复和风险归纳,同时保留人工 reviewer 的最终责任。
Copilot code review 的正确位置是预筛风险和补充 reviewer 视角。它可以给出评论(comments)和建议改动(suggested changes),但不能替代代码 owner 对行为、安全和发布风险的判断。
GitHub 官方页面提示:从 2026-06-01 开始,Copilot code review runs 会消耗 GitHub Actions minutes。团队启用自动 review 前必须确认计费和用量边界。
1. 入口地图
GitHub 官方文档列出多个入口:GitHub.com、VS Code、JetBrains IDEs、Visual Studio、GitHub CLI、Xcode 和 Mobile。实际团队里先统一 2 个入口即可:PR 页面 review 和本地未提交变更 review。
flowchart TD
Diff["本地 diff / Pull Request"] --> Entry{"选择入口"}
Entry --> Local["IDE: review uncommitted changes"]
Entry --> PR["GitHub PR: request Copilot reviewer"]
Entry --> CLI["GitHub CLI / 其他入口"]
Local --> Comments["Copilot comments"]
PR --> Comments
CLI --> Comments
Comments --> Triage{"人工分流"}
Triage --> Apply["采纳 suggested change"]
Triage --> Fix["手动修复"]
Triage --> Dismiss["记录原因后关闭"]
Apply --> Rereview["必要时请求 re-review"]
Fix --> Rereview
style Comments fill:#dbeafe,stroke:#2563eb,stroke-width:2px
style Triage fill:#fef3c7,stroke:#d97706,stroke-width:2px
2. 什么时候请求 Copilot review
适合:
- PR 已经有明确目标、测试说明和范围。
- diff 不大,Copilot 能完整看到主要上下文。
- 想在人工 reviewer 之前预筛可读性、遗漏测试、明显 bug 和安全问题。
- 本地提交前想快速检查未提交变更。
暂时不要:
- PR 还在大规模重写,diff 每几分钟都变。
- 需求本身还没定,review 会变成产品讨论。
- 涉及高风险迁移、权限、支付、安全或数据删除,却没有人工 owner。
- 团队没有决定自动 review 的计费和噪声处理。
3. PR 页面工作流
- 创建 PR 或打开现有 PR。
- 在 Reviewers 菜单里选择 Copilot。
- 等待 Copilot 完成 review。
- 逐条阅读评论,不直接批量采纳。
- 对每条评论做分流:采纳、手动修复、关闭并说明原因。
- 推送修复后,必要时手动请求 re-review。
GitHub 官方说明,Copilot 不会因为你推送新提交就自动重新 review;需要重新请求。并且 re-review 时可能重复之前已经关闭或点踩的评论,所以团队 SOP 要保留“重复评论如何处理”的规则。
4. 本地未提交变更工作流
本地 review 适合提交前快速拦截明显问题:
- 在 Source Control 里确认 staged / unstaged 范围。
- 请求 Copilot review uncommitted changes。
- 只处理与本次提交有关的评论。
- 修复后重新跑测试,再提交。
这一步不替代 PR review。它只减少低级问题进入 PR 的概率。
5. Repository instructions
Copilot code review 可以读取仓库自定义指令。常见做法是用 .github/copilot-instructions.md 放仓库级 review 规则,用 .github/instructions/**/*.instructions.md 放路径级规则。
示例:
Review rules:
- Prioritize input validation.
- For migrations, check rollback.
- For UI, check mobile layout.注意两个边界:
- Copilot code review 只读取每个自定义指令文件前 4,000 个字符。
- PR review 时读取的是 base branch 里的指令,不是 feature branch 里刚改的指令。
6. 人工 triage 清单
每条 Copilot 评论都按下面顺序判断:
- 事实性:评论引用的代码是否存在,路径和行号是否正确?
- 可复现:能否用测试、类型检查、lint、日志或手动步骤证明?
- 风险级别:是 blocker、should-fix、nit,还是误报?
- 修复方式:用 suggested change、手动改,还是拆新 issue?
- 回归验证:修复后跑哪些检查?
深读:自动 review 的边界
自动 review 适合稳定团队和稳定仓库,不适合刚开始试点时直接全仓启用。先选一个活跃但风险可控的仓库,统计一周评论质量、误报率、reviewer 节省时间和 Actions minutes 消耗,再决定是否扩大。
本章自检
- 是否决定了 Copilot review 的入口和触发条件?
- 是否有 repository instructions 指定团队 review 重点?
- 是否知道 code review runs 的计费影响?
- 是否对每条评论做人工 triage,而不是直接接受?
- 是否在修复后重新跑测试并必要时请求 re-review?
通过标准:Copilot 评论能进入 reviewer 队列,但最终合并判断仍由人负责。
官方来源
- Using GitHub Copilot code review —— GitHub 官方 code review 使用说明。
- GitHub Copilot documentation —— GitHub 官方 Copilot 文档总入口。