FEA-Bench: A Benchmark for Evaluating Repository-Level Code Generation for Feature Implementation

📄 arXiv: 2503.06680v2 📥 PDF

作者: Wei Li, Xin Zhang, Zhongxin Guo, Shaoguang Mao, Wen Luo, Guangyue Peng, Yangyu Huang, Houfeng Wang, Scarlett Li

分类: cs.SE, cs.CL

发布日期: 2025-03-09 (更新: 2025-06-19)

备注: V2, Accepted by ACL 2025 main conference


💡 一句话要点

FEA-Bench:用于评估代码大模型在仓库级别特征实现的代码生成能力基准

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

关键词: 代码生成 大型语言模型 软件工程 基准测试 增量开发

📋 核心要点

  1. 现有代码生成基准缺乏对仓库级别代码库中新增功能实现的针对性评估。
  2. FEA-Bench通过收集GitHub仓库的pull request,构建包含代码更改和单元测试的任务实例,评估LLM的增量开发能力。
  3. 实验结果表明,LLM在FEA-Bench上表现不佳,揭示了仓库级别增量代码开发的挑战。

📝 摘要(中文)

本文提出FEA-Bench,一个旨在评估大型语言模型(LLMs)在代码仓库中执行增量开发能力的基准。当前基准缺乏针对此能力的专用评估框架,FEA-Bench填补了这一空白。该基准从83个GitHub仓库收集pull request,并使用基于规则和基于意图的过滤来构建专注于新功能开发的任务实例。每个包含代码更改的任务实例都与相关的单元测试文件配对,以确保解决方案可以被验证。特征实现要求LLMs同时具备新组件的代码补全能力和代码仓库中其他相关部分的代码编辑能力,从而提供了一种更全面的LLMs自动化软件工程能力评估方法。实验结果表明,LLMs在FEA-Bench上的表现明显较差,突出了此类仓库级别增量代码开发中的巨大挑战。

🔬 方法详解

问题定义:论文旨在解决大型语言模型(LLMs)在仓库级别代码库中实现新功能时缺乏有效评估的问题。现有的代码生成基准通常侧重于代码补全或单文件代码生成,无法全面评估LLMs在真实软件开发场景下的增量开发能力,尤其是在需要同时进行代码补全和编辑的情况下。

核心思路:论文的核心思路是构建一个更贴近真实软件开发场景的基准测试,即FEA-Bench。该基准通过收集GitHub仓库的pull request,模拟开发者在现有代码库中添加新功能的过程。每个任务实例包含代码更改和相应的单元测试,用于验证LLMs生成的代码是否正确实现了新功能。

技术框架:FEA-Bench的构建流程主要包括以下几个阶段:1) 从GitHub收集pull request;2) 使用基于规则和基于意图的过滤方法,筛选出与新功能开发相关的pull request;3) 将每个pull request转换为一个任务实例,包含代码更改和单元测试;4) 使用LLMs生成代码,并使用单元测试进行验证。

关键创新:FEA-Bench的关键创新在于其任务实例的构建方式。与现有的代码生成基准不同,FEA-Bench的任务实例来源于真实的软件开发项目,更贴近实际应用场景。此外,FEA-Bench要求LLMs同时具备代码补全和代码编辑能力,更全面地评估了LLMs的自动化软件工程能力。

关键设计:FEA-Bench的关键设计包括:1) 使用基于规则和基于意图的过滤方法,确保任务实例与新功能开发相关;2) 提供单元测试,用于验证LLMs生成的代码是否正确;3) 任务实例包含代码更改和上下文信息,帮助LLMs理解任务目标。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,LLMs在FEA-Bench上的表现明显低于现有基准。例如,在某项实验中,LLMs的平均通过率仅为15%,远低于在单文件代码生成任务上的表现。这表明,LLMs在处理仓库级别代码生成任务时面临着巨大的挑战,需要进一步的研究和改进。

🎯 应用场景

FEA-Bench可以用于评估和比较不同LLMs在仓库级别代码生成方面的能力,指导LLMs的改进和优化。此外,该基准还可以用于开发自动化软件工程工具,例如自动代码补全、自动代码重构等,提高软件开发的效率和质量。未来,FEA-Bench可以扩展到支持更多编程语言和软件开发场景。

📄 摘要(原文)

Implementing new features in repository-level codebases is a crucial application of code generation models. However, current benchmarks lack a dedicated evaluation framework for this capability. To fill this gap, we introduce FEA-Bench, a benchmark designed to assess the ability of large language models (LLMs) to perform incremental development within code repositories. We collect pull requests from 83 GitHub repositories and use rule-based and intent-based filtering to construct task instances focused on new feature development. Each task instance containing code changes is paired with relevant unit test files to ensure that the solution can be verified. The feature implementation requires LLMs to simultaneously possess code completion capabilities for new components and code editing abilities for other relevant parts in the code repository, providing a more comprehensive evaluation method of LLMs' automated software engineering capabilities. Experimental results show that LLMs perform significantly worse in the FEA-Bench, highlighting considerable challenges in such repository-level incremental code development.