Quality Gates: Как Мы Встраиваем Автоматизированные Проверки Кода В Наши Процессы

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

Мы объясним, как работает эта технология, и поделимся дорожной картой, которую мы создали для внедрения Quality Gates во всех наших командах.

Принцип Quality Gates — буквально «ворота качества» — помогает решать проблемы в коде на ранней стадии, до того, как он обзаведется зависимостями.

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

В результате код становится чище и понятнее, ошибки легче исправлять, и они появляются реже.



Три причины внедрить Quality Gates

  1. Компания выравнивает качество своей продукции.

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

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

  2. Разработчики избавляются от еще одного куска ручной работы.

  3. Команда получает автоматический отчет со значениями ключевых метрик и объяснением, почему тот или иной код или алгоритм считается плохим.



Пошаговый план реализации

Начинать эксперименты с Quality Gates стоит со статического анализа кода.

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

Подчеркнем слово «некоторые» — чтобы убедиться в отсутствии уязвимостей в продукте, необходимы специальные проверки.

Для статического анализа мы выбрали SonarQube — популярное решение с открытым исходным кодом, поддерживающее пару десятков языков программирования.

Важным моментом для нас является то, что есть интеграция с нашим инструментом контроля версий — TFS, поэтому мы можем делать готовые пайплайны с уже включенными проверками кода.



Quality Gates: как мы встраиваем автоматизированные проверки кода в наши процессы



Полезные выводы из результатов пилотного проекта

После тестовых запусков на нескольких десятках проектов мы смогли оценить эффективность и ограничения инструмента.

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

    С помощью Quality Gates эту ситуацию можно исправить для всех сразу.

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

    Важно понимать, что нужно обращать внимание не на общее количество проблем, а на их многообразие.

    Чем меньше типов ошибок, тем быстрее вы сможете все исправить.

  3. Продукты IOS требуют дополнительных инструментов — базовая версия SonarQube не поддерживает Swift и Objective-C. Правила платной верификации для iOS в SonarCube в разы меньше, чем для Java/C#; более того, нет одновременной проверки Swift и ObjC, а большинство наших продуктов содержат код на обоих языках.

  4. Для полной защиты продукта Обязательно необходимы дополнительные средства.

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

    Совпадение нашлось только в одном случае — в SonarQube отсутствуют динамические проверки, и стандартный список правил необходимо расширить.



Заключение

Статический анализ — отличная отправная точка для внедрения Quality Gates. Это дает быстрый эффект и помогает решить, куда двигаться дальше.

Общие требования к качеству позволяют запускать проверки на основе этих правил в любом проекте и централизованно обновлять их для всех сразу.

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

.

Теги: #программирование #DevOps #статический анализ кода #Quality Gates #sonar qube #автоматические проверки

Вместе с данным постом часто просматривают: