Крупные языковые модели для работы с кодом не справляются с завершением кода, содержащего потенциальные ошибки
Large Language Models of Code Fail at Completing Code with Potential Bugs
June 6, 2023
Авторы: Tuan Dinh, Jinman Zhao, Samson Tan, Renato Negrinho, Leonard Lausen, Sheng Zha, George Karypis
cs.AI
Аннотация
Крупные языковые модели для работы с кодом (Code-LLMs) недавно совершили значительный прорыв в области автодополнения кода — фундаментальной функции программной помощи и интеллектуальной работы с кодом. Однако большинство существующих исследований игнорируют возможное наличие ошибок в контексте кода, используемого для генерации, что неизбежно в процессе разработки программного обеспечения. В связи с этим мы вводим и изучаем проблему автодополнения кода с ошибками, вдохновляясь реалистичным сценарием предложения кода в реальном времени, где контекст кода содержит потенциальные ошибки — антипаттерны, которые могут превратиться в баги в завершённой программе. Для систематического изучения этой задачи мы представляем два набора данных: один с синтетическими ошибками, полученными из изменений операторов, влияющих на семантику (buggy-HumanEval), и другой с реалистичными ошибками, извлечёнными из пользовательских решений задач по программированию (buggy-FixEval). Мы обнаруживаем, что наличие потенциальных ошибок значительно ухудшает качество генерации высокопроизводительных Code-LLMs. Например, процент успешного прохождения тестовых случаев в buggy-HumanEval для модели CodeGen-2B-mono снижается более чем на 50% при наличии всего одной потенциальной ошибки в контексте. Наконец, мы исследуем несколько постобработочных методов для смягчения негативного эффекта потенциальных ошибок и обнаруживаем, что после их применения остаётся значительный разрыв в производительности.
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.