SonarQube (пропущен)
Цель урока
Сделать полноценный CRUD для задач с правильными HTTP-статусами (201/204/404), обработкой ошибок, и подготовить Task к подключению JPA.
Теория · для собеса
1 Что такое SonarQube ▸
SonarQube — self-hosted платформа статического анализа кода. Сканирует репозиторий, считает метрики, подсвечивает проблемы, валит Quality Gate в CI при критичных багах. 4 категории находок: Bugs (реальные баги), Code Smells (потенциальные проблемы), Security Hotspots (уязвимости), Coverage (% покрытия тестами).
2 Quality Gate ▸
Quality Gate — набор порогов: coverage ≥ 80%, дубликаты ≤ 3%, bugs = 0, security hotspots reviewed. Если gate не прошёл — build падает. Это автоматический страж качества. Настраивается под команду: жёсткий (для строгих команд) или мягкий (только bugs = 0 для легаси).
3 SonarCloud vs SonarQube ▸
SonarCloud (SaaS) и SonarQube (self-hosted) — две версии. SonarCloud бесплатен для open-source и интегрирован с GitHub. SonarQube — для приватных репо, on-premise, корпоративных compliance. На собесе достаточно знать, что это стандарт индустрии для статанализа.
Практика: улучшаем CRUD
-
1Плагин Gradle
// build.gradle.kts plugins { id("org.sonarqube") version "5.0.0.4638" } sonar { properties { property("sonar.projectKey", "taskflow") property("sonar.host.url", "http://sonarqube:9000") property("sonar.token", System.getenv("SONAR_TOKEN") ?: "") property("sonar.coverage.jacoco.xmlReportPaths", "build/reports/jacoco/test/jacocoTestReport.xml") } } -
2Запуск в CI
# CI pipeline step - run: ./gradlew sonar env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} # Если Quality Gate FAIL → exit 1 → pipeline красный
Зачем это на собесе
После урока ты должен уметь ответить на:
5 вопросов на углубление
Раскрой вопрос и нажми «🤔 Хочу разобрать подробнее» — он попадёт в страницу ответов.
Разбор внутри: bugs, code smells, security hotspots и coverage.
Разбор внутри: пороги качества и падение CI при нарушении.
Разбор внутри: plugin, sonar-project properties и токен.
Разбор внутри: SaaS, open-source проекты и свой сервер.
Разбор внутри: честная формулировка и базовые термины.
Готов идти дальше?
Выбери вопросы, которые тебе интересны, и изучи их. Потом — к следующему уроку.
🚀 Перейти к Уроку 26Сначала пройди все секции и выбери хотя бы 1 вопрос
⬅️ Назад к Уроку 24