AI 辅助 Code Review:一年实战后的真实反馈
目录
背景
我们团队从 2024 年中开始系统性地用 AI 做 Code Review。
具体方案:每个 PR 提交后,AI Review Bot 自动分析代码变更,评论在 PR 里。人工 reviewer 只看 AI 的意见。
一年下来,有了足够的数据。
AI 能发现的问题
1. 安全漏洞(效果极好)
AI 在发现安全问题上出人意料地强。
# AI 发现的问题:SQL Injection
def get_user(request, user_id):
query = f"SELECT * FROM users WHERE id = {user_id}"
# AI 评论:⚠️ 直接拼接用户输入到 SQL,SQL injection 风险
# 建议用参数化查询AI 能发现:SQL injection、XSS、敏感信息泄露、硬编码凭证。这些问题人工 review 容易漏,但 AI 扫描很稳定。
2. 明显的逻辑错误
# AI 发现:边界条件漏了
def calculate_discount(price, discount_percent):
if discount_percent > 100:
return 0 # 这个判断有了
# 但漏了 price < 0 的情况
return price * (1 - discount_percent / 100)
# AI 评论:⚠️ price 可能为负数,没有处理3. 代码重复和坏味道
# AI 发现:这段代码和上面的 process_order 几乎一样
# 建议提取公共函数
def ship_order(order_id):
# 97% 和 process_order 的代码重复
passAI 完全 miss 掉的问题
1. 业务逻辑错误
这是最大的盲区。
AI 不知道你公司的业务规则。它只能检查代码"逻辑上对不对",不能检查"是否符合业务需求"。
# AI 没发现问题(但实际是 bug)
def apply_coupon(order_total, coupon):
if coupon.type == "percentage":
return order_total * (1 - coupon.value / 100)
# 没问题...
return order_total
# 但业务规则是:coupon 不能超过 order_total 的 50%
# AI 不知道这个业务规则,所以没有发现2. 性能问题(大多数情况)
AI 能发现明显的 N+1,但复杂的性能问题往往检测不到。
# AI 没有标记性能问题(但实际有)
def get_user_orders(user_id):
orders = db.query("SELECT * FROM orders WHERE user_id = ?", user_id)
for order in orders:
# 每个 order 都单独查 user
user = db.query("SELECT * FROM users WHERE id = ?", order.user_id)
order.user = user
return orders
# AI 没发现这是 N+1(queries = 1 + N)3. 边界条件和错误处理(复杂场景)
简单的 null check AI 能发现,但复杂的错误处理逻辑 AI 经常 miss。
一年数据
我们统计了 AI Review Bot 发现的问题和人工确认有效率:
| 问题类型 | AI 发现率 | 人工确认有效率 |
|---|---|---|
| 安全漏洞 | 95% | 92% |
| SQL/N+1 | 88% | 85% |
| 空指针/边界 | 75% | 70% |
| 业务逻辑 | 12% | 40% |
| 性能问题 | 45% | 50% |
| 代码重复 | 80% | 78% |
结论:AI 在安全和基础代码质量上很强,业务逻辑和复杂性能问题上很弱。
实际工作流
PR 提交后:
1. AI Review Bot 自动分析 diff
2. 在 PR 里评论(分 priority)
- 🔴 P1: 安全漏洞(block PR)
- 🟡 P2: 逻辑/边界问题(建议修)
- 🟢 P3: 代码风格(可选)
3. 人工 reviewer 只看 P1 和 P2
4. P3 建议开发者自己决定工具选择
| 工具 | 集成方式 | 特点 |
|---|---|---|
| GitHub Copilot Review | GitHub Actions | 官方集成,但功能有限 |
| Cursor Reviews | PR 评论 | 可在 IDE 里直接看 |
| Meta AI Reviewer | 自建 | 可以定制规则,最灵活 |
| SonarQube AI | CI/CD | 老牌扫描 + AI 增强 |
我们最后用的是自建方案,接 Claude Sonnet,自己写规则过滤误报。
结论
AI Code Review 的价值:把人工 reviewer 从 80% 的 trivial 问题里解放出来。
让 human reviewer 专注于业务逻辑和架构决策,AI 负责安全扫描和基础代码质量。
不是 AI 取代 human reviewer,是 AI 让 human reviewer 更有价值。