SWE-bench-java: A GitHub Issue Resolving Benchmark for Java

📄 arXiv: 2408.14354v1 📥 PDF

作者: Daoguang Zan, Zhirong Huang, Ailun Yu, Shaoxin Lin, Yifan Shi, Wei Liu, Dong Chen, Zongshuai Qi, Hao Yu, Lei Yu, Dezhi Ran, Muhan Zeng, Bo Shen, Pan Bian, Guangtai Liang, Bei Guan, Pengjie Huang, Tao Xie, Yongji Wang, Qianxiang Wang

分类: cs.SE, cs.AI, cs.CL

发布日期: 2024-08-26

备注: This work is in progress


💡 一句话要点

发布SWE-bench-java:一个用于Java GitHub Issue解决的基准测试。

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

关键词: 软件工程 GitHub Issue解决 基准测试 Java 大型语言模型

📋 核心要点

  1. 现有SWE-bench仅支持Python,无法满足工业界对多语言issue解决能力评估的需求。
  2. SWE-bench-java通过提供Java版本的issue解决基准,扩展了SWE-bench的多语言支持。
  3. 发布了数据集、Docker评估环境和排行榜,并使用SWE-agent和LLM进行了初步验证。

📝 摘要(中文)

GitHub issue解决是软件工程中的一项关键任务,最近在工业界和学术界都受到了广泛关注。SWE-bench已被发布用于评估大型语言模型(LLMs)的issue解决能力,但目前仅关注Python版本。然而,支持更多编程语言也很重要,因为工业界存在强烈的需求。作为迈向多语言支持的第一步,我们开发了SWE-bench的Java版本,称为SWE-bench-java。我们已经公开发布了数据集,以及相应的基于Docker的评估环境和排行榜,这些将在未来几个月内持续维护和更新。为了验证SWE-bench-java的可靠性,我们实现了一个经典方法SWE-agent,并在其上测试了几个强大的LLM。众所周知,开发高质量的多语言基准测试非常耗时且劳动密集,因此我们欢迎通过pull request或协作来加速其迭代和改进,为完全自动化的编程铺平道路。

🔬 方法详解

问题定义:论文旨在解决缺乏Java语言GitHub issue解决基准测试的问题。现有SWE-bench仅支持Python,无法全面评估LLM在软件工程任务中的能力,尤其是在Java这种广泛使用的语言上。这限制了LLM在实际Java项目中的应用和优化。

核心思路:核心思路是构建一个高质量的Java issue解决数据集,并提供相应的评估环境。通过这个基准,可以系统地评估LLM在理解、定位和修复Java代码中的问题的能力。这样可以促进LLM在Java软件开发领域的应用。

技术框架:SWE-bench-java的技术框架主要包括三个部分:一是Java issue解决数据集,包含GitHub上的真实issue和对应的修复代码;二是基于Docker的评估环境,确保评估的可重复性和一致性;三是排行榜,用于展示不同模型在SWE-bench-java上的性能。

关键创新:关键创新在于构建了一个专门针对Java语言的issue解决基准测试。与现有的Python版本SWE-bench相比,SWE-bench-java更贴近实际Java开发场景,能够更准确地评估LLM在Java代码理解和修复方面的能力。

关键设计:数据集的构建需要仔细筛选GitHub上的issue,确保其质量和难度适中。评估环境需要能够自动编译、测试和评估LLM生成的修复代码。排行榜的设计需要公平公正,能够反映不同模型之间的性能差异。论文中使用了SWE-agent作为baseline,并测试了多个LLM模型,但具体参数设置、损失函数、网络结构等技术细节未详细说明。

🖼️ 关键图片

fig_0
img_1
img_2

📊 实验亮点

论文实现了经典方法SWE-agent,并在SWE-bench-java上测试了多个强大的LLM。虽然论文没有给出具体的性能数据和提升幅度,但验证了SWE-bench-java作为评估LLM在Java issue解决任务中能力的有效性。公开的数据集、评估环境和排行榜为后续研究提供了便利。

🎯 应用场景

SWE-bench-java可用于评估和提升LLM在Java软件开发中的自动化issue解决能力。这有助于提高开发效率,降低维护成本,并促进AI在软件工程领域的更广泛应用。未来,可以扩展到更多编程语言,构建更全面的多语言软件工程基准测试。

📄 摘要(原文)

GitHub issue resolving is a critical task in software engineering, recently gaining significant attention in both industry and academia. Within this task, SWE-bench has been released to evaluate issue resolving capabilities of large language models (LLMs), but has so far only focused on Python version. However, supporting more programming languages is also important, as there is a strong demand in industry. As a first step toward multilingual support, we have developed a Java version of SWE-bench, called SWE-bench-java. We have publicly released the dataset, along with the corresponding Docker-based evaluation environment and leaderboard, which will be continuously maintained and updated in the coming months. To verify the reliability of SWE-bench-java, we implement a classic method SWE-agent and test several powerful LLMs on it. As is well known, developing a high-quality multi-lingual benchmark is time-consuming and labor-intensive, so we welcome contributions through pull requests or collaboration to accelerate its iteration and refinement, paving the way for fully automated programming.