УРОК 25 / 30 0%

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. 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. 2
    Запуск в CI
    
    # CI pipeline step
    - run: ./gradlew sonar
      env:
        SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
    
    # Если Quality Gate FAIL → exit 1 → pipeline красный
    
🎯

Зачем это на собесе

После урока ты должен уметь ответить на:

SonarQube/SonarCloud — стандарт индустрии для статического анализа
Quality Gate валит CI при критичных багах — автоматический страж качества
Coverage ≥ 80% — типичный порог для нового кода в строгих командах

5 вопросов на углубление

Раскрой вопрос и нажми «🤔 Хочу разобрать подробнее» — он попадёт в страницу ответов.

1
Что проверяет SonarQube?

Разбор внутри: bugs, code smells, security hotspots и coverage.

2
Что такое Quality Gate?

Разбор внутри: пороги качества и падение CI при нарушении.

3
Как подключить SonarQube к Gradle?

Разбор внутри: plugin, sonar-project properties и токен.

4
SonarCloud vs self-hosted SonarQube

Разбор внутри: SaaS, open-source проекты и свой сервер.

5
Как говорить о SonarQube на собеседовании, если урок пропущен?

Разбор внутри: честная формулировка и базовые термины.

Готов идти дальше?

Выбери вопросы, которые тебе интересны, и изучи их. Потом — к следующему уроку.

🚀 Перейти к Уроку 26

Сначала пройди все секции и выбери хотя бы 1 вопрос

⬅️ Назад к Уроку 24
🎉
Новый тир
Новый тир достигнут!