[Paper] SWE-Refactor:面向真实世界的基于 LLM 的代码重构仓库级基准
发布: (2026年2月4日 GMT+8 00:36)
7 分钟阅读
原文: arXiv
Source: arXiv - 2602.03712v1
概述
本文介绍了 SWE‑Refactor,一个新的基准,用于捕捉开发者在 Java 代码库上进行的真实世界、仓库级别的重构任务。通过提供 1,099 个经过严格审查的重构实例,作者为社区提供了一个真实的测试平台,以评估大型语言模型(LLMs)在建议 semantics‑preserving 的代码编辑方面的表现——这项能力远超简单的代码生成。
关键贡献
- 大型、真实的数据集:从 18 个开源 Java 项目中挖掘出 1,099 条开发者编写的重构,分为 922 条原子(单步)和 177 条复合(多步)编辑。
- 严格的验证流水线:每个实例都检查编译时正确性,通过项目的测试套件,并使用自动化重构检测工具进行验证,以保证行为保持不变。
- 仓库级别的上下文:基准包括周围文件和构建配置,迫使 LLM 必须考虑导入、项目结构以及跨文件依赖。
- 全面的评估:对九种流行的 LLM(如 GPT‑4o‑mini、DeepSeek‑V3、CodeLLaMa、OpenAI Codex)进行基准测试,建立原子和复合重构的基线成功率。
- 开放发布:完整数据集、评估脚本和结果公开发布,以加速 LLM 驱动的代码维护研究。
方法论
- 挖掘重构 – 作者挖掘了 18 个成熟 Java 仓库的提交历史,提取仅包含重构更改(无功能编辑)的提交。
- 过滤与分类 – 将重构分类为 原子(单一转换,例如重命名方法)或 复合(多个协同更改,例如提取类 + 更新调用点)。
- 验证套件 – 对每个候选:
- 重新构建项目以确保更改能够编译。
- 运行所有现有的单元/集成测试,以确认没有行为回归。
- 使用静态重构检测工具(例如 RefactoringMiner)交叉检查记录的转换是否与实际代码差异匹配。
- 提示设计 – 将每个基准实例转换为提示,提供相关文件、构建配置以及所需重构的自然语言描述。
- LLM 评估 – 九个 LLM 生成补丁,然后自动应用、编译并测试。若生成的补丁完全复现已验证的重构并通过所有测试,则记录为成功。
结果与发现
| 重构类型 | 表现最佳模型(成功率 %) | 表现最差模型(成功率 %) |
|---|---|---|
| Atomic | GPT‑4o‑mini – 68.2 % | DeepSeek‑V3 – 41.5 % |
| Compound | GPT‑4o‑mini – 42.9 % | OpenAI Codex agent – 39.4 % |
- Atomic edits 相对可处理;顶级模型大约能解决三分之二的案例。
- Compound edits 仍具挑战性:即使是表现最好的模型也未能解决超过一半的案例。
- 失败分析显示错误集中在 依赖追踪(缺少导入或陈旧引用)和 多步骤协同(例如,在抽取后忘记更新所有调用点)。
- 对于简单的重命名,模型之间的差距缩小;但对于结构性更改,如“提取接口”或“将方法移动到另一个类”,差距显著扩大。
Practical Implications
- 工具开发者 可以将 SWE‑Refactor 用作回归测试套件,在构建基于 LLM 的 IDE 助手时,确保新模型版本在真实的重构任务上有所提升。
- DevOps 流水线 未来可以集成 LLM 对常规清理(例如重命名、提取方法)的建议,但对于复杂的多文件重构仍应视为“人机协同”操作,直至模型可靠性提升。
- 训练数据策划者 现在拥有一套具体且高质量的保持行为不变的编辑示例,可用于对 LLM 进行微调或指令微调,以适应维护导向的任务。
- 项目维护者 可以将自己的代码审查机器人与已发布的基准进行对比,识别自定义提示或后处理步骤在哪些方面带来了价值。
限制与未来工作
- 语言范围 – 该基准目前仅覆盖 Java;扩展到其他生态系统(Python、JavaScript、Rust)将提升适用性。
- 复合编辑的规模 – 仅有 177 条复合实例可用;更大且更具多样性的集合能够更好地捕捉真实世界重构的完整光谱。
- 人工评估 – 成功度通过自动化方式衡量(编译 + 测试)。一些逃过测试套件的细微语义变化可能未被发现。引入专家评审的判断可以使评估更为严谨。
- 提示工程 – 本研究使用单一提示格式;探索替代提示设计(例如链式思考、少量示例)可能提升性能,尤其是在复合任务上。
作者已发布 SWE‑Refactor 及所有评估制品,邀请社区在此基础上进行构建,推动大型语言模型更接近可信的代码维护合作伙伴。
作者
- Yisen Xu
- Jinqiu Yang
- Tse‑Hsun
- Chen
论文信息
- arXiv ID: 2602.03712v1
- 分类: cs.SE
- 出版日期: 2026年2月3日
- PDF: 下载 PDF