AI垃圾正在改变代码审查的方式

AI编码工具现在可以在几分钟内生成数千行代码,帮助公司更快地构建功能、运行测试和修复问题。但AI生成的代码洪水仍然需要审查。大型语言模型可以生成表面上看起来干净但隐藏着草率错误的代码,例如错误的假设、安全漏洞或仅在部署后才出现的细微错误。修复这些问题可能会抹去AI承诺的生产力收益。

公司正在通过重新思考如何审查代码来应对AI代码垃圾的冲击。新策略正在出现。在其他方法中,工程师在AI开始编码之前仔细审查计划,部署专门的AI代理来捕获常规缺陷,将有风险的更改发送给人工审查者,或者要求开发人员为他们代理生成的代码进行辩护。

这种转变发生在AI生成的代码激增给工程团队带来新压力之际。在AI代码验证初创公司Sonar对1,100多名开发者的调查中,受访者估计AI贡献了他们添加到共享代码库中代码的42%。然而,虽然开发者发现AI对解释和原型化代码很有用,但96%的人并不完全信任其输出能够正确工作。

投资者看到了弥合这一差距的机会。例如,今年8月,AI代码审查初创公司CodeRabbit 融资1.43亿美元,估值15亿美元,声称每周为17,000名客户(包括Nvidia、Indeed和BMW集团)执行超过200万次审查。

代码审查的新时代将决定AI是否能够提供既更快又更可靠的代码。它也让一些软件工程师思考他们职业的未来:如果初级工程师花更少的时间自己编写代码,他们将如何学会判断它?

1、AI代码审查瓶颈

AI编写的代码正在将瓶颈从生成软件转移到审查它。根据Sonar的研究,38%的开发者表示审查AI生成的代码比审查同事编写的代码需要"更多努力"。其中61%的人表示AI经常生成看起来正确但"不可靠"的代码。

对于AI视频生成平台Synthesia来说,代码审查已成为其工程工作流程的重要组成部分。2025年11月,Synthesia的118名工程师全力投入AI编码工具,如Claude Code。据Synthesia首席技术官Peter Hill称,结果是代码量激增。

"我不知道我们是否能达到真正信任代理生成代码的地步。" ——Peter Hill,Synthesia

这些代码需要仔细检查。Hill表示,截至8月,提交审查的拉取请求(即对代码库的建议更改)数量同比增长了120%。其中95%的请求包含AI生成的代码。

一个反复出现的问题是重复。Hill表示,AI工具可能没有意识到某个任务的代码已经存在,它们会因为上下文有限而编写另一个版本。Synthesia发现多达10个相同函数的版本,工程师需要识别和删除冗余函数。完成后,工程师重新训练AI代理以防止再次发生。在公司规模下,Hill描述让AI产生预期输出是"大量的工作"。

2、AI代理在代码审查工作流中

一些团队试图在AI生成一行代码之前就防止审查问题。

Amazon Stores的高级首席工程师McLaren Stanley表示,他正在使用AI来现代化支撑Amazon移动购物应用的17年代码。他70人的团队通过维护构建功能所需的架构骨干来支持1,000多名开发者。Stanley表示,随着AI编写代码,工程师在生成开始之前花更多时间决定它应该做什么。

其中大部分工作涉及编写"规范",即AI代理应该构建什么以及如何构建的详细计划。在生成代码之前防止重复性错误可以节省工程师以后的时间。

Stanley回忆起有一次缺少指令导致代理生成了错误版本的编程语言Swift的25,000行代码。切换版本产生了600个无法一次修复的错误。Stanley丢弃了代码,更新了规范,并重新启动了代理。15分钟后,它正确地重新生成了代码。

一旦代码存在,专门的AI代理可以在人工介入之前处理第一轮检查。

亚马逊网络服务(AWS)的高级首席工程师David Yanacek表示,公司在人工审查之前使用代理来测试代码是否有效,根据原始计划检查代码,并寻找安全漏洞。

随着AI生成代码量的增加,第一遍审查变得更加重要。据首席技术官Tanuja Korlepra称,在采用AI后的三个月内,拥有约290名工程师的非营利软件提供商Bonterra的建议更改数量增加了两倍。进入审查的代码增加了十倍,审查时间增加了三倍,使得工程师无法检查每一行代码。

"我们拒绝让代码审查成为未检查模型输出的倾倒场。" ——Samar Abbas,Temporal

Bonterra的代理将代码与批准的设计、安全规则、编码标准和可访问性要求进行比较,然后报告他们对结果的信心。低分或标记的问题会将更改发送给人工。涉及支付、个人数据或其他敏感系统的代码总是接受人工审查。

"代理进行阅读,人类进行判断,"Korlepra说。

Synthesia也使用AI代理来决定何时需要人工审查。工程师设置的标准将更多审查指向更高风险的更改。更改错误消息的风险低于处理客户数据或核心业务规则的代码。即便如此,只有不到5%的更改绕过人工审查。

"我不知道我们是否能达到真正信任代理生成代码的地步,"Hill说。

自动化审查不会改变谁对结果代码负责。

当机器产生的代码超过工程师能够仔细阅读的数量时,人工批准可能变成"戏剧性批准",据软件咨询公司Making Sense的首席AI架构师JD Raimondi称。换句话说,工程师可能确认功能正常工作,浏览代码并批准它,而无需理解底层的选择。

开源开发者平台Temporal将负担转移回提交代码的人。首席执行官Samar Abbas表示,随着AI的使用,代码量和审查时间都增加了。根据其"退回"政策,Temporal的工程师必须用自己的话解释代理的设计选择以及代码如何处理异常情况。否则,审查者会拒绝它。

"我们拒绝让代码审查成为未检查模型输出的倾倒场,"Abbas说。

3、在AI上培训初级工程师

随着AI将工程工作从编写代码转向判断代码,公司正在重新考虑初级工程师如何获得经验。

Making Sense的初级工程师从AI中获得了一些最大的生产力提升,Raimondi说,这引发了对他们不再通过实践学习的担忧。该咨询公司让初级工程师参与决定客户为什么需要功能以及它应该如何工作,而不是将他们限制在检查AI输出上。

IBM正在使用AI让新工程师更快地获得更难的任务。IBM自动化和AI总经理Neel Sundaresan表示,最近的毕业生现在从事以前保留给高级工程师的产品功能和项目。AI帮助实现和测试代码,但如果失败,初级工程师评估出了什么问题并在工作交给高级开发人员最终批准之前修复问题。Sundaresan估计AI可以帮助初级工程师执行70%到80%的某些曾经需要高级工程师的任务。

Synthesia主要招聘中级和高级工程师。其经验较少的员工与高级同事和AI代理一起工作,在学习定义成功代码应该做什么的同时负责项目的部分工作。

在Bonterra,代理现在执行许多曾经培训新工程师的定义明确的编码任务。初级工程师与经验丰富的同事一起拥有结果,学习指导代理、质疑其输出并保持对结果负责。她说,这种方法可以帮助初级工程师建立在职业生涯中进步所需的技能和知识。

"如果行业停止雇佣初级工程师,行业就停止培养高级工程师,"Korlepra说。


原文链接:AI Slop Is Changing How Engineers Review Code

汇智网翻译整理,转载请标明出处