1. Что дает SonarQube: метрики, баги, уязвимости и Quality Gate
Что дает SonarQube: метрики, баги, уязвимости и Quality Gate
SonarQube — это платформа статического анализа, которая помогает превратить «качество кода» из субъективного ощущения в набор измеримых правил и автоматических проверок. Для монорепозитория с React/TypeScript это особенно полезно: команд много, пакетов много, изменения идут параллельно, а единый стандарт качества нужен всем.
Ниже — что именно дает SonarQube и как читать его результаты.
1) Что SonarQube проверяет: три класса проблем
Bugs (баги)
Это потенциальные ошибки выполнения: то, что с высокой вероятностью приведет к некорректному поведению.Примеры в контексте TS/React:
Promise (например, забыли обработать ошибку);Смысл: ловим дефекты до запуска в проде.
Vulnerabilities (уязвимости)
Это проблемы, которые могут привести к компрометации данных или выполнению нежелательных действий.Примеры:
Смысл: безопасность — часть Definition of Done, а не ручной аудит раз в квартал.
Code Smells (code smells)
Это не «ошибка», а сигнал о сложном или неудачно поддерживаемом коде.Примеры:
Смысл: повышаем поддерживаемость и скорость разработки.
2) Метрики: чем измеряется качество
SonarQube показывает не только список проблем, но и метрики проекта. Важно понимать, что метрики — это индикаторы: они помогают обнаружить риски и тренды.
Ключевые метрики, которые обычно используют в командах:
Практичный подход: метрики важнее всего на новом коде (new code). Так вы не блокируете работу из-за старых проблем, но перестаете увеличивать долг.
3) Правила, профили и «стандарт качества»
SonarQube работает по правилам. Набор правил объединяется в Quality Profile (профиль качества). Один профиль можно применять к многим проектам/папкам/языкам.
Зачем это нужно:
Важно: SonarQube не заменяет линтер (ESLint) и форматтер. Он дополняет их управлением качеством на уровне проекта, метриками, «воротами» (gate) и отчетностью.
4) Quality Gate: автоматическое «проходит/не проходит»
Quality Gate — это набор условий, которые определяют, можно ли считать анализ успешным.
Примеры условий, которые часто ставят именно на новый код:
Если Quality Gate не пройден, SonarQube помечает анализ как failed — и это можно использовать как сигнал для CI (например, в Jenkins) и для проверок в pull request.
Почему Quality Gate критичен:
5) PR-анализ: качество как часть code review
При анализе pull request SonarQube умеет показывать проблемы, появившиеся именно в рамках этого PR (новые issues, падение покрытия, рост дублирования). Это удобнее, чем «раз в неделю смотреть на дашборд».
Типичный эффект:
6) Как читать результаты: быстрый чек-лист
---
Задания для закрепления
1) Объясните разницу между Bugs, Vulnerabilities и Code Smells (по 1–2 предложения).
2) Почему метрики «на новом коде» обычно полезнее, чем метрики «по всему проекту» в старом монорепозитории?
3) Придумайте 3 условия для Quality Gate для UI-kit на React/TS. Укажите, какие из них вы бы применяли именно к новому коду.
4) Что такое Security Hotspots и чем они отличаются от Vulnerabilities?
<details> <summary> Ответы </summary>
1) Bugs — потенциальные дефекты поведения (риск неправильного результата/падений). Vulnerabilities — потенциальные проблемы безопасности (риск атаки/утечки). Code Smells — ухудшение поддерживаемости (сложно читать/менять), не обязательно приводит к ошибке прямо сейчас.
2) В монорепозитории обычно есть «исторический долг»: старые нарушения могут быть многочисленными и не дают двигаться, если требовать исправить всё сразу. Фокус на новом коде позволяет не увеличивать долг и постепенно улучшать качество без остановки разработки.
3) Пример условий:
4) Security Hotspots — места, где код может быть небезопасным в зависимости от контекста (нужна ручная проверка/подтверждение). Vulnerabilities — уже классифицированные уязвимости, которые трактуются как проблема безопасности и обычно должны быть исправлены.
</details>