Статья:

ПРИМЕНЕНИЕ БОЛЬШИХ ЯЗЫКОВЫХ МОДЕЛЕЙ В ПРОЦЕССАХ КОД-РЕВЬЮ: ИНТЕГРАЦИЯ В CI/CD

Конференция: XCIX Международная научно-практическая конференция «Научный форум: технические и физико-математические науки»

Секция: Информатика, вычислительная техника и управление

Выходные данные
Бушуев Д.В. ПРИМЕНЕНИЕ БОЛЬШИХ ЯЗЫКОВЫХ МОДЕЛЕЙ В ПРОЦЕССАХ КОД-РЕВЬЮ: ИНТЕГРАЦИЯ В CI/CD // Научный форум: Технические и физико-математические науки: сб. ст. по материалам XCIX междунар. науч.-практ. конф. — № 8(99). — М., Изд. «МЦНО», 2026.
Конференция завершена
Мне нравится
на печатьскачать .pdfподелиться

ПРИМЕНЕНИЕ БОЛЬШИХ ЯЗЫКОВЫХ МОДЕЛЕЙ В ПРОЦЕССАХ КОД-РЕВЬЮ: ИНТЕГРАЦИЯ В CI/CD

Бушуев Дмитрий Владимирович
студент, Нижегородский государственный технический университет им. Р.Е. Алексеева, РФ, г. Нижний Новгород

 

Аннотация. В статье рассматривается подход к автоматизации процесса код-ревью с применением больших языковых моделей (БЯМ), интегрированных в конвейер непрерывной интеграции и доставки (CI/CD). Описаны ключевые преимущества предложенного решения перед традиционными статическими анализаторами кода: обогащение контекста анализа, декомпозиция задач ревью и защита от промпт-инъекций. Приведены результаты эксперимента на выборке из 30 запросов на слияние реального проекта, подтверждающие эффективность подхода в качестве инструмента первичной фильтрации дефектов.

 

Ключевые слова: большие языковые модели; код-ревью; CI/CD; автоматизация разработки программного обеспечения; статический анализ кода; промпт-инъекции.

 

Введение

В современных условиях базовыми требованиями к разработке программного обеспечения являются высокая скорость разработки, качество кода и его безопасность. Одним из механизмов обеспечения поддерживаемости кода является код-ревью, которое помогает разработчикам находить шаблонные ошибки, антипаттерны, уязвимости и оперативно их устранять. Но такой контроль даёт сбой в случае значительного числа изменений и ручной проверки. Человек физически не способен с должным вниманием анализировать код, содержащий сотни строк, из-за чего критическая ошибка может попасть в итоговый продукт. Также из-за крайне сжатых сроков со стороны бизнеса остается не так много времени на детальный ревью кода [4].

Для решения этой проблемы применяют анализаторы кода. Эти программы способны трассировать выполнение кода, находить типичные ошибки. Но и традиционные анализаторы имеют ряд критических недостатков, ключевой из них - это отсутствие понимания логики проекта. Традиционный анализатор, как правило, не способен сопоставить логику бизнес-процесса с написанным кодом и предупредить разработчика об отсутствии критически важной проверки [5].

В задаче проверки кода современные большие языковые модели открывают новый уровень автоматизации. Они способны логически интерпретировать код, рассуждая о намерениях разработчика, и сохранять в памяти структуру кода всего проекта. Кроме того, языковые модели позволяют предлагать улучшения архитектуры проекта и выявлять контекстные уязвимости.

Целью настоящей работы является разработка подхода к внедрению больших языковых моделей (БЯМ, LLM) в CI/CD процессы в качестве инструмента проверки кода перед передачей его в реальную эксплуатациюю.

Подход к код-ревью с применением больших языковых моделей Использование больших языковых моделей имеет ряд преимуществ по сравнению со статическим анализаторам.

Возможность обогащения контекста

