Я расскажу о нашем двухлетнем опыте использования инженерной практики «Continious Inspection» и платформы SonarQube при организации кросс-языковой разработки в процессе «непрерывной поставки» (CI-CD для языков Java, C#, JavaScript, typeScript и Gherkin) при автоматизированном code-review.
9. А заказчик хочет «странного»
Микросервис на
PHP (YII)
Приложение на
TypeScript
Требования
могут
формироваться
на Gherkin
Интеграционные
адаптеры – на
Java
Дополнительные
компоненты – на
C#/Mono
11. В 2014 году мы решили
Чтобы кодировать будем
командой
Нам в целом не важно на
каком языке кодировать
Главное чтобы был один
лидер по языку
Проверять код будем
автоматически
12. 7 смертных грехов программиста
Я не буду
переводить
стандартную
статью от
SonarQube.com
13. SonarQube как «платформа»
Инструмент для имплементации инженерной практики под называнием
@ContiniousInspection
Содержит
• Сервис анализа Кода с большой буквы К
• Сервис хранения и расчета метрик
• Сервис отображения метрик
Через плагины
• Поддерживает автоматический CodeReview
• Поддерживает более 20 языков программирования
• Автоматическое назначение задачи на исправление
14. 4 новых понятия
«Путь архитектора» (дорога цветов)
Порог качества продукта
Технический долг продукта
Правила кодирования
17. Pipeline
Разрабатывать в режиме множества парралельных
проектов и сервисов невозможно без CI-CD
Автоматическое тестирование и сборка обязательна
Автоматическое развертывание (хотя бы на UAT)
контуре предпочтительна
19. Pipeline
Стандартный pipeline позволяет
• Dev – Test – Uat
Мы добавляем
• Dev – Lint – Test - UAT
При старте любого проекта
• GIT – SonarQube
• Еще раньше CI-CD
На любую ветку
• И на каждый commit
22. Каждый коммит ?
Да именно каждый
commit
Сборка считается
упавшей
• Если в master или develop
порог качества превышен
Остальное подключается
через SonarLint
• Чтобы исключить проблемы
раньше master и develop
25. Правила
Если в develop оказались
• Баги выше красного, включая
безопасность
Это означается что мы
• Слишком быстро кодим
• Даже не проверяем свой код после
написания
26. Не согласен ? Отключи
Срабатывание,
но не правило
Правило
отключает
• Архитектор
27. Автоботы
«На тебе !!! Чтобы ты
подавился !!!»
• Commit to open merge request
Не забудьте отключить
SMTP в большом
проекте
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
30. Результаты
Я забыл когда ревьюил код вручную
• По моему раз в месяц
Большую часть времени у меня уходит
• На проектирование архитектуры, которую пока автоматически ревьюить можно,
но дорого ;-)
Команда
• Забыла когда допускала базовые ошибки или были серьезные баги в
продуктиве, в основном сложные «плавающие» проблемы связанные с
производительностью – но это уже другая история Continuous Performance Load.
31. Моя цель
Чтобы члены команды больше не использовали
отговорку в виде «Я не очень умею на <LangName>»
• Подключи Sonar – он проверит
Донести до вас, что SonarQube должен быть встроен
в процесс создания продукта раньше Jenkins Tests ;-)
• Потом не будет времени