Los Modelos de Lenguaje de Gran Escala para Código Fallan al Completar Código con Posibles Errores
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
Resumen
Los grandes modelos de lenguaje para código (Code-LLMs) han logrado avances significativos recientemente en la tarea de completado de código, una característica fundamental de la asistencia en programación y la inteligencia de código. Sin embargo, la mayoría de los trabajos existentes ignoran la posible presencia de errores en el contexto del código utilizado para la generación, los cuales son inevitables en el desarrollo de software. Por ello, introducimos y estudiamos el problema de completado de código con errores, inspirado en el escenario realista de sugerencias de código en tiempo real donde el contexto contiene posibles errores —anti-patrones que pueden convertirse en fallos en el programa completado—. Para estudiar esta tarea de manera sistemática, presentamos dos conjuntos de datos: uno con errores sintéticos derivados de cambios de operadores que alteran la semántica (buggy-HumanEval) y otro con errores realistas extraídos de envíos de usuarios a problemas de programación (buggy-FixEval). Descubrimos que la presencia de posibles errores degrada significativamente el rendimiento de generación de los Code-LLMs de alto desempeño. Por ejemplo, las tasas de aprobación de CodeGen-2B-mono en los casos de prueba de buggy-HumanEval caen más del 50% ante la presencia de un solo error potencial en el contexto. Finalmente, investigamos varios métodos post-hoc para mitigar el efecto adverso de los posibles errores y encontramos que persiste una brecha considerable en el rendimiento después de la mitigación.
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.