Контроль качества — это автоматизированные проверки качества, которые устанавливают пороговые значения для продвижения продукта по конвейеру разработки.
Мы объясним, как работает эта технология, и поделимся дорожной картой, которую мы создали для внедрения Quality Gates во всех наших командах.
Принцип Quality Gates — буквально «ворота качества» — помогает решать проблемы в коде на ранней стадии, до того, как он обзаведется зависимостями.
Если в коде есть дублирование, обнаружены проблемы с переменными или недостаточно тестов, он проваливается и возвращается автору.
В результате код становится чище и понятнее, ошибки легче исправлять, и они появляются реже.
Три причины внедрить Quality Gates
- Компания выравнивает качество своей продукции.
У всех команд общие требования к качеству кода, общее видение стилей программирования, безопасности продукта и качества продукта в целом.
Более того, компания может централизованно обновлять требования сразу для всех проектов.
- Разработчики избавляются от еще одного куска ручной работы.
- Команда получает автоматический отчет со значениями ключевых метрик и объяснением, почему тот или иной код или алгоритм считается плохим.
Пошаговый план реализации
Начинать эксперименты с Quality Gates стоит со статического анализа кода.Этот метод помогает командам избавиться от типичных ошибок, очистить код от неровностей и некоторых брешей в безопасности.
Подчеркнем слово «некоторые» — чтобы убедиться в отсутствии уязвимостей в продукте, необходимы специальные проверки.
Для статического анализа мы выбрали SonarQube — популярное решение с открытым исходным кодом, поддерживающее пару десятков языков программирования.
Важным моментом для нас является то, что есть интеграция с нашим инструментом контроля версий — TFS, поэтому мы можем делать готовые пайплайны с уже включенными проверками кода.
Полезные выводы из результатов пилотного проекта
После тестовых запусков на нескольких десятках проектов мы смогли оценить эффективность и ограничения инструмента.
- «С высоты птичьего полета» мы наглядно увидели, как разные команды формируют свой стиль — разработчики неосознанно формируют общий подход к написанию кода, в результате внутри каждой команды появляются одни и те же недостатки.
С помощью Quality Gates эту ситуацию можно исправить для всех сразу.
- Первые результаты с сотнями ошибок в большом проекте логически могут деморализовать.
Важно понимать, что нужно обращать внимание не на общее количество проблем, а на их многообразие.
Чем меньше типов ошибок, тем быстрее вы сможете все исправить.
- Продукты IOS требуют дополнительных инструментов — базовая версия SonarQube не поддерживает Swift и Objective-C. Правила платной верификации для iOS в SonarCube в разы меньше, чем для Java/C#; более того, нет одновременной проверки Swift и ObjC, а большинство наших продуктов содержат код на обоих языках.
- Для полной защиты продукта Обязательно необходимы дополнительные средства.
Мы сравнили список уязвимостей, которые SonarQube обнаружил в одном из приложений, с результатами полного аудита безопасности.
Совпадение нашлось только в одном случае — в SonarQube отсутствуют динамические проверки, и стандартный список правил необходимо расширить.
Заключение
Статический анализ — отличная отправная точка для внедрения Quality Gates. Это дает быстрый эффект и помогает решить, куда двигаться дальше.Общие требования к качеству позволяют запускать проверки на основе этих правил в любом проекте и централизованно обновлять их для всех сразу.
Результатом проверок будет отчет со значениями ключевых метрик и объяснением, почему тот или иной код или алгоритм считается плохим — улучшая эти значения, команда улучшит качество продукта и разовьет свои навыки.
.
Теги: #программирование #DevOps #статический анализ кода #Quality Gates #sonar qube #автоматические проверки
-
Обновите Или Замените Свой Компьютер Онлайн
19 Oct, 24 -
Стоит Ли Ремонт Компьютеров Своих Денег?
19 Oct, 24 -
Недостатки Планшетного Пк Ipad: Есть Ли Они?
19 Oct, 24 -
Узловое Программирование
19 Oct, 24 -
Обзор Мобильных Антифрод-Систем
19 Oct, 24 -
Кто Использует Node.js: Trello (Часть 2)
19 Oct, 24