← 最新论文
💻 computer science

SWE-Refactor: A Repository-Level Benchmark for Real-World LLM-Based Code Refactoring

本文介绍了 SWE-Refactor,这是一个包含 1,099 个经过验证的 Java 重构任务的全面仓库级基准测试,旨在克服现有数据集的局限性并评估九种大语言模型的能力,结果显示当前模型在处理复杂的复合重构任务时表现得非常吃力。

原作者: Yisen Xu, Jinqiu Yang, Tse-Hsun, Chen

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

原作者: Yisen Xu, Jinqiu Yang, Tse-Hsun, Chen

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

想象一下,你拥有一座巨大的、古老的图书馆,里面装满了用一种非常特定的语言(Java)编写的书籍。这些书运行得非常完美,但其中的故事却很混乱:章节太长,角色命名混乱,有些场景还散落在不同的房间里。**代码重构(Code refactoring)**就是清理这些书籍的过程,目的是让它们更易于阅读和维护,而不改变实际的故事内容或结局。

长期以来,我们一直在教计算机(特别是大型语言模型或 LLM)如何从头开始编写新的故事。但教它们如何在不破坏情节的前提下修复现有的故事,要困难得多。

这篇论文介绍了 SWE-Refactor,这是一个全新的“考试”,旨在测试这些 AI 计算机在清理代码方面的表现。以下是简单的术语拆解:

1. 问题所在:旧的考试存在缺陷

在此之前,研究人员尝试测试 AI 进行代码清理的能力,但这些测试存在三个大问题:

  • 过于简单: 它们只要求 AI 进行微小的、单步的修复(比如重命名一个变量),忽略了需要移动整个章节等复杂的任务。
  • 数据带有噪音: 有时提供的“正确答案”并不只是清理,还包含了修复漏洞或添加新功能。这会让 AI 感到困惑:“我是应该打扫房间,还是顺便把墙也刷了?”
  • 缺失上下文: 真实的代码就像一张网;改变一行代码往往会影响到其他十行。旧的测试没有给 AI 提供足够的“大局观”(整个图书馆),使其无法理解其中的关联。

2. 解决方案:一个真实的 AI “健身房”

作者构建了 SWE-Refactor,一个高质量的、大规模的训练场和考试场。

  • 真实的人类工作: 他们没有捏造虚假的例子,而是研究了 18 个真实的、流行的 Java 软件项目。他们找到了 1,099 处人类开发者成功进行代码清理的实例。
  • 纯粹的清理: 他们使用了专门的工具来过滤掉任何不属于“纯粹清理”的改动。如果一名开发者在清理的同时修复了一个漏洞,那么这个例子会被剔除。他们只保留了那些“纯粹”的清理过程。
  • 完整的图书馆: 他们不仅给了 AI 一页纸,还给了它整本书、图书馆的地图以及谁在阅读什么的清单,以便 AI 理解上下文。
  • “金标准”检查: 为了确保 AI 没有作弊,他们检查了三件事:
    1. 代码是否仍然可以编译(页面是否依然稳固)?
    2. 所有的测试是否仍然通过(故事是否依然逻辑通顺)?
    3. AI 是否真的完成了请求的具体清理任务,还是仅仅写了一些能运行的东西?

3. 考试结果:AI 擅长小任务,但在大任务面前表现不佳

作者在这一新考试上测试了 9 种不同的 AI 模型(包括像 GPT-4o 和 DeepSeek 这样著名的模型)。

  • 通用型选手胜出: 大型通用 AI 模型(如 GPT-4o)的表现远好于较小的专用编码模型。这表明理解“大局观”比仅仅掌握语法更为重要。
  • 简单 vs. 复杂: AI 在处理简单的单步清理(例如“提取方法”,就像把一段话从长章节中抽离出来,并将其变成一个新的短章节)方面表现尚可。
  • 复合挑战: AI 在面对**复合重构(compound refactorings)**时表现得非常吃力。这些任务需要同时完成多个步骤,比如“把这段话移到另一个章节,并重命名那个角色”。
    • 类比: 想象要求一个机器人搬动一张沉重的沙发。它可以做到。但如果你要求它“搬动沙发,同时刷一下沙发背后的墙,再重新布置地毯”,它往往会忘记某个步骤或者弄乱顺序。
    • 数据统计: 即使是一个非常先进的 AI 智能体(OpenAI Codex),在这些复杂的、多步骤的任务中的成功率也仅为 39% 左右。

4. 如何帮助 AI 取得成功

论文还测试了给予 AI 更多帮助是否有效:

  • 检索(RAG): 给 AI 提供类似的清理示例会有一定帮助。
  • 多智能体工作流(团队协作模式): 这是最终的赢家。与其让一个 AI 完成所有工作,不如设置一个“开发 AI”来编写代码,以及一个“评审 AI”来批评它并要求修改。这种“团队”协作模式解决了最多的问题,表明 AI 需要检查自己的工作才能处理复杂任务。

总结

SWE-Refactor 是一个全新的、严格且真实的 AI 代码重构测试。它证明了虽然 AI 在处理小型代码修复方面已经做得很好,但在处理需要理解软件项目各部分如何连接的复杂、多步骤改造时,仍然感到困难。作者发布了所有数据和结果,以便其他研究人员可以使用这个“健身房”来训练未来更好的 AI。

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

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

试用 Digest →