SWE-Flow: 以测试驱动方式合成软件工程数据

发表
Lei ZhangLei Zhang 提交
作者: Lei ZhangLei Zhang, Jiaxi Yang, Min Yang, Jian Yang, Mouxiang Chen, Jiajun Zhang, Zeyu Cui, Binyuan Hui, Junyang Lin

摘要

我们引入了 **SWE-Flow**,这是一种基于测试驱动开发(TDD)的新颖数据合成框架。 与依赖人工提交问题的现有软件工程数据不同,**SWE-Flow** 直接从单元测试中自动推断增量开发步骤,而单元测试本身就封装了高级需求。 **SWE-Flow** 的核心是构建运行时依赖图(RDG),它精确捕获函数交互, 从而能够生成结构化、分步的*开发时间表*。 在每个步骤中,**SWE-Flow** 都会生成部分代码库、相应的单元测试以及 必要的代码修改,从而形成完全可验证的 TDD 任务。 通过这种方法,我们从真实世界的 GitHub 项目中生成了 16,061 个训练实例和 2,020 个测试实例, 创建了 **SWE-Flow-Eval** 基准。我们的实验表明,在此数据集上对开放模型进行微调 显著提高了基于 TDD 的编码性能。为了促进进一步研究,我们发布了所有代码、数据集、模型和 Docker 镜像, 地址为 [Github](https://github.com/Hambaobao/SWE-Flow)
查看 arXiv 页面查看 PDF

评论

Lei ZhangLei Zhang
论文作者
论文提交者

我们引入了 SWE-Flow,一个基于测试驱动开发(TDD)的新型数据合成框架。与现有依赖人工提交问题的软件工程数据不同,SWE-Flow 直接从单元测试中自动推断渐进式开发步骤,单元测试本身就包含了高层需求。SWE-Flow 的核心是构建一个运行时依赖图(RDG),它精确地捕获了函数间的交互,从而能够生成结构化的、分步的开发时间表。在每个步骤中,SWE-Flow 都会生成部分代码库、相应的单元测试以及必要的代码修改,从而产生完全可验证的 TDD 任务。通过这种方法,我们从真实世界的 GitHub 项目中生成了 16,061 个训练实例和 2,020 个测试实例,创建了 SWE-Flow-Bench 基准。我们的实验表明,在这一数据集上对开放模型进行微调,能显著提高基于 TDD 的编码性能。为促进进一步研究,我们发布了所有代码、数据集、模型和 Docker 镜像,地址为 Github

Li YunshuiLi Yunshui

干得好~