"Записки научных семинаров ПОМИ"
Том 540, стр. 233-251
Как обеспечить надежный код: использование статического анализатора для
выявления и устранения дефектов в автоматически порожденном коде
Д. Шайхелисламов, М. Дробышевский, А. Белеванцев
Ivannikov Institute for System Programming
of the Russian Academy of Sciences;
Moscow Institute of Physics and Technology (National Research University);
HSE University, Moscow, Russia
shaykhelislamov.ds@ispras.ru
Ivannikov Institute for System Programming
of the Russian Academy of Sciences;
Moscow Institute of Physics and Technology
(National Research University);
ISP RAS Research Center for Trusted Artificial Intelligence, Moscow, Russia
drobyshevsky@ispras.ru
Ivannikov Institute for System Programming
of the Russian Academy of Sciences;
Moscow State University, Moscow, Russia
abel@ispras.ru
- Аннотация:
Развитие больших языковых моделей (LLM) значительно расширило возможности
порождения кода. Недавний опрос на StackOverflow показал, что 70% разработчиков
используют или планируют использовать инструменты ИИ в разработке кода.
Однако большинство существующих методов сосредоточены на задачах дообучения
с учителем, заимствованных из порождения текстов, что часто упускает такие
важные особенности кода, как возможность компиляции и синтаксическая
и функциональная корректность. Для решения этой проблемы мы предлагаем новый подход,
сочетающий предобученные LLMs с инструментами анализа программного обеспечения,
которые широко используются для обнаружения уязвимостей и проверки кода.
Наш метод использует подробную обратную связь от компилятора и инструментов
анализа кода, интегрируя эти специализированные знания в процесс
порождения подсказок. Мы представляем CodePatchLLM, расширение больших
языковых моделей, использующее Svace для улучшения порождения кода.
Это универсальный фреймворк, поддерживающий несколько языков программирования.
Обширное экспериментальное исследование на наборе данных LeetCode показывает,
что наш подход превосходит базовую модель CodeLlama, значительно улучшая
показатели успешности компиляции и функциональной корректности для Java,
Python и Kotlin. Код CodePatchLLM доступен по адресу
https://github.com/dsshay/CodePatchLLM.
Библ. -- 55 назв.
- Ключевые слова: большие языковые модели, статический анализатор, качество кода
[large language models, static analyzer, code quality]
Полный текст(.pdf)