ChatPaper.aiChatPaper

CrossCodeEval: Een gevarieerd en meertalig benchmark voor cross-file codecompletie

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

October 17, 2023
Auteurs: Yangruibo Ding, Zijian Wang, Wasi Uddin Ahmad, Hantian Ding, Ming Tan, Nihal Jain, Murali Krishna Ramanathan, Ramesh Nallapati, Parminder Bhatia, Dan Roth, Bing Xiang
cs.AI

Samenvatting

Code completion-modellen hebben de afgelopen jaren aanzienlijke vooruitgang geboekt, maar de huidige populaire evaluatiedatasets, zoals HumanEval en MBPP, richten zich voornamelijk op code completion-taken binnen één bestand. Deze te vereenvoudigde setting schiet tekort in het weergeven van het real-world softwareontwikkelingsscenario, waarbij repositories meerdere bestanden omvatten met talrijke kruisbestandsafhankelijkheden, en het toegang krijgen tot en begrijpen van kruisbestandscontext vaak vereist is om de code correct te voltooien. Om deze kloof te dichten, stellen we CrossCodeEval voor, een diverse en meertalige code completion-benchmark die een diepgaand begrip van kruisbestandscontext vereist om de code nauwkeurig te voltooien. CrossCodeEval is gebouwd op een diverse set van real-world, open-source, permissief gelicenseerde repositories in vier populaire programmeertalen: Python, Java, TypeScript en C#. Om voorbeelden te creëren die strikt kruisbestandscontext vereisen voor nauwkeurige voltooiing, stellen we een eenvoudige maar efficiënte statische-analyse-gebaseerde aanpak voor om het gebruik van kruisbestandscontext binnen het huidige bestand te identificeren. Uitgebreide experimenten met state-of-the-art code-taalmodelen zoals CodeGen en StarCoder tonen aan dat CrossCodeEval extreem uitdagend is wanneer de relevante kruisbestandscontext ontbreekt, en we zien duidelijke verbeteringen wanneer deze context aan de prompt wordt toegevoegd. Echter, ondanks deze verbeteringen, blijft het hoogtepunt van de prestaties opmerkelijk onbereikt, zelfs met het best presterende model, wat aangeeft dat CrossCodeEval ook in staat is om het vermogen van modellen te beoordelen om uitgebreide context te benutten voor betere code completion. Ten slotte hebben we verschillende methoden voor het ophalen van kruisbestandscontext gebenchmarkt, en laten we zien dat CrossCodeEval ook gebruikt kan worden om het vermogen van code-retrievers te meten.
English
Code completion models have made significant progress in recent years, yet current popular evaluation datasets, such as HumanEval and MBPP, predominantly focus on code completion tasks within a single file. This over-simplified setting falls short of representing the real-world software development scenario where repositories span multiple files with numerous cross-file dependencies, and accessing and understanding cross-file context is often required to complete the code correctly. To fill in this gap, we propose CrossCodeEval, a diverse and multilingual code completion benchmark that necessitates an in-depth cross-file contextual understanding to complete the code accurately. CrossCodeEval is built on a diverse set of real-world, open-sourced, permissively-licensed repositories in four popular programming languages: Python, Java, TypeScript, and C#. To create examples that strictly require cross-file context for accurate completion, we propose a straightforward yet efficient static-analysis-based approach to pinpoint the use of cross-file context within the current file. Extensive experiments on state-of-the-art code language models like CodeGen and StarCoder demonstrate that CrossCodeEval is extremely challenging when the relevant cross-file context is absent, and we see clear improvements when adding these context into the prompt. However, despite such improvements, the pinnacle of performance remains notably unattained even with the highest-performing model, indicating that CrossCodeEval is also capable of assessing model's capability in leveraging extensive context to make better code completion. Finally, we benchmarked various methods in retrieving cross-file context, and show that CrossCodeEval can also be used to measure the capability of code retrievers.
PDF41December 15, 2024