CROSSCODEEVAL
收藏arXiv2023-11-17 更新2024-06-21 收录
下载链接:
https://crosscodeeval.github.io
下载链接
链接失效反馈官方服务:
资源简介:
CROSSCODEEVAL是一个多语言、多样化的代码补全基准数据集,旨在评估模型在跨文件上下文中准确完成代码的能力。该数据集由Python、Java、TypeScript和C#四种流行编程语言的1000个开源许可仓库中的10000个示例组成。创建过程中,采用基于静态分析的方法来识别严格需要跨文件上下文的代码片段,并确保数据集与现有代码预训练模型的训练数据无重叠,以避免数据泄露和记忆问题。CROSSCODEEVAL不仅用于评估代码补全能力,还可作为代码检索能力的基准,推动未来在利用广泛上下文进行代码补全和改进代码检索方法方面的研究。
CROSSCODEEVAL is a multilingual, diverse code completion benchmark dataset designed to evaluate a model's ability to accurately complete code within cross-file contexts. This dataset consists of 10,000 examples sourced from 1,000 open-source licensed repositories across four popular programming languages: Python, Java, TypeScript, and C#. During its creation, a static analysis-based method was employed to identify code snippets that strictly require cross-file contexts, and measures were taken to ensure no overlap between this dataset and the training data of existing code pre-trained models to avoid data leakage and memorization issues. CROSSCODEEVAL can be used not only to evaluate code completion capabilities, but also as a benchmark for code retrieval performance, advancing future research on code completion leveraging extensive contexts and improving code retrieval methodologies.
提供机构:
哥伦比亚大学
创建时间:
2023-10-17
搜集汇总
数据集介绍

构建方式
CROSSCODEEVAL数据集采用了一种静态分析的方法来自动识别代码片段中跨文件上下文的使用。首先,它寻找原始文件中所有的项目内导入,然后为每个导入的名称创建一个空类以替换导入语句。由于导入的名称现在引用一个空类,所以对其成员函数或属性的任何后续调用都会引发未定义名称错误。利用静态分析捕获修改文件中的这些错误,这些错误精确地对应于原始文件中只能通过跨文件上下文解决的名字。将未定义名称的位置映射回原始文件,以确定提示和参考的分割点。为了增加数据集的多样性,随机选择跨文件实体之前同一行中的tree-sitter标记作为光标位置,将代码分割为提示和参考。如果同一个未定义名称在文件中的多个地方报告,则只保留第一次出现。这种方法在Python、Java、TypeScript和C#这四种流行编程语言中进行了实例化。
特点
CROSSCODEEVAL数据集的特点在于其多样性和跨文件上下文的必要性。它包含来自1000个存储库的10k个示例,涵盖Python、Java、TypeScript和C#四种语言。与现有数据集不同,CROSSCODEEVAL要求严格依赖跨文件上下文才能正确完成代码。该数据集的示例是从现有的开源存储库中精心挑选出来的,经过一系列质量过滤器,确保CROSSCODEEVAL与现有代码语言模型的训练数据最小重叠,避免了数据泄露和记忆效应的问题。此外,CROSSCODEEVAL还包含了参考代码后面的代码行,可以用于评估代码语言模型的填充中间(FIM)能力。
使用方法
使用CROSSCODEEVAL数据集进行评估时,研究者可以采用多种设置,包括仅提供当前文件上下文、检索跨文件上下文以及使用参考完成进行检索。这些设置可以帮助评估代码语言模型在处理跨文件代码完成任务时的性能。为了评估代码检索方法,CROSSCODEEVAL还提供了一个代码检索基准。研究者可以使用不同的检索器,从稀疏的BM25到神经网络的UniXCoder和OpenAI嵌入,来评估代码检索的准确性。CROSSCODEEVAL旨在促进跨文件代码完成和代码检索方面的研究,为评估代码语言模型的能力提供了一种新的工具。
背景与挑战
背景概述
在代码补全模型领域,CROSSCODEEVAL数据集的创建旨在解决现有评估数据集未能充分反映现实软件开发中跨文件依赖的问题。该数据集由Yangruibo Ding等研究人员于2023年11月提出,旨在评估代码语言模型在理解和利用跨文件上下文以完成代码的能力。CROSSCODEEVAL数据集基于来自GitHub的1,000个开源代码仓库,涵盖了Python、Java、TypeScript和C#四种流行编程语言。该数据集的构建基于静态分析,确保了示例的质量,并尽可能减少与现有代码语言模型训练数据集的重叠,以避免数据泄露和记忆效应。CROSSCODEEVAL数据集的创建对于推动代码补全模型的评估和发展具有重要意义。
当前挑战
CROSSCODEEVAL数据集面临着多方面的挑战。首先,它旨在解决的领域问题是代码补全,但需要更深入地理解跨文件上下文,这要求模型在处理复杂依赖关系时具备更高的能力。其次,在构建过程中,研究人员采用了基于静态分析的方法来识别代码片段,这要求对每种编程语言都有深入的了解,并能够有效地处理跨文件上下文的使用。此外,CROSSCODEEVAL数据集的评估结果表明,即使提供了跨文件上下文,目前最先进的模型性能仍有很大的提升空间,这表明了在代码补全领域,如何有效地利用广泛的上下文信息以及开发更好的代码检索器仍然是未来的重要研究方向。
常用场景
经典使用场景
CROSSCODEEVAL数据集被设计用于评估代码语言模型在跨文件代码补全任务中的能力。该数据集要求模型在完成代码时必须理解跨文件的上下文,这在现实世界中的软件开发中是至关重要的。CROSSCODEEVAL通过静态分析的方式自动识别需要跨文件上下文的代码片段,并从真实的开源代码库中构建了包含四种流行编程语言(Python、Java、TypeScript和C#)的例子。该数据集对于推动代码语言模型在处理复杂软件库中的跨文件依赖方面具有重要意义。
实际应用
CROSSCODEEVAL数据集的实际应用场景包括代码补全工具、代码生成工具和代码理解工具。代码补全工具可以利用CROSSCODEEVAL数据集来提高其跨文件代码补全的准确性。代码生成工具可以利用CROSSCODEEVAL数据集来生成更符合真实软件开发场景的代码。代码理解工具可以利用CROSSCODEEVAL数据集来提高其理解跨文件代码依赖的能力。
衍生相关工作
CROSSCODEEVAL数据集的发布促进了代码语言模型在跨文件代码补全方面的研究。研究人员可以利用CROSSCODEEVAL数据集来开发新的代码补全模型、代码生成模型和代码理解模型。此外,CROSSCODEEVAL数据集还可以用于评估代码检索方法的有效性。
以上内容由遇见数据集搜集并总结生成



