ChatPaper.aiChatPaper

CrossCodeEval: Ein vielfältiger und mehrsprachiger Benchmark für die dateiübergreifende Code-Vervollständigung

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

October 17, 2023
Autoren: 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

Zusammenfassung

Code-Completion-Modelle haben in den letzten Jahren erhebliche Fortschritte gemacht, doch die derzeit beliebten Evaluierungsdatensätze wie HumanEval und MBPP konzentrieren sich überwiegend auf Code-Completion-Aufgaben innerhalb einer einzelnen Datei. Diese stark vereinfachte Darstellung entspricht nicht dem realen Softwareentwicklungsszenario, in dem Repositorys häufig mehrere Dateien mit zahlreichen dateiübergreifenden Abhängigkeiten umfassen und der Zugriff auf sowie das Verständnis von dateiübergreifendem Kontext oft erforderlich sind, um den Code korrekt zu vervollständigen. Um diese Lücke zu schließen, schlagen wir CrossCodeEval vor, einen vielfältigen und mehrsprachigen Code-Completion-Benchmark, der ein tiefgreifendes Verständnis von dateiübergreifendem Kontext erfordert, um den Code präzise zu vervollständigen. CrossCodeEval basiert auf einer Vielzahl von realen, quelloffenen und permissiv lizenzierten Repositorys in vier beliebten Programmiersprachen: Python, Java, TypeScript und C#. Um Beispiele zu erstellen, die strikt dateiübergreifenden Kontext für eine genaue Vervollständigung benötigen, schlagen wir einen einfachen, aber effizienten statischen Analyseansatz vor, um die Verwendung von dateiübergreifendem Kontext innerhalb der aktuellen Datei zu identifizieren. Umfangreiche Experimente mit state-of-the-art Code-Sprachmodellen wie CodeGen und StarCoder zeigen, dass CrossCodeEval äußerst herausfordernd ist, wenn der relevante dateiübergreifende Kontext fehlt, und wir deutliche Verbesserungen feststellen, wenn dieser Kontext in die Eingabeaufforderung integriert wird. Trotz dieser Verbesserungen wird jedoch selbst mit dem leistungsstärksten Modell das Leistungsmaximum nicht erreicht, was darauf hindeutet, dass CrossCodeEval auch in der Lage ist, die Fähigkeit eines Modells zu bewerten, umfangreichen Kontext zu nutzen, um bessere Code-Vervollständigungen zu erzielen. Schließlich haben wir verschiedene Methoden zur Extraktion von dateiübergreifendem Kontext verglichen und zeigen, dass CrossCodeEval auch dazu verwendet werden kann, die Fähigkeiten von Code-Retrieval-Systemen zu messen.
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