Бабай — гроза плохого кода. Как мы научили ИИ делать ревью

Результаты ИИ-проверки кода и роль инженера

Что тормозит разработку

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

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

От скорости и качества проверки зависят сроки выпуска обновлений и количество ошибок после релиза. И еще то, сколько времени сильные специалисты тратят на рутину. Чтобы ускорить проверку, мы в Friflex разработали CodeBabai — ИИ-сервис для анализа изменений в коде.

Как изменилась проверка с сервисом

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

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

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

Почему не взять готовые решения

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

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

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

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

Как устроен сервис

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

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

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

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

Бабай — гроза плохого кода. Как мы научили ИИ делать ревью

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

Бабай на Вайбатоне

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

Бабай — гроза плохого кода. Как мы научили ИИ делать ревью

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

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

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

Инженеры больше не нужны?

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

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

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

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

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

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

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

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

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

Резюме

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

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

Для бизнеса это возможность ускорять разработку без отказа от контроля качества — независимо от того, работает над продуктом собственная команда или внешний подрядчик.

О компании Friflex

Friflex — ИТ-компания, специализируется на мобильной разработке и ИИ-решениях для бизнеса. В портфолио — более 80 проектов для ритейла, страхования, финансов и других отраслей. Среди клиентов — «Дикси», «Бристоль», «Магнит», ЭНЕРГОГАРАНТ, «Максидом» и другие.

Friflex разрабатывает ИИ-продукты: Flexar для автоматизации бизнес-процессов, CodeBabai для проверки кода, LandCraft для создания сайтов с помощью ИИ и idSport — экосистему продуктов для оцифровки спортивных соревнований.

33