SWE-Bench++: A Framework for the Scalable Generation of Software Engineering Benchmarks from Open-Source Repositories
作者: Lilin Wang, Lucas Ramalho, Alan Celestino, Phuc Anthony Pham, Yu Liu, Umang Kumar Sinha, Andres Portillo, Onassis Osunwa, Gabriel Maduekwe
分类: cs.SE, cs.AI, cs.CL, cs.LG
发布日期: 2025-12-19
💡 一句话要点
SWE-Bench++:一个可扩展的软件工程基准测试框架,从开源仓库自动生成测试用例。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 软件工程基准测试 代码生成 大语言模型 自动化测试 开源仓库 多语言支持 pull request 环境合成
📋 核心要点
- 现有软件工程基准测试依赖手动管理,数据集静态,且主要关注Python的错误修复,限制了大语言模型在仓库级别任务上的评估。
- SWE-Bench++通过自动化流程,从开源GitHub项目中提取pull request,将其转化为可执行的测试任务,覆盖多种编程语言的错误修复和功能请求。
- 实验结果表明,在SWE-Bench++基准测试上,当前最先进的模型性能有限,且使用SWE-Bench++进行微调可以显著提升模型在多语言基准测试上的表现。
📝 摘要(中文)
SWE-Bench++是一个自动化的框架,用于从开源GitHub项目中生成仓库级别的代码任务,旨在解决现有软件工程基准测试中手动管理、数据集静态以及侧重于Python错误修复的局限性。该框架通过收集真实的pull request,覆盖了11种编程语言的错误修复和功能请求。SWE-Bench++将GitHub pull request转化为可复现的、基于执行的任务,通过四个阶段实现:程序化资源获取、环境合成、测试预言提取和质量保证。最后,一个提示引导的轨迹合成步骤将强大模型无法解决的实例转化为训练轨迹。初始基准测试包含来自3971个仓库的11133个实例,涵盖11种语言。在1782个实例的子集上,当前最强的模型表现如下:claude-sonnet-4.5达到36.20%的pass@10,gpt-5-2025-08-07达到34.57%,gemini/gemini-2.5-pro达到24.92%,gpt-4o达到16.89%。通过在SWE-Bench++实例上进行微调,在SWE-bench Multilingual基准测试上取得了可衡量的改进,进一步证明了该数据集的效用。SWE-Bench++为评估和改进仓库级别的代码生成提供了一个可扩展的多语言基准。
🔬 方法详解
问题定义:现有软件工程基准测试,如SWE-bench,主要依赖于手动构建,数据集规模有限且静态,难以覆盖各种编程语言和软件工程任务。此外,现有基准测试往往侧重于Python语言的bug修复,缺乏对其他语言和功能性需求的全面评估。这些局限性阻碍了大语言模型在更广泛的软件工程场景中的应用和发展。
核心思路:SWE-Bench++的核心思路是自动化地从开源GitHub仓库中提取pull request,并将其转化为可执行的测试用例。通过这种方式,可以大规模地生成多样化的、真实的软件工程任务,覆盖多种编程语言和任务类型(包括bug修复和功能添加)。这种方法避免了手动构建基准测试的繁琐和局限性,提高了基准测试的规模和代表性。
技术框架:SWE-Bench++的整体框架包含四个主要阶段:1) 程序化资源获取:自动从GitHub仓库中筛选和下载pull request。2) 环境合成:为每个pull request构建可执行的测试环境,包括依赖项安装和配置。3) 测试预言提取:从pull request中提取测试用例,用于评估代码生成的正确性。4) 质量保证:对生成的测试用例进行验证和过滤,确保其质量和可靠性。此外,还有一个提示引导的轨迹合成步骤,用于将模型难以解决的实例转化为训练轨迹,以提升模型的学习能力。
关键创新:SWE-Bench++的关键创新在于其自动化和可扩展性。与传统的基准测试方法相比,SWE-Bench++能够自动地从大量的开源项目中生成测试用例,极大地提高了基准测试的规模和多样性。此外,SWE-Bench++还支持多种编程语言,使其能够更全面地评估大语言模型在不同编程语言环境下的代码生成能力。
关键设计:SWE-Bench++的关键设计包括:程序化资源获取策略,用于高效地筛选和下载相关的pull request;环境合成方法,用于自动构建可执行的测试环境;测试预言提取算法,用于从pull request中提取有效的测试用例;以及质量保证机制,用于确保生成的测试用例的质量。提示引导的轨迹合成步骤利用强化学习或类似的策略,生成一系列中间步骤,引导模型逐步解决复杂的代码生成任务。
🖼️ 关键图片
📊 实验亮点
SWE-Bench++基准测试包含来自3971个仓库的11133个实例,涵盖11种编程语言。在1782个实例的子集上,claude-sonnet-4.5达到36.20%的pass@10,gpt-5-2025-08-07达到34.57%,gemini/gemini-2.5-pro达到24.92%,gpt-4o达到16.89%。通过在SWE-Bench++实例上进行微调,在SWE-bench Multilingual基准测试上取得了可衡量的改进。
🎯 应用场景
SWE-Bench++可用于评估和改进大语言模型在软件工程领域的应用,例如代码生成、代码修复和代码理解。该基准测试可以帮助研究人员和开发者更好地了解当前模型的优缺点,并开发出更有效的模型和算法。此外,SWE-Bench++还可以用于自动化软件测试和代码审查,提高软件开发的效率和质量。
📄 摘要(原文)
Benchmarks like SWE-bench have standardized the evaluation of Large Language Models (LLMs) on repository-level software engineering tasks. However, these efforts remain limited by manual curation, static datasets, and a focus on Python-based bug fixes. We introduce SWE-Bench++, an automated framework that generates repository-level coding tasks from open-source GitHub projects. Unlike synthetic approaches, our pipeline harvests live pull requests to cover both bug fixes and feature requests across 11 languages. SWE-Bench++ turns GitHub pull requests (PRs) into reproducible, execution-based tasks via four stages: programmatic sourcing, environment synthesis, test oracle extraction, and quality assurance. A final hint-guided trajectory synthesis step converts instances that strong models fail on into training trajectories. Our initial benchmark consists of 11,133 instances from 3,971 repositories across 11 languages. On a subset of 1,782 instances of this benchmark, today's strongest models perform as follows: claude-sonnet-4.5 achieves 36.20% pass@10, gpt-5-2025-08-07 34.57%, gemini/gemini-2.5-pro 24.92%, and gpt-4o 16.89%. We further demonstrate the utility of our dataset by showing that fine-tuning on SWE-Bench++ instances yields measurable improvements on the SWE-bench Multilingual benchmark. SWE-Bench++ provides a scalable, multilingual benchmark for evaluating and improving repository-level code generation.