浏览 AI使用教程

怎样让 AI 做代码审查:先找 Bug、回归和缺测试

让 AI 做代码审查时,先要求它找会改变行为的 Bug、回归风险和缺失测试。命名与格式可以最后看,不能让它们淹没权限或数据问题。

按实际操作顺序推进

每完成一段就检查当前输出,确认结果符合预期后再继续。

  1. 01准备发现必须有触发依据
  2. 02执行让 AI 做代码审查时,先找 Bug、回归和缺测试
  3. 03检查为什么“发现很多潜在问题,作者无法判断优先级”还不能交付
  4. 04完成按严重度排序的审查清单通过哪些检查才算完成
从手头这一份材料开始

审查列了十条风格建议,却漏掉退款接口的权限漏洞

代码审查结果列了变量命名、空行和注释风格,却没发现退款接口缺少权限校验。漂亮的建议不等于有效审查。

  • 发现指向具体文件与行为
  • 严重度与影响相称
  • 缺失测试和回归风险已覆盖
本例材料

动手前,把材料和不能改的部分定下来

需要确认本例内容
现有材料PR 修改退款路由、服务和测试;需求要求仅财务角色可退款,且重复请求不能重复退款。
不能越过的边界先找正确性、安全、回归和缺测试;每条发现给文件位置、触发条件和影响;不把纯偏好当 Bug。
要交付的结果按严重度排序的审查清单
实际操作

AI 代码审查提示词,从“理解变更意图”开始做

理解变更意图

读取 issue、PR 说明、规则和 diff,确认旧行为、目标行为和范围外,不从单个文件猜全局。

沿关键路径检查

追输入、权限、状态、错误、数据写入和外部副作用,关注边界和失败路径。

验证兼容与迁移

检查接口、配置、数据库、缓存、客户端和回滚是否同步,寻找单点改动引发的不一致。

检查测试是否有效

测试应能在旧错误下失败,覆盖高风险分支;只增加覆盖率但无断言不算。

按严重度写发现

先给位置和结论,再给触发、影响与修复方向;不确定项标问题,不宣称已证实。

发现必须有触发依据

api/refund.mjs 教学diff

给定authenticate只保证已登录

+ app.post('/refunds', authenticate, async (req,res) => {
+   const result = await refundService.create(req.body.orderId);
+   res.json(result);
+ });

已知:authenticate允许所有已登录角色;create不接收调用者。
需求:仅finance角色可退款。
触发:role=member提交一项可见订单ID。
预期:拒绝且create调用次数为0。
当前片段:会继续调用create;仅在隔离测试中验证,不操作真实订单。

确定缺陷与开放问题分开

级别证据影响下一步
P1authenticate后直接create,无finance校验member可调用退款补finance允许、member拒绝且零副作用断言
待确认路由没有幂等参数尚不能确定服务内部是否去重追数据库约束与供应商幂等记录
测试缺口需读取真实测试文件只测成功可能漏权限确认后才列缺测发现
AI 介入点

让 AI 做代码审查时,先找 Bug、回归和缺测试

适合提供真实diff和上下文文件后使用,不让AI只评价命名和格式。

可复制使用

让 AI 做代码审查时,先找 Bug、回归和缺测试

请只审查我这次提供的代码 diff,优先找会导致错误行为、数据损坏、安全边界破坏或兼容回归的问题。

任务目标/不允许改变的行为【】;完整 diff【】;必要调用方与相关测试【】;已运行命令及原始输出【】。

每个发现都要给严重度、文件和行、具体触发条件、实际影响及最小修复方向。没有可复现证据的担忧放入“待核查”,不要包装成缺陷。最后单列漏测风险。不要评论纯风格偏好,不扩展到 diff 之外的重构。

使用范围:适合提供真实diff和上下文文件后使用,不让AI只评价命名和格式。不要把个人风格偏好写成Bug,不扩大到无关重构。

最终输出

完成后的按严重度排序的审查清单

给定条件支持确认非财务登录用户仍会调用退款服务。片段未出现幂等键只能列待确认,追服务与存储后才能断言未实现;不能因路由片段没有代码而推断整个系统。

常见失败

为什么“发现很多潜在问题,作者无法判断优先级”还不能交付

发现很多潜在问题,作者无法判断优先级

原因
没有区分可触发缺陷与猜测
怎么改
按严重度、发生条件和证据排序,无法证实的内容写成问题而非结论
验收方式

按严重度排序的审查清单通过哪些检查才算完成

进一步核对

Git 与协作:参考资料与核对入口