DependEval: Benchmarking LLMs for Repository Dependency Understanding
作者: Junjia Du, Yadi Liu, Hongcheng Guo, Jiawei Wang, Haojian Huang, Yunyi Ni, Zhoujun Li
分类: cs.SE, cs.CL
发布日期: 2025-03-09
💡 一句话要点
DependEval:用于评估LLM在代码仓库依赖理解能力的分层基准测试
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 大型语言模型 代码仓库理解 依赖关系识别 代码生成 基准测试
📋 核心要点
- 现有LLM在代码生成方面表现出色,但在理解复杂代码仓库的依赖关系、项目结构和多文件修改方面存在不足。
- DependEval通过构建分层基准测试,包含依赖关系识别、代码仓库构建和多文件编辑三个核心任务,来评估LLM的代码仓库理解能力。
- 实验结果表明,超过25个LLM在DependEval基准测试上存在显著的性能差距,揭示了LLM在代码仓库级别代码理解方面的局限性。
📝 摘要(中文)
大型语言模型(LLM)在代码生成方面表现出巨大的潜力,但实际软件开发需要高级的代码仓库级别推理能力,包括理解依赖关系、项目结构和管理多文件更改。然而,LLM有效理解和处理复杂代码仓库的能力尚未得到充分探索。为了应对这些挑战,我们引入了一个分层基准测试,旨在评估代码仓库依赖理解能力(DependEval)。该基准测试基于从真实网站收集的15576个代码仓库。它在来自实际代码仓库的8种编程语言上,评估模型在三个核心任务上的表现:依赖关系识别、代码仓库构建和多文件编辑。我们对超过25个LLM的评估揭示了显著的性能差距,并为代码仓库级别的代码理解提供了宝贵的见解。
🔬 方法详解
问题定义:现有的大型语言模型在代码生成方面取得了显著进展,但它们在理解和处理真实世界中复杂的代码仓库方面仍然面临挑战。具体来说,它们难以准确识别代码仓库中的依赖关系,无法正确构建代码仓库,并且在进行多文件编辑时容易出错。这些问题限制了LLM在实际软件开发中的应用。
核心思路:DependEval的核心思路是构建一个分层的基准测试,该基准测试能够全面评估LLM在代码仓库依赖理解方面的能力。通过设计三个核心任务(依赖关系识别、代码仓库构建和多文件编辑),DependEval能够从不同维度考察LLM对代码仓库的理解程度。
技术框架:DependEval基准测试的整体框架包括数据收集、任务定义和评估指标三个主要部分。首先,从真实的开源代码仓库中收集大量数据,涵盖多种编程语言。然后,基于这些数据定义三个核心任务:依赖关系识别(识别代码仓库中的依赖关系)、代码仓库构建(根据代码仓库的结构构建可执行程序)和多文件编辑(根据给定的需求修改代码仓库中的多个文件)。最后,使用预定义的评估指标来衡量LLM在每个任务上的表现。
关键创新:DependEval最重要的技术创新点在于其分层评估体系。它不仅仅关注LLM的代码生成能力,更关注LLM对代码仓库整体结构的理解和推理能力。这种分层评估体系能够更全面、更准确地评估LLM在实际软件开发中的应用潜力。与现有的代码生成基准测试相比,DependEval更加注重代码仓库级别的理解,而非单个文件的代码生成。
关键设计:DependEval的关键设计包括任务的难度分级和评估指标的选择。每个任务都设计了不同的难度级别,以区分LLM在不同能力水平上的表现。评估指标的选择也充分考虑了任务的特点,例如,在依赖关系识别任务中,使用精确率、召回率和F1值来评估LLM的识别准确率;在代码仓库构建任务中,使用构建成功率来评估LLM的构建能力;在多文件编辑任务中,使用编辑后的代码是否能够通过测试用例来评估LLM的编辑质量。
🖼️ 关键图片
📊 实验亮点
DependEval对超过25个LLM进行了评估,结果表明这些模型在代码仓库依赖理解方面存在显著的性能差距。例如,在依赖关系识别任务中,一些模型的F1值仅为0.3,而另一些模型可以达到0.7。在代码仓库构建任务中,构建成功率也存在较大差异。这些结果表明,现有的LLM在代码仓库理解方面仍有很大的提升空间。
🎯 应用场景
DependEval的研究成果可以应用于评估和改进LLM在软件开发领域的应用。它可以帮助开发者选择更适合特定任务的LLM,并指导研究人员开发更强大的代码理解和生成模型。此外,DependEval还可以用于自动化代码审查、代码重构和软件维护等任务,提高软件开发的效率和质量。
📄 摘要(原文)
While large language models (LLMs) have shown considerable promise in code generation, real-world software development demands advanced repository-level reasoning. This includes understanding dependencies, project structures, and managing multi-file changes. However, the ability of LLMs to effectively comprehend and handle complex code repositories has yet to be fully explored. To address challenges, we introduce a hierarchical benchmark designed to evaluate repository dependency understanding (DependEval). Benchmark is based on 15,576 repositories collected from real-world websites. It evaluates models on three core tasks: Dependency Recognition, Repository Construction, and Multi-file Editing, across 8 programming languages from actual code repositories. Our evaluation of over 25 LLMs reveals substantial performance gaps and provides valuable insights into repository-level code understanding.