ChatPaper.aiChatPaper

CrossCodeEval: Um Benchmark Diversificado e Multilíngue para Conclusão de Código entre Arquivos

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

Resumo

Modelos de completação de código têm feito progressos significativos nos últimos anos, porém os conjuntos de dados de avaliação populares atuais, como HumanEval e MBPP, focam predominantemente em tarefas de completação de código dentro de um único arquivo. Essa configuração excessivamente simplificada não representa adequadamente o cenário real de desenvolvimento de software, onde repositórios abrangem múltiplos arquivos com inúmeras dependências entre arquivos, e o acesso e compreensão do contexto entre arquivos são frequentemente necessários para completar o código corretamente. Para preencher essa lacuna, propomos o CrossCodeEval, um benchmark diversificado e multilíngue para completação de código que exige um entendimento profundo do contexto entre arquivos para completar o código com precisão. O CrossCodeEval é construído com base em um conjunto diversificado de repositórios reais, de código aberto e com licenças permissivas, em quatro linguagens de programação populares: Python, Java, TypeScript e C#. Para criar exemplos que exigem estritamente o contexto entre arquivos para uma completação precisa, propomos uma abordagem simples, porém eficiente, baseada em análise estática para identificar o uso do contexto entre arquivos dentro do arquivo atual. Experimentos extensivos com modelos de linguagem de código state-of-the-art, como CodeGen e StarCoder, demonstram que o CrossCodeEval é extremamente desafiador quando o contexto relevante entre arquivos está ausente, e observamos melhorias claras ao adicionar esse contexto ao prompt. No entanto, apesar dessas melhorias, o ápice do desempenho permanece notavelmente inatingido mesmo com o modelo de maior desempenho, indicando que o CrossCodeEval também é capaz de avaliar a capacidade do modelo de aproveitar contextos extensos para fazer uma melhor completação de código. Por fim, avaliamos diversos métodos de recuperação de contexto entre arquivos e mostramos que o CrossCodeEval também pode ser usado para medir a capacidade de 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