Знаешь ли инструмент SonarQube
Что проверяют
Работали ли вы с контролем качества кода на уровне команды, а не только с линтером в редакторе. Следом обычно спрашивают, чем SonarQube отличается от ESLint и что происходит, когда пулл-реквест не проходит quality gate.
Как отвечать
SonarQube это сервер статического анализа: он хранит историю проекта, считает метрики и решает, можно ли пропускать изменения. Для фронтенда в нём есть анализаторы JavaScript, TypeScript, CSS и HTML. Что стоит назвать:
- запуск: анализ выполняет сканер (
sonar-scannerили готовая интеграция для GitHub Actions, GitLab CI, Jenkins), настройки лежат вsonar-project.properties:sonar.projectKey,sonar.sources,sonar.exclusions; - покрытие: Sonar сам тесты не запускает. Jest или Vitest формируют
lcov.info, путь к нему передаётся вsonar.javascript.lcov.reportPaths; - что находит: проблемы надёжности, уязвимости, code smells, дублирование, когнитивную сложность функций. Security hotspots это отдельная категория: места, которые человек должен посмотреть и признать безопасными или нет;
- quality gate: условия на новый код. Встроенный Sonar way требует, например, покрытия нового кода не ниже 80% и дублирования не выше 3%, так что старый долг не обязательно разгребать сразу;
- редакции: анализ веток и комментарии в пулл-реквестах есть в платных редакциях и в облачной SonarQube Cloud. В IDE те же правила показывает SonarQube for IDE (бывший SonarLint).
От ESLint отличие в роли: ESLint ловит проблемы до коммита и часть чинит автоматически, Sonar собирает картину по всему проекту во времени и блокирует слияние. Правила SonarJS, кстати, доступны и как eslint-plugin-sonarjs.
Где спотыкаются
Думают, что Sonar измеряет производительность приложения. Он анализирует исходный код, про скорость рендера и размер бандла он ничего не скажет.
Не исключают сгенерированный код, dist и сторонние файлы. Отчёт тонет в чужих замечаниях, и команда перестаёт в него смотреть.
Массово помечают замечания как ложные срабатывания, чтобы пройти gate. Правильнее один раз осознанно отключить неподходящее правило в профиле качества.