Große Sprachmodelle für Code scheitern bei der Vervollständigung von Code mit potenziellen Fehlern
Large Language Models of Code Fail at Completing Code with Potential Bugs
June 6, 2023
Autoren: Tuan Dinh, Jinman Zhao, Samson Tan, Renato Negrinho, Leonard Lausen, Sheng Zha, George Karypis
cs.AI
Zusammenfassung
Große Sprachmodelle für Code (Code-LLMs) haben in letzter Zeit enorme Fortschritte bei der Code-Vervollständigung gebracht, einer grundlegenden Funktion von Programmierassistenz und Code-Intelligenz. Die meisten bestehenden Arbeiten ignorieren jedoch die mögliche Präsenz von Fehlern im Code-Kontext für die Generierung, die in der Softwareentwicklung unvermeidlich sind. Daher führen wir das Problem der fehlerhaften Code-Vervollständigung ein und untersuchen es, inspiriert durch das realistische Szenario der Echtzeit-Code-Vorschläge, bei dem der Code-Kontext potenzielle Fehler enthält – Anti-Patterns, die zu Fehlern im vervollständigten Programm führen können. Um die Aufgabe systematisch zu untersuchen, stellen wir zwei Datensätze vor: einen mit synthetischen Fehlern, die aus semantikverändernden Operatoränderungen abgeleitet sind (buggy-HumanEval), und einen mit realistischen Fehlern, die aus Benutzereinreichungen zu Codierungsproblemen stammen (buggy-FixEval). Wir stellen fest, dass die Präsenz potenzieller Fehler die Generierungsleistung der leistungsstarken Code-LLMs erheblich beeinträchtigt. Beispielsweise sinken die Erfolgsraten von CodeGen-2B-mono bei den Testfällen von buggy-HumanEval um mehr als 50 %, wenn ein einziger potenzieller Fehler im Kontext vorhanden ist. Schließlich untersuchen wir mehrere nachträgliche Methoden zur Minderung der negativen Auswirkungen potenzieller Fehler und stellen fest, dass eine große Lücke in der Leistung nach der Minderung bleibt.
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.