ChatPaper.aiChatPaper

I grandi modelli linguistici per il codice falliscono nel completare codice con potenziali bug

Large Language Models of Code Fail at Completing Code with Potential Bugs

June 6, 2023
Autori: Tuan Dinh, Jinman Zhao, Samson Tan, Renato Negrinho, Leonard Lausen, Sheng Zha, George Karypis
cs.AI

Abstract

I grandi modelli linguistici per il codice (Code-LLMs) hanno recentemente portato enormi progressi nel completamento del codice, una funzionalità fondamentale dell'assistenza alla programmazione e dell'intelligenza del codice. Tuttavia, la maggior parte dei lavori esistenti ignora la possibile presenza di bug nel contesto del codice utilizzato per la generazione, che sono inevitabili nello sviluppo del software. Pertanto, introduciamo e studiamo il problema del completamento del codice con bug, ispirati dallo scenario realistico dei suggerimenti di codice in tempo reale in cui il contesto del codice contiene potenziali bug — anti-pattern che possono trasformarsi in bug nel programma completato. Per studiare sistematicamente il compito, introduciamo due dataset: uno con bug sintetici derivati da cambiamenti di operatori che alterano la semantica (buggy-HumanEval) e uno con bug realistici derivati da invii di utenti a problemi di codifica (buggy-FixEval). Troviamo che la presenza di potenziali bug degrada significativamente le prestazioni di generazione degli Code-LLM ad alte prestazioni. Ad esempio, i tassi di successo di CodeGen-2B-mono sui casi di test di buggy-HumanEval diminuiscono di oltre il 50% in presenza di un singolo potenziale bug nel contesto. Infine, indaghiamo diversi metodi post-hoc per mitigare l'effetto negativo dei potenziali bug e troviamo che rimane un ampio divario nelle prestazioni post-mitigazione.
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.
PDF20December 15, 2024