← 最新论文
💻 computer science

Exploring Generalizable Automated Program Repair with Large Language Models

本文通过评估 13 种大语言模型在多种编程语言及不同故障定位条件下的表现,揭示了单一模型难以通用、模型集成可提升修复效果以及故障定位不完美会显著降低准确率等关键发现,旨在推动更可靠且具泛化能力的自动化程序修复技术发展。

原作者: Viola Campos, Ridwan Shariffdeen, Adrian Ulges, Yannic Noller

发布于 2026-02-23
📖 1 分钟阅读☕ 轻松阅读

原作者: Viola Campos, Ridwan Shariffdeen, Adrian Ulges, Yannic Noller

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇论文就像是一份**“超级程序员助手(AI)的跨语言大考成绩单”**。

想象一下,你开了一家跨国软件公司,你的员工(也就是现在的 AI 大模型)非常聪明,能写代码、修 Bug。但是,老板(研究人员)想知道:这些 AI 助手到底是不是真的“全能”?它们是在特定语言上很厉害,还是真的能通吃所有编程语言?如果给它们一点模糊的线索,它们还能修好代码吗?

为了回答这些问题,作者们组织了一场**“全球编程修复大赛”**。

1. 比赛背景:AI 修 Bug 的现状

以前,修 Bug 就像让一个只会修自行车的师傅去修汽车,或者让一个只会说中文的人去翻译法语,非常困难。现在的 AI(大语言模型)很厉害,它们读过海量的代码,看起来无所不能。
但是,之前的研究大多是在“温室”里做的:

  • 只考一种语言(比如只考 Java)。
  • 给的答案太完美(直接告诉 AI 哪一行错了,就像考试时直接划出了错题位置)。
  • 只让一个模型上场(没比较谁更强)。

这就导致了一个问题:AI 可能只是“死记硬背”了考题,换个环境就傻了。

2. 比赛设置:一场残酷的“大逃杀”

作者们找来了13 位顶尖的 AI 选手(包括闭源的“商业巨头”如 GPT-4o、Claude,和开源的“民间高手”如 Llama、DeepSeek),让它们去修复4 种不同语言(Java, JavaScript, Python, PHP)中的真实 Bug。

  • 考题来源:不是编造的假题,而是真实世界中开源项目里大家踩过的坑。
  • 考题难度:有的 Bug 只错了一个字(单行),有的错了一整块逻辑(多行),有的甚至错了好几个地方(多块)。
  • 线索给法
    • 裸考:只给一段坏代码,让 AI 自己猜。
    • 带提示:告诉 AI“这段代码运行报错是 XXX",就像给考生看错题解析。
    • 指路:直接告诉 AI“错在第 5 行”,或者让另一个工具先帮你找错在哪(但这工具有时候会指错路)。

3. 比赛结果:令人惊讶的真相

🏆 真相一:没有“全能冠军”,只有“偏科天才”

如果你以为有一个 AI 能修好所有语言的 Bug,那就错了。

  • 比喻:就像足球队,有的前锋在草地上跑得快(擅长 Java),有的前锋在沙地上跑得快(擅长 Python)。
  • 结果:Claude 3.7 在 Java 上表现最好,DeepSeek 在 PHP 上最强,Gemini 在 Python 上更稳。没有哪个模型是通吃的
  • 启示:如果你想修 Bug,不能只依赖一个 AI,得像组建“梦之队”一样,根据语言不同,换不同的专家上场,或者把它们组合起来用。

📝 真相二:给点“错题解析”,成绩突飞猛进

当 AI 不仅看到坏代码,还能看到“报错信息”和“测试失败的原因”时,它们的修复成功率暴涨

  • 比喻:这就好比医生看病。如果只给医生看一张模糊的 X 光片(只有代码),他可能猜错;但如果给他看具体的化验单和病人描述(报错信息),他就能精准下刀。
  • 数据:加上报错信息后,修复成功率最高提升了近 50%!

🎯 真相三:如果“指路”指错了,AI 就彻底懵了

这是最扎心的发现。之前的研究假设 AI 能精准知道哪一行错了(完美定位)。但在现实中,我们通常用工具先找错,工具可能会指错地方。

  • 比喻:想象你在玩“寻宝游戏”。如果主持人直接告诉你“宝藏就在第 5 个箱子”(完美定位),你很容易找到。但如果主持人说“宝藏可能在第 3、4、5 个箱子附近”(自动定位,但不准),AI 就会在错误的箱子里翻来翻去,最后完全修不好
  • 结果:一旦定位不准,AI 的修复能力断崖式下跌。这说明,“找错”比“修错”更难,也更关键

🐍 真相四:Python 的“缩进”是个大坑

在 Python 语言中,代码的缩进(空格)非常重要。很多 AI 生成的代码逻辑是对的,但缩进乱了,导致程序直接跑不起来。

  • 比喻:就像写诗,意思对了,但每行的开头空格没对齐,整首诗就废了。
  • 结果:很多模型在 Python 上表现差,主要是因为“格式错误”,而不是“逻辑错误”。

🆚 真相五:开源模型正在“逆袭”

以前大家觉得闭源模型(像 GPT 这种要花钱的)肯定比开源模型(免费可下载的)强。

  • 结果:虽然闭源模型平均还是强一点,但像 DeepSeek 这样的开源模型进步神速,在某些任务上已经能跟闭源大佬“掰手腕”了。这意味着未来我们不一定非要花大钱,开源模型也能干大事。

4. 总结:这对我们意味着什么?

这篇论文给未来的软件开发者敲响了警钟,也指明了方向:

  1. 别迷信“一个模型走天下”:未来的修 Bug 工具,应该是一个**“专家委员会”**。遇到 Java 问题派 A 去,遇到 Python 问题派 B 去,或者让它们一起投票决定怎么修。
  2. 信息越全越好:给 AI 的提示里,一定要包含报错信息测试用例,这比给代码本身更重要。
  3. 定位是瓶颈:如果找不到 Bug 在哪,AI 再聪明也白搭。未来的研究重点应该放在如何更精准地找到 Bug,而不仅仅是怎么修。
  4. 现实很骨感:现在的 AI 在“完美环境”下表现很好,但一旦放到充满噪音和不确定性的真实世界里,能力会大打折扣。我们需要更诚实、更严苛的测试标准。

一句话总结
AI 修 Bug 已经很强了,但它们不是万能的“超人”,更像是各有所长的“特种兵”。要想真正用好它们,我们需要组建混合团队,提供充足的线索,并且要警惕那些“指路不准”的陷阱。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →