程序员用 AI 做代码评审:提示词与评审意见示例
作为每天写业务代码、修线上问题、参加评审的后端或全栈开发,你可能也有同感:真正写代码的时间常被排查问题、写文档和同步进度挤占,很多重复性的文字和样板代码其实可以交给 AI 起草。代码评审耗时且容易流于形式,AI 可以先找出明显的问题,让人把精力放在设计和业务逻辑上。本文给出程序员用 AI 做代码评审的一套可直接照抄的做法:把改动的代码和背景说明交给 AI,指定评审维度和输出格式,让它按严重程度列问题,再由人判断。
场景:程序员为什么需要 AI 做代码评审
程序员每周要评审不少代码改动,比如和“完成订单服务接口重构,接口平均响应从约 300ms 降到 120ms 左右(以压测为准)”相关的提交。改动多的时候很难每行都仔细看,容易漏掉边界条件、异常处理和安全问题。尤其当技术负责人同时还在等“补齐用户模块的单元测试”的结果时,能把这部分工作提速,就能腾出精力处理更重要的判断。
推荐工具
代码托管平台和编辑器中有不少 AI 评审工具,例如 GitHub Copilot 的代码评审、GitLab Duo、Cursor 以及各类开源的 AI 评审机器人;也可以把差异内容贴给对话助手。
编辑器内的编程助手能结合项目上下文评审;独立的对话助手适合评审单个文件或片段。注意公司对源代码外发的规定。
举个例子
先看一个虚构但很典型的例子。林林是一位每天写业务代码、修线上问题、参加评审的后端或全栈开发,这周手头的事情包括“补齐用户模块的单元测试”和“排查定时任务重复执行问题”,偏偏这时又需要做代码评审。林林没有从空白页开始,而是先花几分钟把相关材料整理好,按下面的提示词交给 AI,拿到初稿后对照原始资料逐条核对,再补上自己的判断。整个过程中,林林特别留意不把密钥、内网地址、数据库连接串和用户数据放进对话里。
具体怎么做
- 准备改动说明:这次改动要解决什么问题
- 指定评审维度:正确性、边界条件、安全、性能、可读性
- 要求按严重程度分级输出,并给出修改建议
- 人工确认每条意见,AI 的意见不等于结论
提示词模板(可直接复制)
把方括号和括号里的内容换成你自己的信息即可:
【背景】最近在处理“补齐用户模块的单元测试”,同时要准备“排查定时任务重复执行问题”。
请评审下面这段代码改动。
背景:完成订单服务接口重构,接口平均响应从约 300ms 降到 120ms 左右(以压测为准),这次改动新增了一个按服务名查询“接口调用记录”的接口。
语言:Python(FastAPI)
评审维度:
1. 正确性和边界条件(空值、分页、时区)
2. 安全(注入、越权、敏感信息日志)
3. 性能(N+1 查询、缺少索引)
4. 可读性和可维护性
输出格式:严重程度(阻塞 / 建议 / 细节)| 位置 | 问题 | 修改建议
只指出确实存在的问题,不确定的请标注“需确认”。
代码:
(粘贴 diff)
AI 输出示例(示意)
下面是演示用的输出示例,其中的人名、数字和事项均为虚构,实际使用时请以你自己的资料为准:
严重程度 位置 问题 修改建议 阻塞 query_records 第 12 行 用字符串拼接构造 SQL,存在注入风险 改为参数化查询 阻塞 接口入口 未校验调用者是否有权访问该服务名的数据 增加权限校验 建议 第 20 行 每条记录单独查询关联信息,存在 N+1 问题 改为批量查询 建议 日志 打印了完整请求参数,可能包含敏感信息 脱敏后再记录 细节 第 5 行 变量名 d 含义不清 改为 record_date 需确认:page_size 未设上限,是否在网关层已限制?
拿到类似的结果后,林林的做法是先核对事实和数字,再结合“排查定时任务重复执行问题”的安排调整重点,最后才对外使用。
实用技巧与常见坑
- 提供改动背景,否则 AI 无法判断逻辑是否符合需求。
- 要求它“只指出确实存在的问题”,减少泛泛而谈的建议。
- 把团队的编码规范放进提示词,评审意见会更一致。
给程序员的特别提醒
让 AI 先解释思路再给代码,便于你判断方向对不对。还有一点很关键:AI 生成的代码必须经过本地运行、测试和代码评审,不要直接合入主干。
很多程序员还会这样做:把报错堆栈、相关代码片段和运行环境版本一起贴给 AI,比只描述现象有效得多。
变体用法
- 安全专项:只关注注入、越权、敏感数据等安全问题。
- 评审总结:汇总一段时间的评审意见,提炼团队常见问题。