SWE-Synth: Synthesizing Verifiable Bug-Fix Data to Enable Large Language Models in Resolving Real-World Bugs

📄 arXiv: 2504.14757v2 📥 PDF

作者: Minh V. T. Pham, Huy N. Phan, Hoang N. Phan, Cuong Le Chi, Tien N. Nguyen, Nghi D. Q. Bui

分类: cs.SE, cs.AI

发布日期: 2025-04-20 (更新: 2025-12-20)

备注: Work in progress


💡 一句话要点

SWE-Synth:合成可验证的缺陷修复数据,赋能大语言模型解决真实缺陷

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 自动程序修复 大语言模型 合成数据 软件工程 缺陷修复

📋 核心要点

  1. 现有自动程序修复(APR)方法缺乏高质量、可扩展的训练数据集,特别是那些具有可验证输出和中间推理轨迹的数据集,这限制了开源模型的发展。
  2. SWE-Synth通过LLM代理模拟调试工作流程,生成包含缺陷-修复对、测试用例和结构化修复轨迹的数据集,从而解决了数据匮乏问题。
  3. 实验表明,使用SWE-Synth训练的模型在SWE-Bench Lite上优于使用真实世界数据集训练的模型,验证了合成数据的有效性。

📝 摘要(中文)

本文提出SWE-Synth,一个用于合成真实、可验证且过程感知的缺陷修复数据集的框架,该框架在代码仓库级别运行。SWE-Synth利用大语言模型(LLM)代理来模拟调试工作流程,不仅生成缺陷-修复对,还生成测试用例和结构化的修复轨迹。与手动管理的数据集相比,我们的方法能够以最小的人工成本进行扩展,同时保持上下文的丰富性和正确性。实验表明,在SWE-Bench Lite上,使用SWE-Synth训练的模型比使用真实世界数据集训练的模型性能高出2.3%。我们的结果突出了合成的、代理生成的数据在推进APR和软件工程自动化方面的潜力。

🔬 方法详解

问题定义:当前自动程序修复(APR)领域面临的一个关键问题是缺乏高质量、可扩展的训练数据,特别是那些包含可验证的修复结果和详细的推理过程的数据。现有的真实世界数据集往往规模有限,且难以保证修复的正确性。手动创建此类数据集成本高昂,难以满足大语言模型(LLM)训练的需求。

核心思路:SWE-Synth的核心思路是利用LLM代理来模拟软件开发人员的调试过程,自动生成包含缺陷、修复、测试用例和修复轨迹的合成数据。通过模拟真实世界的调试流程,SWE-Synth能够生成更具上下文信息和更高质量的训练数据,从而提高LLM在APR任务中的性能。

技术框架:SWE-Synth框架主要包含以下几个模块:1) 缺陷注入模块:将真实的软件缺陷注入到代码库中。2) LLM代理调试模块:利用LLM代理模拟开发人员的调试过程,包括缺陷定位、修复代码生成和修复验证。3) 测试用例生成模块:自动生成测试用例,用于验证修复的正确性。4) 数据集构建模块:将生成的缺陷-修复对、测试用例和修复轨迹整合为数据集。整个流程在代码仓库级别进行,保证了数据的上下文信息。

关键创新:SWE-Synth的关键创新在于利用LLM代理来自动化生成高质量的缺陷修复数据集。与传统的依赖人工标注或简单规则生成数据的方法相比,SWE-Synth能够生成更真实、更具上下文信息的数据,并且可以大规模扩展。此外,SWE-Synth生成的修复数据是可验证的,因为每个修复都经过了测试用例的验证。

关键设计:SWE-Synth的关键设计包括:1) 使用预训练的LLM作为调试代理,并对其进行微调以提高其在APR任务中的性能。2) 设计了详细的提示工程(prompt engineering),引导LLM代理进行缺陷定位、修复代码生成和修复验证。3) 采用多种测试用例生成策略,以确保修复的正确性和鲁棒性。4) 使用代码仓库级别的上下文信息,例如代码依赖关系和提交历史,来提高生成数据的真实性。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,在SWE-Bench Lite基准测试中,使用SWE-Synth生成的合成数据训练的模型比使用真实世界数据集训练的模型性能提高了2.3%。这一结果表明,合成数据在APR任务中具有巨大的潜力,可以有效地解决数据匮乏问题,并提高APR模型的性能。

🎯 应用场景

SWE-Synth生成的合成数据可以用于训练和评估各种自动程序修复(APR)模型,特别是基于大语言模型的APR系统。该研究成果有助于提高软件开发的效率和质量,降低软件维护成本。未来,SWE-Synth可以扩展到其他软件工程任务,例如代码生成、代码审查和软件测试。

📄 摘要(原文)

Large language models (LLMs) are transforming automated program repair (APR) through agent-based approaches that localize bugs, generate patches, and verify fixes. However, the lack of high-quality, scalable training datasets, especially those with verifiable outputs and intermediate reasoning traces-limits progress, particularly for open-source models. In this work, we present SWE-Synth, a framework for synthesizing realistic, verifiable, and process-aware bug-fix datasets at the repository level. SWE-Synth leverages LLM agents to simulate debugging workflows, producing not only bug-fix pairs but also test cases and structured repair trajectories. Compared to manually curated datasets, our method scales with minimal human effort while preserving contextual richness and correctness. Experiments show that models trained on SWE-Synth outperform those trained on real-world datasets by 2.3% on SWE-Bench Lite. Our results highlight the potential of synthetic, agent-generated data to advance the state of the art in APR and software engineering automation.