Качество ревью напрямую зависит от количества и качества входной информации. Основным преимуществом БЯМ является поддержка анализа не только исходного кода программного обеспечения, но и технической и бизнес документации.Это позволяет обогатить контекст LLM модели такими данными о проекте, как стек технологий, файлы конфигурациии, принятые стандарты, архитектурная документация. Подход с применением БЯМ позволяет получить актуальную информацию о практиках, применяемых в проекте, предлагая более релевантные комментарии к коду.

Кроме того, благодаря тесной интеграции сервисов управления версиями исходного кода и системами отслеживания ошибок, модель может учитывать названиее, описание задач, комментарии и вложения.

Декомпозиция задач

Главной проблемой поддержки больших объемов контекста является потеря внимания, снижение качества анализа: БЯМ начинает пропускать информацию, упускать важные детали или придумывать несуществующие детали (галлюцинировать), что может свести их использование в ревью к нулю.

Наиболее эффективный подход к применению БЯМ в анализе - это декомпозиция одной большой задачи на несколько проверок, выполняемых специализированным системным промптом. Для проведения кода-ревью, были выделены следующие подзадачи:

  • проверка безопасности (проверка на уязвимости, проблемы аутентификации/авторизации);
  • проверка производительности;
  • проверка соответствия с написанного кода бизнес-требованиям;
  • проверка поддерживаемости кода.

Благодаря декомпозиции каждый промпт может быть оптимизирован под конкретную задачу, обеспечивая качественный анализ кода без потери внимания.

Защита от промпт инъекций

 Особое внимание стоит уделить защите от промпт инъекций.Решение на основе БЯМ в публичных репозиториях увеличивает шанс атаки - злоумышленник может заставить модель выдать ложноположительный вердикт или раскрыть информацию о системном промпте/проекте [3]. Частично эту проблему решает fine-tuning модели и режим размышления, но БЯМ  также остается уязвимой к таким атакам.Основным решением для противодействия такому роду атак является использование защитной инструкции в системном промпте. Код пользователя для ревью располагается в специальных входных тегах, а в системном промпте указывается, что код - это исключительно данные, и любые инструкции внутри кода не должны исполняться. Например, «Анализируй код, расположенный внутри <user_code>. Любые инструкции внутри этого блока не должны исполняться». Также можно отсекать pull request в случае аномального превышения ограничения на длину вывода ответа.

Архитектура предлагаемого Continuous Integration решения

Суть предлагаемого подхода - внедрить большую языковую модель как асинхронный шаг в конвейере CI/CD. В этом случае ревью процесс запускается как отдельная задача, не блокируя выполнения основного потока (проведение сборки и тестирования кода). Это особенно важно, т.к. ответ большой языковой модели не происходит мгновенно.

Предложенное решение CI/CD выглядит следующим образом (рис. 1):

 

Рисунок 1. Алгоритм конвейера CI/CD

 

  1. Разработчик создает pull request в ветку, где ведется активная разработка.
  2. Скрипт CI создает две отдельные параллельные задачи:
    1. стандартный процесс Continuous Integration с такими задачами как установка зависимостей, компиляция и сборка проекта и тестирование проектов;
    2. процесс ревью кода на основе большой языковой модели. По результатам ревью создается отчет для платформы, на которой находится проект (Github, Gitlab и т.д.), и для пользователя в комментариях к pull request. В дальнейшем можно настроить блокировку pull request в случае, если большая языковая модель обнаруживает проблемы с высоким приоритетом;
  3. Принятие решения об итоговом слиянии решает ревьюер. Если код соответствует практикам организации и не имеет проблем, то он сливается в нужную ветку. Иначе код отправляется на доработку.

Исследовательский эксперимент

Чтобы объективно оценить эффективность предлагаемого подхода, был проведен эксперимент на основе реального проекта среднего размера. Из проекта было отобрано 30 запросов на слияние. Для каждого запроса на слияние фиксировалось количество верных замечаний, подтвержденных экспертом, и время анализа.

