以前我们团队的代码审查,靠的是开发之间的互审——但大家业务忙,审查经常变成"走过场",低级问题(空指针、资源没关、边界没判)就溜进主干,等测试和线上出问题才暴露。上个月我引入了AI代码审查,配合人工二审,效果出奇地好:低级问题拦截率明显上升,审查时间还缩短了。这篇文章分享我的完整实践。
先说结论:AI审代码不是要取代人工评审,而是给人工评审"减负+兜底"。我们遇到的问题:
我在CI里加了一步:代码提交并创建PR时,自动把diff发给AI代码审查服务(用的Qwen2.5-coder,通过vLLM部署在内网,代码不出公司),让AI按固定模板输出审查意见。
提示词里明确要求AI按四类输出:
1)严重问题:会导致bug、崩溃、安全风险的(空指针、资源泄漏等); 2)逻辑问题:业务逻辑可能有误、边界条件没处理; 3)规范问题:命名、注释、代码风格与团队规范不符; 4)改进建议:可以写得更好但非必须。
每个问题必须带"文件+行号+原因+修改建议",AI给不了行号就标注"无法定位",防止它瞎指。
开发看到AI意见后,重点处理"严重问题",其次看"逻辑问题",规范和优化建议按需处理。AI意见只是参考,合入与否仍由开发判断——因为AI也会误报(下面会讲)。
每周我会抽查10%的AI审查意见,看它漏了什么、误报了什么,把结果反馈给模型配置。跑了三周后,AI误报率从最初的20%降到了8%。
上线三周的数据:约80%的低级问题(空指针、资源泄漏、未判空)在PR阶段被AI标出,人工二审时这些问题几乎不用再看;严重问题的修复速度从"测试发现后修"提前到"合入前就修"。审查时间上,人工从"逐行看全部"变成"只看AI标出的+自己复核关键逻辑",单PR审查时间平均缩短了40%。
我的总结:AI代码审查的正确用法是"前置过滤+人工把关"。它把80%的重复性检查自动化,让人的精力集中在真正需要判断的地方。如果你是团队的技术负责人,强烈建议从"CI加一步AI预审+只标记不阻断"开始,跑两周看看误报率和接受度,再逐步调优提示词和阈值。它不会让你少开会,但真的能让你少踩坑。