ChatPaper.aiChatPaper

CrossCodeEval : Un benchmark diversifié et multilingue pour la complétion de code inter-fichiers

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

Résumé

Les modèles de complétion de code ont réalisé des progrès significatifs ces dernières années, mais les ensembles de données d'évaluation populaires actuels, tels que HumanEval et MBPP, se concentrent principalement sur des tâches de complétion de code au sein d'un seul fichier. Ce cadre excessivement simplifié ne représente pas adéquatement le scénario réel du développement logiciel, où les dépôts s'étendent sur plusieurs fichiers avec de nombreuses dépendances inter-fichiers, et où l'accès et la compréhension du contexte inter-fichiers sont souvent nécessaires pour compléter le code correctement. Pour combler cette lacune, nous proposons CrossCodeEval, un benchmark de complétion de code diversifié et multilingue qui nécessite une compréhension approfondie du contexte inter-fichiers pour compléter le code avec précision. CrossCodeEval est construit sur un ensemble varié de dépôts open-source réels et sous licence permissive dans quatre langages de programmation populaires : Python, Java, TypeScript et C#. Pour créer des exemples qui exigent strictement un contexte inter-fichiers pour une complétion précise, nous proposons une approche simple mais efficace basée sur l'analyse statique pour identifier l'utilisation du contexte inter-fichiers dans le fichier courant. Des expériences approfondies sur des modèles de langage de code de pointe comme CodeGen et StarCoder démontrent que CrossCodeEval est extrêmement difficile lorsque le contexte inter-fichiers pertinent est absent, et nous observons des améliorations claires lorsque ce contexte est ajouté à l'invite. Cependant, malgré ces améliorations, le sommet des performances reste notablement inatteint même avec le modèle le plus performant, indiquant que CrossCodeEval est également capable d'évaluer la capacité du modèle à exploiter un contexte étendu pour améliorer la complétion de code. Enfin, nous avons évalué diverses méthodes de récupération du contexte inter-fichiers et montrons que CrossCodeEval peut également être utilisé pour mesurer la capacité des systèmes de récupération de code.
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