Modelos de Linguagem de Grande Escala para Código Falham na Conclusão de Códigos com Potenciais Bugs
Large Language Models of Code Fail at Completing Code with Potential Bugs
June 6, 2023
Autores: Tuan Dinh, Jinman Zhao, Samson Tan, Renato Negrinho, Leonard Lausen, Sheng Zha, George Karypis
cs.AI
Resumo
Modelos de linguagem de grande escala para código (Code-LLMs) trouxeram recentemente avanços significativos para a tarefa de completar código, uma funcionalidade fundamental de assistência à programação e inteligência de código. No entanto, a maioria dos trabalhos existentes ignora a possível presença de bugs no contexto do código utilizado para geração, que são inevitáveis no desenvolvimento de software. Portanto, introduzimos e estudamos o problema de completar código com bugs, inspirado pelo cenário realista de sugestão de código em tempo real, onde o contexto do código contém potenciais bugs — antipadrões que podem se tornar bugs no programa completado. Para estudar sistematicamente essa tarefa, introduzimos dois conjuntos de dados: um com bugs sintéticos derivados de alterações de operadores que modificam a semântica (buggy-HumanEval) e outro com bugs realistas derivados de submissões de usuários a problemas de programação (buggy-FixEval). Descobrimos que a presença de potenciais bugs degrada significativamente o desempenho de geração dos Code-LLMs de alto desempenho. Por exemplo, as taxas de aprovação do CodeGen-2B-mono nos casos de teste do buggy-HumanEval caem mais de 50% diante de um único bug potencial no contexto. Por fim, investigamos vários métodos pós-hoc para mitigar o efeito adverso de bugs potenciais e constatamos que ainda há uma grande lacuna no desempenho após a mitigação.
English
Large language models of code (Code-LLMs) have recently brought tremendous
advances to code completion, a fundamental feature of programming assistance
and code intelligence. However, most existing works ignore the possible
presence of bugs in the code context for generation, which are inevitable in
software development. Therefore, we introduce and study the buggy-code
completion problem, inspired by the realistic scenario of real-time code
suggestion where the code context contains potential bugs -- anti-patterns that
can become bugs in the completed program. To systematically study the task, we
introduce two datasets: one with synthetic bugs derived from semantics-altering
operator changes (buggy-HumanEval) and one with realistic bugs derived from
user submissions to coding problems (buggy-FixEval). We find that the presence
of potential bugs significantly degrades the generation performance of the
high-performing Code-LLMs. For instance, the passing rates of CodeGen-2B-mono
on test cases of buggy-HumanEval drop more than 50% given a single potential
bug in the context. Finally, we investigate several post-hoc methods for
mitigating the adverse effect of potential bugs and find that there remains a
large gap in post-mitigation performance.