首页/开发/代码质量与评审速查/什么时候用请求修改(Request changes)
代码评审64 条

什么时候用请求修改(Request changes)

请求修改适用于必须修复后才能合入的问题:正确性缺陷、安全风险、兼容性破坏、测试缺失;小建议与风格问题用普通评论即可。

什么时候用请求修改

请求修改是评审里最重的动作:它会阻止合并,直到问题被解决并复核。适用的情形是有明确缺陷且必须修完才能合入——正确性错误、数据风险、安全漏洞、接口破坏、关键测试缺失。命名偏好、格式、可读性小建议不属于这一类,用普通评论或 nit 标注即可。

基本信息

适用平台GitHub 的 Request changes、GitLab MR 的请求修改
作用默认阻止合并,直到问题解决并收到复核
使用前提问题必须修完才能合入,而不是「我更希望这样」
解除方式作者修复并逐条回复后,评审者复核并重新批准

什么时候用

  • 逻辑错误、计算错误或明显的边界遗漏:合入后会产生错误结果。
  • 数据风险:迁移不可逆、可能丢数据、并发下会写坏状态。
  • 安全漏洞:越权、注入、敏感信息落进日志或响应。
  • 接口破坏:调用方会直接失败或行为静默改变。
  • 关键测试缺失:改动改变了行为却没有能失败的测试保护。

什么时候不用

  • 命名与格式偏好:用 nit 标注,说明不阻塞合并。
  • 可读性小建议:给出方向让作者判断,不强制立刻改。
  • 方案层分歧:先讨论方向,用请求修改表达偏好会卡住流程。
  • 可以后续跟进的重构:记为后续任务,避免改动越滚越大。

意见分层与处理

层级处理方式
阻塞项逐条列出,说明后果与验收标准
建议项标注为非阻塞,允许作者判断
后续项写进任务或描述,不在本次范围
待确认项先提问澄清,确认后再定性

请求修改的写法

请求修改的写法
# 差:只给结论
这里有问题,改一下。

# 好:问题 + 后果 + 验收标准
并发场景下这段读改写没有加锁,两个请求同时到达可能丢失一次更新。
建议用单条原子更新语句,或把读取与写入放进同一个事务;
修复后请补一个并发用例。
把意见分层(阻塞与非阻塞)能显著减少来回次数:作者知道先改什么,也知道哪些可以商量。
发出请求修改后要记得回来复核:作者已修复而评审者未重新批准,改动会一直卡在队列里。

易错点

  • 用请求修改表达「我不太喜欢这个方案」:方案级分歧应另行讨论,否则改动被无谓卡住。
  • 多人重复提相同意见:先读已有评论再补充,避免作者重复劳动。
  • 只给结论不给验收标准:作者不知道该改到什么程度才算解决。
  • 发出后忘记复核:改动长期挂在评审状态,团队以为还在等作者。
  • 把所有意见都升级为阻塞:真正必须改的问题被埋在一堆小意见里。

数据来源与参考

  • Google Engineering Practices · The Standard of Code Review
  • GitHub Docs · Request changes 语义
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