Как мы сократили проверку кода с двух часов до 10–20 минут с помощью ИИ
Подкаст

Как мы сократили проверку кода с двух часов до 10–20 минут с помощью ИИ

И причем тут мудрый дедушка

Юрий Петров, руководитель отдела агентной и кроссплатформенной разработки Friflex и автор codebab.ai

Юрий Петров, руководитель отдела агентной и кроссплатформенной разработки Friflex и автор codebab.ai

Как мы сократили проверку кода с двух часов до 10–20 минут с помощью ИИ

Код пишут быстрее, чем успевают проверять

Еще несколько лет назад у команды одновременно было один-два активных запроса на слияние изменений (merge request). Это код, который разработчик отправляет на проверку перед добавлением в проект. Старший разработчик на проекте проверял его, после чего изменения уходили дальше.

С ИИ-инструментами темп вырос. Сейчас у команды бывает 5–10 запросов на слияние в день. В итоге проверка начинает тормозить всю разработку. Человек физически не может быстро и одинаково внимательно разбирать десятки изменений подряд.

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

Для бизнеса это уже не внутренняя кухня разработки. От скорости и качества проверки зависят сроки выпуска обновлений и количество ошибок после релиза. И еще то, сколько времени сильные специалисты тратят на рутину.

Почему код должен проверять другой ИИ

Первая мысль: если модель умеет писать код, пусть она же его и проверяет.

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

Так появилась идея сервиса для проверки изменений. Сначала мы хотели сэкономить и использовать готовые решения с открытым исходным кодом. Но после тестирования выяснилось, что в них не хватает нужных нам функций, а к реализации некоторых возможностей есть вопросы. Известные зарубежные сервисы вроде CodeRabbit тоже не подходили из-за ограничений.

Было и еще одно условие. На части проектов можно использовать только языковую модель (LLM), развернутую внутри контура компании.

В итоге решили разработать собственный сервис под наши требования.

Название родилось почти сразу: «Код Бабай». «Бабай» по-татарски значит дедушка, старший и мудрый. Внутри компании мы его так ласково и называем. Кому-то слово скорее напомнит бабайку из детских страшилок, но нас устраивает и это: пусть плохой код его побаивается.

Как устроен codebab.ai

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

В codebab.ai мы разделили проверку между несколькими ИИ-агентами:

  • «Ревьюер кода» ищет ошибки в логике, проблемы безопасности и производительности;
  • «Оценка качества» проверяет, понятны ли заголовок и описание запроса, связаны ли изменения между собой и не слишком ли их много для одной проверки;
  • «Наблюдатель» следит за состоянием всего проекта: ищет оставленные в коде пароли и ключи, выявляет самые сложные места, оценивает тесты и документацию;
  • «Лицензии» проверяют библиотеки и условия их использования.

В чем польза ИИ-агентов для бизнеса, рассказали в статье.

Сервис подключается к GitLab и оставляет замечания прямо в запросе на слияние, там, где разработчик и так работает. Когда разработчик поправит код, сервис сам перепроверит замечание и закроет обсуждение. Если проблем не осталось, он одобрит запрос (approve).

Изменение в одном файле может выглядеть правильным, но сломать что-то в другом месте. Поэтому сразу после подключения codebab.ai строит карту проекта. На ней видно, из каких частей проект состоит и как они связаны. Карта помогает ревьюеру кода учитывать связи между частями проекта при проверке изменений.

Сервис разбирает код примерно как на уроке русского разбирают предложение, только вместо подлежащего и сказуемого находит функции и связи между ними. Результат такого разбора называют синтаксическим деревом, или AST. Языковая модель для этого не нужна, так что карта строится быстро и без платных запросов к ИИ. Когда изменения попадают в основную ветку проекта, карта обновляется сама.

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

Как мы сократили проверку кода с двух часов до 5–10 минут с помощью ИИ_2.png

Что показало полевое испытание

Первым хорошим полигоном для codebab.ai стал Вайбатон. Это формат ИИ-хакатонов Friflex, где команды за несколько часов создают прототип продукта с помощью генеративного ИИ.

Команды решали задачу ПФК ЦСКА: нужно было создать сервис, который генерирует изображения и анимации для перформансов на трибунах. Участвовали 10 команд, и появилось сразу несколько решений на разных моделях и с разными подходами.

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

На первом Вайбатоне эксперты проверяли код команд вручную, и это занимало в несколько раз больше времени, чем проверка с codebab.ai. В этот раз у жюри осталось больше времени на сами продукты: идеи, применимость, потенциал развития. А клуб получил несколько прототипов, которые можно развивать дальше.

Что показал рабочий проект

Со временем мы подключили codebab.ai к рабочим задачам. На одном из проектов крупной розничной компании (NDA) за шесть месяцев сервис оставил больше 100 замечаний к изменениям. Около 90% из них разработчики признали обоснованными.

Среднее время проверки изменений сократилось примерно с двух часов до 10–20 минут. Столько теперь проходит времени от отправки изменений до первых замечаний.

На этом же проекте codebab.ai помог находить до 40% больше ошибок до релиза. То есть часть проблем команда видит еще во время работы с изменениями, а не на тестировании или после запуска продукта.

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

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

Последнее слово за инженером

Мы не ставили задачу полностью заменить ручную проверку. У ИИ и инженера здесь разные роли.

Сервис может последовательно проверить большой объем изменений, пройтись по заданным правилам и указать на подозрительные места. Он не устает и не пропускает проверку из-за более срочных задач.

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

Сервис тоже ошибается. Если замечание не по делу, разработчик отвечает в обсуждении командой *bug. Такие ответы собираются в отдельный список, и по нему видно, какие правила проверки нужно поправить.

codebab.ai работает как первый слой проверки. Он снимает повторяющуюся часть работы и помогает инженеру быстрее перейти к решениям, где нужен его опыт.

Когда бизнесу нужна автоматическая проверка

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

Если продукт делает внешний подрядчик, сервис дает заказчику дополнительную информацию о качестве кода и состоянии проекта. В разделе «Аналитика» видно, сколько запросов на слияние неделями ждут проверки и какая доля изменений попала в проект вообще без ревью. Для этого не нужно самому читать код.

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

Для проектов с повышенными требованиями к безопасности сервис можно развернуть во внутреннем контуре компании и подключить к модели, которая тоже работает внутри. Так исходный код не покидает корпоративную инфраструктуру.

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

По каким критериям проверять код, который написал ИИ, читайте в статье.

Начать можно с одного проекта. Для подключения codebab.ai нужен токен доступа к GitLab, а связь с репозиторием сервис настроит сам. Через месяц в аналитике можно будет посмотреть, сколько замечаний исправила команда и сколько стоило их исправление.

Обсудите статью в нашем телеграм-канале