Top Banner
Непрерывная инспекция кода В режимах мультиязычной разработки микросервисов и микропродуктов
33

Алексей Лустин. Непрерывная проверка качества кода.

Apr 11, 2017

Download

Business

ScrumTrek
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Алексей Лустин. Непрерывная проверка качества кода.

Непрерывная инспекция кода

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

Page 2: Алексей Лустин. Непрерывная проверка качества кода.

Авторский контекст

CTO SilverBulleters

https://github.com/allustin

Page 3: Алексей Лустин. Непрерывная проверка качества кода.

Это история

Про бейджики

И про автоботов

И не совсем про статический анализ кода

Page 4: Алексей Лустин. Непрерывная проверка качества кода.

Обычно говорят о проблемах

Code Review это очень дорого

Page 5: Алексей Лустин. Непрерывная проверка качества кода.

В деньгах

4 часа в неделю на ревью изменений

8 часов в неделю на чтение патернов и книг

«Бесконечное количество» обсуждений

Page 6: Алексей Лустин. Непрерывная проверка качества кода.

В итоге

12 * 52 = ?

50$ в час = ???

Page 7: Алексей Лустин. Непрерывная проверка качества кода.

Почему так

Языков десятки

Требований к коду тысячи

Ресурсы всегда

ограничены

Люди любят один

(максимум) два языка

Page 8: Алексей Лустин. Непрерывная проверка качества кода.

А еще все любят поговорить

Page 9: Алексей Лустин. Непрерывная проверка качества кода.

А заказчик хочет «странного»

Микросервис на PHP (YII)

Приложение на TypeScript

Требования могут

формироваться на Gherkin

Интеграционные адаптеры – на

Java

Дополнительные компоненты – на

C#/Mono

Page 10: Алексей Лустин. Непрерывная проверка качества кода.
Page 11: Алексей Лустин. Непрерывная проверка качества кода.

В 2014 году мы решили

Чтобы кодировать будем командой

Нам в целом не важно на каком языке кодировать

Главное чтобы был один лидер по языку

Проверять код будем автоматически

Page 12: Алексей Лустин. Непрерывная проверка качества кода.

7 смертных грехов программиста

Я не буду переводить стандартную статью от SonarQube.com

Page 13: Алексей Лустин. Непрерывная проверка качества кода.

SonarQube как «платформа»

Инструмент для имплементации инженерной практики под называнием @ContiniousInspection

Содержит

• Сервис анализа Кода с большой буквы К

• Сервис хранения и расчета метрик

• Сервис отображения метрик

Через плагины

• Поддерживает автоматический CodeReview

• Поддерживает более 20 языков программирования

• Автоматическое назначение задачи на исправление

Page 14: Алексей Лустин. Непрерывная проверка качества кода.

4 новых понятия

«Путь архитектора» (дорога цветов)

Порог качества продукта

Технический долг продукта

Правила кодирования

Page 15: Алексей Лустин. Непрерывная проверка качества кода.

Даже на DEVELOP ветке

Page 16: Алексей Лустин. Непрерывная проверка качества кода.
Page 17: Алексей Лустин. Непрерывная проверка качества кода.

Pipeline

Разрабатывать в режиме множества парралельных проектов и сервисов невозможно без CI-CD

Автоматическое тестирование и сборка обязательна

Автоматическое развертывание (хотя бы на UAT) контуре предпочтительна

Page 18: Алексей Лустин. Непрерывная проверка качества кода.
Page 19: Алексей Лустин. Непрерывная проверка качества кода.

Pipeline

Стандартный pipeline позволяет

• Dev – Test – Uat

Мы добавляем

• Dev – Lint – Test - UAT

При старте любого проекта

• GIT – SonarQube

• Еще раньше CI-CD

На любую ветку

• И на каждый commit

Page 20: Алексей Лустин. Непрерывная проверка качества кода.

Даже внутри команды !!!

Page 21: Алексей Лустин. Непрерывная проверка качества кода.

Бот подключается всегда

Page 22: Алексей Лустин. Непрерывная проверка качества кода.

Каждый коммит ?

Да именно каждый commit

Сборка считается упавшей

• Если в master или develop порог качества превышен

Остальное подключается через SonarLint

• Чтобы исключить проблемы раньше master и develop

Page 23: Алексей Лустин. Непрерывная проверка качества кода.

«Linters» как возможностьпоказать себя ведущим программистом

Hooks

Page 24: Алексей Лустин. Непрерывная проверка качества кода.

«Linters» как возможностьпоказать себя ведущим программистом

Hooks

Page 25: Алексей Лустин. Непрерывная проверка качества кода.

Правила

Если в develop оказались

• Баги выше красного, включая безопасность

Это означается что мы

• Слишком быстро кодим

• Даже не проверяем свой код после написания

Page 26: Алексей Лустин. Непрерывная проверка качества кода.

Не согласен ? Отключи

Срабатывание, но не правило

Правило отключает

• Архитектор

Page 27: Алексей Лустин. Непрерывная проверка качества кода.

Автоботы

«На тебе !!! Чтобы ты подавился !!!»

• Commit to open merge request

Не забудьте отключить SMTP в большом проекте

Page 28: Алексей Лустин. Непрерывная проверка качества кода.

В итоге наш стандарт

IDE + SonarLint

• VStudio, Eclipse, IDEA+, VSCode

DCVS (git)

CI server (Jenkins + VSTS + travis + AppVeyor + etc)

SonarQube

• SCM

• PHP, TypeScript, JS, CSS, HTML, Gherkin, Java, C#

• Russian

Page 29: Алексей Лустин. Непрерывная проверка качества кода.

Как исследовали и включали

Page 30: Алексей Лустин. Непрерывная проверка качества кода.

Результаты

Я забыл когда ревьюил код вручную

• По моему раз в месяц

Большую часть времени у меня уходит

• На проектирование архитектуры, которую пока автоматически ревьюить можно, но дорого ;-)

Команда

• Забыла когда допускала базовые ошибки или были серьезные баги в продуктиве, в основном сложные «плавающие» проблемы связанные с производительностью – но это уже другая история Continuous Performance Load.

Page 31: Алексей Лустин. Непрерывная проверка качества кода.

Моя цель

Чтобы члены команды больше не использовали отговорку в виде «Я не очень умею на <LangName>»

• Подключи Sonar – он проверит

Донести до вас, что SonarQube должен быть встроен в процесс создания продукта раньше Jenkins Tests ;-)

• Потом не будет времени

Page 32: Алексей Лустин. Непрерывная проверка качества кода.

Архитектура SB

Page 33: Алексей Лустин. Непрерывная проверка качества кода.

ВОПРОСЫ ???Спасибо за внимание