CrossCodeEval: A Diverse and Multilingual Benchmark for Cross-File Code Completion

2023年10月17日
  • 简介
    代码补全模型在最近几年取得了显著进展,但是当前流行的评估数据集,如HumanEval和MBPP,主要集中在单个文件的代码补全任务上。这种过于简化的设置不能很好地代表现实世界的软件开发场景,其中存储库跨越多个文件,具有众多跨文件依赖关系,需要访问和理解跨文件上下文才能正确完成代码。 为了填补这一空白,我们提出了CrossCodeEval,这是一个多语言、多样化的代码补全基准,需要深入的跨文件上下文理解才能准确地完成代码。CrossCodeEval建立在四种流行编程语言(Python、Java、TypeScript和C#)的多样真实、开源、自由许可证存储库上。为了创建严格要求跨文件上下文以实现准确完成的示例,我们提出了一种简单而有效的基于静态分析的方法,用于确定当前文件中使用跨文件上下文的位置。 对于像CodeGen和StarCoder这样的最先进的代码语言模型的广泛实验表明,当相关的跨文件上下文缺失时,CrossCodeEval极具挑战性,在添加这些上下文到提示中时,我们看到了明显的改进。然而,尽管有这样的改进,即使使用最高性能的模型,性能的巅峰仍然明显未达到,这表明CrossCodeEval也能够评估模型利用广泛上下文以实现更好的代码补全的能力。最后,我们评估了各种检索跨文件上下文的方法,并展示了CrossCodeEval也可用于测量代码检索器的能力。
  • 图表
  • 解决问题
    论文旨在解决的问题是当前流行的代码补全模型评估数据集过于简化,无法有效地评估跨文件上下文的代码补全能力。论文提出了一个新的多语言、多样化的代码补全基准测试集CrossCodeEval,旨在评估模型对跨文件上下文的理解和利用能力。
  • 关键思路
    论文的关键思路是建立一个多语言、多样化、需要跨文件上下文理解的代码补全基准测试集CrossCodeEval,并提出了一个简单而有效的静态分析方法来确定当前文件中需要跨文件上下文才能正确完成代码的位置。
  • 其它亮点
    论文的实验使用了多个流行的编程语言,包括Python、Java、TypeScript和C#,并对多个代码语言模型进行了测试。CrossCodeEval测试集非常具有挑战性,因为缺少相关的跨文件上下文会导致模型的表现下降。此外,论文还探讨了不同的跨文件上下文检索方法,并指出CrossCodeEval也可用于评估代码检索器的能力。论文的代码和数据集也已经开源。
  • 相关研究
    近期相关研究包括:1. HumanEval:一个用于代码补全评估的数据集,但只考虑单个文件内的代码补全。2. MBPP:一个用于代码补全评估的数据集,但是同样只考虑单个文件内的代码补全。
许愿开讲
PDF
原文
点赞 收藏
向作者提问
NEW
分享到Link

提问交流

提交问题,平台邀请作者,轻松获得权威解答~

向作者提问