ChatPaper.aiChatPaper

CrossCodeEval: Un Benchmark Diversificato e Multilingue per il Completamento di Codice Cross-File

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

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

Abstract

I modelli di completamento del codice hanno compiuto progressi significativi negli ultimi anni, tuttavia i dataset di valutazione attualmente più popolari, come HumanEval e MBPP, si concentrano principalmente su task di completamento del codice all'interno di un singolo file. Questo contesto eccessivamente semplificato non rappresenta adeguatamente lo scenario reale dello sviluppo software, in cui i repository si estendono su più file con numerose dipendenze tra file, e l'accesso e la comprensione del contesto tra file sono spesso necessari per completare correttamente il codice. Per colmare questa lacuna, proponiamo CrossCodeEval, un benchmark diversificato e multilingue per il completamento del codice che richiede una comprensione approfondita del contesto tra file per completare il codice in modo accurato. CrossCodeEval è costruito su un insieme variegato di repository open-source reali, con licenze permissive, in quattro linguaggi di programmazione popolari: Python, Java, TypeScript e C#. Per creare esempi che richiedano strettamente il contesto tra file per un completamento accurato, proponiamo un approccio semplice ma efficiente basato sull'analisi statica per identificare l'uso del contesto tra file all'interno del file corrente. Esperimenti estesi su modelli linguistici di codice all'avanguardia come CodeGen e StarCoder dimostrano che CrossCodeEval è estremamente impegnativo quando il contesto rilevante tra file è assente, e osserviamo chiari miglioramenti quando tale contesto viene aggiunto al prompt. Tuttavia, nonostante questi miglioramenti, il picco delle prestazioni rimane notevolmente irraggiungibile anche con il modello più performante, indicando che CrossCodeEval è anche in grado di valutare la capacità del modello di sfruttare un contesto esteso per migliorare il completamento del codice. Infine, abbiamo valutato vari metodi per il recupero del contesto tra file e dimostrato che CrossCodeEval può essere utilizzato anche per misurare la capacità dei sistemi di recupero del codice.
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