用 AI 做 Code Review 的一个月

上个月我们团队试了用 AI 辅助 Code Review,记录一下效果。

背景

团队 8 个人,每天大概 20 个 MR。以前靠人工 Review,响应慢、质量参差不齐。有时候忙起来就草草过了。

试了几个工具:

工具价格特点
GitHub Copilot$19/月深度集成 GitHub
CodeRabbit$12/月独立服务,支持多平台
自建 (GPT-4 API)按量付费灵活,需要开发

最后选了 CodeRabbit,主要是配置简单、支持 GitLab。

效果

优点

1. 发现低级错误

# AI 发现的问题
def get_user(id):
    user = db.query(id)  # 缺少错误处理
    return user.name  # user 可能为 None

建议修改:

def get_user(id):
    user = db.query(id)
    if not user:
        raise UserNotFound(id)
    return user.name

2. 检查安全漏洞

// AI 标记的危险代码
const query = `SELECT * FROM users WHERE id = ${userId}`;

提示有 SQL 注入风险,建议用参数化查询。

3. 代码风格一致性

AI: 这个文件用了 4 空格缩进,但项目其他文件是 2 空格。建议统一。

AI Code Review 截图

缺点

1. 误报

有时候 AI 会建议”优化”完全没问题的代码:

// AI 建议改用 Optional chaining
const name = user && user.profile && user.profile.name;

// 但这段代码是故意的,因为要处理 undefined 和 null 的区别

2. 理解不了业务逻辑

def calculate_discount(price, user):
    if user.vip_level >= 3:
        return price * 0.8
    return price

# AI: 建议用更清晰的变量名
# 但它不知道 vip_level 3 是什么意思

业务规则还是得人工看。

3. 过于啰嗦

每个 MR 都给你整一堆建议,有用的没几个。后来我们调低了灵敏度,只让它关注安全问题和明显 Bug。

数据对比

试用一个月后的统计:

指标AI 前AI 后变化
Review 响应时间4.2h1.5h-64%
线上 Bug 数5个/月3个/月-40%
人工 Review 耗时2h/天0.8h/天-60%

Bug 数下降主要是因为 AI 发现了一些边界条件的问题。

数据分析图表

最佳实践

1. 配置合理的规则

不要让 AI 什么都管。我们只让它关注:

  • 安全漏洞
  • 空指针/类型错误
  • 未处理的异常
  • 明显的性能问题

代码风格这类事交给 ESLint/Prettier。

2. 人工 Review 不可少

AI 只是辅助。关键逻辑、安全相关代码必须人工过一遍。

3. 持续调整

根据误报情况调整配置。用了一周后,我们关掉了”代码可读性”检查,因为建议太主观了。

4. 团队共识

一开始有同事对 AI 挑错很反感。后来开会讨论了一次,明确了 AI 只是工具,不是裁判,大家心态好多了。

成本分析

项目费用
CodeRabbit 订阅$96/月 (8人)
节省的人力约 20h/月
时薪按 $50 算$1000/月
ROI约 10 倍

数字比较粗糙,但确实划算。

总结

AI Code Review 有用,但不是万能的。适合处理低级错误和重复性工作,复杂的业务逻辑还是得靠人。

关键是调整好预期:把 AI 当成初级 Reviewer,不是替代者。

对了,如果你们团队也想试,建议先在非核心项目上试点,摸清楚效果再推广。