ChatPaper.aiChatPaper

CrossCodeEval: Un punto de referencia diverso y multilingüe para la finalización de código entre archivos

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

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

Resumen

Los modelos de completado de código han logrado avances significativos en los últimos años, sin embargo, los conjuntos de datos de evaluación populares actuales, como HumanEval y MBPP, se centran predominantemente en tareas de completado de código dentro de un solo archivo. Este escenario excesivamente simplificado no representa adecuadamente el escenario real de desarrollo de software, donde los repositorios abarcan múltiples archivos con numerosas dependencias entre archivos, y a menudo es necesario acceder y comprender el contexto entre archivos para completar el código correctamente. Para llenar este vacío, proponemos CrossCodeEval, un benchmark diverso y multilingüe para el completado de código que requiere una comprensión profunda del contexto entre archivos para completar el código con precisión. CrossCodeEval se construye sobre un conjunto diverso de repositorios de código abierto del mundo real, con licencias permisivas, en cuatro lenguajes de programación populares: Python, Java, TypeScript y C#. Para crear ejemplos que requieran estrictamente el contexto entre archivos para un completado preciso, proponemos un enfoque sencillo pero eficiente basado en análisis estático para identificar el uso de contexto entre archivos dentro del archivo actual. Experimentos extensos con modelos de lenguaje de código de última generación como CodeGen y StarCoder demuestran que CrossCodeEval es extremadamente desafiante cuando el contexto relevante entre archivos está ausente, y observamos mejoras claras al agregar este contexto al prompt. Sin embargo, a pesar de estas mejoras, el máximo rendimiento no se alcanza ni siquiera con el modelo de mayor rendimiento, lo que indica que CrossCodeEval también es capaz de evaluar la capacidad del modelo para aprovechar un contexto extenso y realizar un mejor completado de código. Finalmente, evaluamos varios métodos para recuperar el contexto entre archivos y demostramos que CrossCodeEval también puede utilizarse para medir la capacidad de los recuperadores de código.
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