AI辅助代码审查实战:如何让大模型挑出人类漏掉的Bug

📅 2026/9/26 ✍️ 小文 📖 约 1 分钟

从工具选型到提示词设计,详解用AI做代码审查的正确姿势,覆盖安全漏洞、并发问题、边界条件等高价值检查项,附实用审查prompt模板。

AI代码审查,用对了才是生产力

2026 年,“AI 帮我 review 代码”已经是标配。但我见过太多团队把它用成了”自动挑格式问题”——缩进不对、变量名不够优雅、缺个 docstring。这种低价值发现,反而让人对 AI 审查失去信心。

真正有价值的 AI 审查,应该聚焦在人类容易漏、后果严重的问题上:安全漏洞、并发竞争、边界条件、资源泄漏。

工具选型:三条路线

路线一:IDE 内联审查(Cursor / Copilot / Windsurf) 边写边提示,即时反馈。适合个人开发者,缺点是单文件视角,看不到跨模块影响。

路线二:PR 级审查(CodeRabbit / Graphite / 自建) 在 Pull Request 上自动评论,能看整个 diff 和相关上下文。适合团队协作,是当前最实用的形态。

路线三:CI 集成审查(自建脚本 + 大模型 API) 把审查做成 CI 的一步,可以完全定制检查规则。适合有安全合规要求的团队。

选择建议:个人用 IDE 内联,团队用 PR 级工具,有定制需求再自建。

为什么默认审查效果一般

默认配置下的 AI 审查有两大问题:

  1. 太啰嗦:每个小改动都写一大段评论,噪音淹没信号
  2. 避重就轻:格式、命名说得头头是道,真正的 bug 却看不见

根源在于提示词。默认 prompt 是”审查这段代码”,模型不知道你关心什么,只好把能说的都说了。

高价值审查清单

给 AI 明确的检查维度,效果天差地别。这是我常用的清单:

安全类

  • SQL 注入、命令注入、路径穿越
  • 硬编码密钥、Token 泄露
  • 不安全的反序列化
  • 权限校验缺失

并发类

  • 竞态条件、TOCTOU(检查-使用时间差)
  • 死锁、锁顺序不一致
  • 共享状态未加锁
  • 异步回调中的变量捕获问题

资源类

  • 文件/连接/锁未释放
  • 内存泄漏、无限增长的缓存
  • 数据库 N+1 查询
  • 循环内的重复 IO

边界类

  • 空值和越界
  • 整数溢出、除零
  • 时区、编码、浮点精度
  • 分页和数量限制缺失

逻辑类

  • 错误被吞掉(catch 后不处理)
  • 重试逻辑无上限或无退避
  • 交易/事务边界错误

实战 Prompt 模板

把上面清单固化进 prompt,效果立竿见影:

你是一位资深工程师,正在审查一个 Pull Request。

请只报告**会导致生产故障或安全风险**的问题,忽略命名风格、
格式、注释等低价值建议。

重点检查以下维度,按严重程度排序输出:
1. 安全漏洞(注入、越权、敏感信息泄露)
2. 并发与竞态
3. 资源泄漏
4. 边界条件(空值、越界、溢出)
5. 错误处理缺陷

对每个问题,输出:
- 严重程度:Critical / High / Medium
- 文件与行号
- 问题描述(一句话)
- 具体修复建议(附代码片段)
- 如果是误报,请说明可接受的场景

代码 diff:
{{diff}}
相关上下文:
{{context}}

关键点:明确”只报告高价值问题”和”严重程度分级”。这能砍掉 80% 的噪音。

让 AI 看到足够上下文

单看 diff 会漏掉大量问题。比如一个函数被调用时传了 null,只看这个函数本身看不出 bug。所以:

  • 把被调用的函数定义一起喂进去
  • 把数据模型/schema 一起喂
  • 说明这个模块的关键不变量(比如”这个金额单位永远是分”)

上下文给得越准,AI 的判断越靠谱。

别忘了人机分工

AI 审查不是替代人,而是把人类审查者的注意力解放出来,让他们专注架构和业务逻辑。

合理的分工:

交给 AI留给人
安全模式匹配架构设计合理性
并发/资源陷阱业务逻辑正确性
边界条件需求理解是否到位
明显的逻辑错误跨团队影响、演进方向

建立反馈闭环

AI 会误报,也会漏报。记录哪些 AI 建议被采纳、哪些是误报,定期回看,优化你的 prompt。有人用几个月时间把误报率从 60% 降到 20%,靠的就是持续调优提示词。

五个实用建议

  1. 分语言调优:Python 的陷阱和 Go、Rust 完全不同,别用一套 prompt 通吃。
  2. 控制审查频率:小 PR 即时审,大 PR 拆分后审,避免上下文超限。
  3. 设质量门禁:Critical 级别问题阻断合并,High 级别要求回应。
  4. 不信任但验证:AI 说”这里有空指针”,你自己看一遍再确认。
  5. 安全审查单独跑:安全相关的检查用专门的、更激进的 prompt,宁可多报。

结语

AI 代码审查的价值,不在于它能挑出多少问题,而在于它能让人类审查者少看多少无聊的东西,多看多少真正重要的东西。把检查清单固化进 prompt,把上下文喂足,把噪音砍掉,它就能成为团队质量的真实护栏。

📤 分享到