代码审查只看 PR Diff 有什么不足,如何补充审查上下文?
未标记
考查重点:改动上下游与隐含约束。Diff缺少未改调用方、数据约束和运行环境;沿受影响函数读取上下游与测试,再检查接口、权限和异常路径是否仍成立
本题目录
参考答案
本答案基于相关资料,由 AI 辅助编写,供学习与面试准备参考。如有疏漏,欢迎反馈指正。
核心回答
PR Diff 只显示改了哪些行,不能完整展示这些行依赖的调用方、数据约束和运行环境。只看差异,可能漏掉未修改代码中的前置条件、下游副作用、权限检查或兼容性要求。应从需求出发,沿受影响行为补读必要上下文,再用测试或具体执行路径支持判断。
按影响链补上下文
- 入口与调用者:谁传入参数,哪些校验已经做过,是否还有其他调用方依赖旧行为。
- 被调用实现与数据:方法真实的事务、异常、缓存和外部请求语义;字段能否为空,唯一约束和状态转换如何约定。
- 接口与配置:返回结构、序列化、权限范围、功能开关、运行版本与部署配置。
- 测试与设计依据:已有测试在保护什么,新的需求为何要改,注释和设计约束是否仍成立。
例如一个方法把“查不到返回空集合”改成返回 null,差异可能只有一行,但未改的调用者直接遍历结果就会失败。只检查新方法自身的分支,无法判断整个调用链是否仍然正确。
范围怎样控制
从变更符号查引用,读取相关函数及必要的上下游,不必为了一个局部修改通读整个仓库。找不到契约时先指出缺失的信息,不根据函数名推断行为。让 AI 协助检索和归纳时,也要检查它实际读到了哪些文件;提供仓库规则和路径规范有帮助,但工具拿到更多上下文不等于判断必然正确。
有效的审查意见应说明触发条件、相关位置和结果,必要时补最小复现。对尚未证实的疑点,可以说明待确认条件,不把它直接写成确定漏洞。
对应教程
- ai-agents-from-zero:27-Skills技能与AI编程工具实践:其中代码审查Skill示例列出正确性、安全、维护与测试缺口;本文进一步解释实际变更怎样核对和验证。
参考资料
- 国内:阿里云:配置与使用代码评审 AI 助手:采用路径级评审规则,将仓库约束和文件职责加入差异审查。
- 国内:阿里云:AI 编码工具应用效果评估实践指南:采用覆盖率需结合测试有效性的评价方法,支持补读已有测试所保护的行为。
- 国内:JavaGuide:单元测试详解:借鉴测试应随业务行为维护的要求,补读未改调用者的已有测试。
- 国内:华为云:实行代码白盒检视:依据白盒检视的结构、逻辑和安全范围检查上下游。
- 国外:Google:What to look for in a code review:采用系统集成、功能与历史注释等审查维度,说明
Diff之外的契约。 - 国外:GitHub:Copilot code review:参考仓库规则和附加知识对审查的作用,同时保留结果验证。
相关面经
1 篇腾讯
后端开发工程师二面
那你这个在Review的时候,仅去参考PR Diff的内容是有效的Review吗?你怎么优化?
