Вы ждете обзора кода больше, чем следовало бы

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

Но вы можете не знать, что 64,3% Pull-запросов объединяются без каких-либо изменений кода в результате обзора. Это означает, что только в 1/3 случаев обзор привел к изменению предложенного кода.

🗃 Набор данных

Мы собираем данные по открытым источникам уже некоторое время, и в этом посте мы поделимся результатами анализа 2 340 078 PR, полученных от 7 836 организаций. Набор данных специально получен из репозиториев, демонстрирующих командную работу. К счастью, с таким количеством компаний-разработчиков программного обеспечения, использующих открытый исходный код, существует множество примеров различных стилей сотрудничества.

🔮 Результаты проверки кода

Вообще говоря, судьба PR, находящегося на рассмотрении, будет идти по одному из этих двух путей:

  • Объединяется как есть (он же LGTM’d) — 1 504 914 PR в наборе данных
  • объединен с изменениями в результате обратной связи (комментарии, предложения и т.д.) — 835 164 PR в наборе данных

⏳ Время слияния PRs

Давайте посмотрим, сколько люди ждут, пока их PR будут объединены.

В среднем, время между открытием PR и его объединением составляет 128 часов (~5 дней). Если рассматривать только PR, которые были LGTM’s, то это число составляет 74 часа (~3 дня), а для остальных 35,7% PR среднее время ожидания составляет 225 часов (~9 дней).

Вот две гистограммы с вероятностными распределениями времени слияния для ПР с LGTM’d и ПР без LGTM’d.

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

В этом наборе данных общее время ожидания слияния Pull-запросов (без каких-либо изменений в результате рассмотрения) составляет 12 718 лет. Для PR, получивших исправления, время ожидания достигает 21 437 лет.

Если отбросить астрономические абсолютные значения, мы видим, что огромные 37% времени ожидания были более или менее ненужными.

Если посмотреть на тенденцию за последние три года, то очевидно, что время ожидания сокращается.

Аналогичная тенденция наблюдается и в самом GitHub. Это связано с тем, что все больше команд предпочитают выпускать небольшие и частые проекты, применяя такие методы, как разработка на основе магистрали и непрерывная доставка.

🎭 Что такое обзор кода?

Если говорить об обмене знаниями, то обзор кода призван выполнять функцию «ворот качества». Хороший обзор должен охватывать множество аспектов кода (например, соответствие цели, отсутствие ошибок и т.д.), но, давайте будем честными, на практике обзоры носят транзакционный характер.

Как автор:

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

Как рецензент:

Вы хотите разблокировать своего товарища по команде и вернуться к своему собственному коду.

Конечно, в обоих случаях мы не хотим идти на компромисс с качеством, но не все изменения кода имеют одинаковое влияние и риск. Я бы зашел так далеко, что утверждал бы, что в большинстве команд проверка кода в основном сводится к подбору шаблонов — например: «Видел ли я, чтобы этот шаблон был успешным раньше?», «Знаком ли автор с этой подсистемой?» и т.д. Когда достаточное количество ментальных галочек отмечено, мы готовы объявить LGTM.

🤖 Автоматизация

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

Codeball — это новая и смелая попытка продвинуть автоматизацию дальше. Он имитирует интуицию разработчика и одобряет безопасные запросы на внесение изменений, экономя время команды.

Лучший способ проиллюстрировать влияние такой продвинутой автоматизации — это посмотреть, как она повлияла на время слияния Pull Request для команды, использующей ее.

Хотя всегда есть сложные запросы на притяжение, которые требуют человеческого рассмотрения, Codeball выявляет и утверждает большую часть запросов на притяжение, которые были бы отклонены человеком. Естественно, эта команда тратит меньше времени на работу с такими PR.

Если это звучит слишком хорошо, чтобы быть правдой, то это потому, что перед нами технологическая инновация! Идите и проверьте ее на своем репозитории!

Спасибо за чтение!

  • Кирилл

Оцените статью
devanswers.ru
Добавить комментарий