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.