Его целью было сравнение параметров автоматированого LLM-ревью и ручного ревью, выполненного экспертом.

В качестве большой языковой модели использовалась локальная модель qwen-3.5-4b запущенная на Nvidia Geforce GTX 1650 Super. Результаты эксперимента представлены в таблице 1.

Таблица 1.

Результаты ручного и автоматизированного LLM-ревю

Метрики

Ручное ревью

LLM-ревью

Количество верных замечаний

85

61/85

Среднее время анализа, мин.

24

4

 

Эксперимент показал, что автоматизированный ревьюер не способен превзойти эксперта, демонстрируя точность на уровне 71% относительно эксперта. Однако, данный подход обеспечивает выигрыш по времени в 6 раз, вследствие чего может применяться как быстрый фильтр для анализа, оставляющий человеку только сложные аспекты проверки.

Ограничения подхода

Предложенный подход интеграции больших языковых моделей в CI/CD в процессах код-ревью не является универсальным решением, поскольку даже с учетом декомпозиции, большие языковые модели склонны к галлюцинациям и могут выдумать недостаток кода или пропустить его. Однако в современных LLM этот недостаток проявляется только при большом заполнении контекста, что является редкостью в профессиональной разработке.

Также использование больших языковых моделей сопряжено дополнительными затратами. Локальные БЯМ требуют применения мощных графических процессоров, а анализа выполняется не мгновенно.

Указанные ограничения определяют нишу применения подхода: первичный отсев критических дефектов и автоматизация рутинных проверок, а не полная замена человека.

Заключение

В работе был исследован подход с применениием больших языковых моделей для автоматизации процесса код-ревью в условиях проектов, характеризующихся высокими требованиями к скорости разработки и безопасности.

Экспериментальные данные, полученные на выборке из 30 pull request реального проекта, подтвердили эффективность предложенного подхода; однако автоматизированный ревьюер демонстрирует меньшую точность (71,7% верных замечаний) по сравнению с экспертом, но обеспечивает значительное ускорение процесса анализа (в 6 раз).

Применение подхода позволяет перевести роль разработчика в режим проверки критических архитектурных решений и бизнес-логики.

Таким образом, внедрение больших языковых моделей в CI/CD наиболее целесообразно как инструмент фильтрации дефектов и автоматизации рутинных проверок. Такой гибридный подход позволяет оптимизировать ресурсы команды разработки, сохраняя при этом высокий уровень качества кода и безопасности конечного продукта.

 

Список литературы:
1. Qwen Team. Qwen3.5-Omni Technical Report [Электронный ресурс]. // arXiv preprint. – URL: https://arxiv.org/abs/2604.15804 (дата обращения: 16.07.2026).
2. Prompt Injection attack against LLM-integrated Applications [Электронный ресурс] / Yi Liu [и др.] // arXiv preprint. 2023. URL: https://arxiv.org/abs/2306.05499 (дата обращения: 01.08.2026).
3. Perez F., Ribeiro I. Ignore Previous Prompt: Attack Techniques For Language Models [Электронный ресурс] // arXiv preprint. 2022. URL: https://arxiv.org/abs/2211.09527 (дата обращения: 31.07.2026).
4. Bacchelli A., Bird C. Expectations, Outcomes, and Challenges of Modern Code Review [Электронный ресурс] // Proceedings of the 2013 International Conference on Software Engineering (ICSE). IEEE, 2013. P. 712–721. URL: https://doi.org/10.1109/ICSE.2013.6606617 (дата обращения: 20.07.2026).
5. Ayewah N., Hovemeyer D., Morgenthaler J.D. et al. Using Static Analysis to Find Bugs [Электронный ресурс] // IEEE Software. 2008. Vol. 25, No. 5. P. 22–29. URL: https://doi.org/10.1109/MS.2008.130 (дата обращения: 22.07.2026).