Использовали ли вы SonarQube для статического анализа кода?

Ответ

Да, SonarQube (и его облачная версия SonarCloud) — это платформа для непрерывного контроля качества кода, выполняющая статический анализ.

Что он обнаруживает:

  • Bugs: Потенциальные ошибки времени выполнения (например, NullPointerException).
  • Vulnerabilities: Уязвимости безопасности (SQL-инъекции, XSS).
  • Code Smells: Проблемы с поддерживаемостью (сложные методы, дублирование кода, нарушение принципов SOLID).
  • Coverage: Покрытие кода unit-тестами.

Базовая интеграция с Maven:

  1. Добавьте плагин в pom.xml:
    <plugin>
        <groupId>org.sonarsource.scanner.maven</groupId>
        <artifactId>sonar-maven-plugin</artifactId>
        <version>3.11.0.3922</version> <!-- Актуальная версия -->
    </plugin>
  2. Запустите анализ:
    # После сборки проекта (mvn clean verify)
    mvn sonar:sonar 
      -Dsonar.projectKey=my-company_my-project 
      -Dsonar.host.url=http://sonar-server:9000 
      -Dsonar.login=your-auth-token

Ключевые преимущества:

  • Единый стандарт качества: Объективные метрики (технический долг, надежность, безопасность) для всей команды.
  • Интеграция в CI/CD: Анализ запускается автоматически при каждом пул-реквесте или мерже, может блокировать слияние при критических проблемах.
  • Эволюция качества: Отслеживание тенденций по метрикам во времени помогает принимать обоснованные решения о рефакторинге.

Best Practice: Настройка Quality Gate (порога качества), который должен быть пройден для успешного завершения сборки.

Ответ 18+ 🔞

Ну ты глянь, какой зверь этот SonarQube, а? Ну или SonarCloud, если в облаках тусоваться. По сути, это такой всевидящий глаз, который твой код сканирует и орёт: "Э, дружок-пирожок, тут у тебя говнище, блядь, лежит!"

И что же он там вынюхивает, этот сыщик?

  • Bugs: Самые сочные косяки, которые могут вылезти, когда код уже работает. Типа NullPointerException — классика жанра, в рот меня чих-пых, каждый второй на этом подгорает.
  • Vulnerabilities: Дыры в безопасности, чтобы тебя потом не взломали какие-нибудь пидарасы шерстяные. SQL-инъекции там, XSS — вся эта весёлая хуйня.
  • Code Smells: А это уже не ошибки, а просто вонь от кода. Метод на триста строк, дубликаты кода как близнецы-уроды, принципы SOLID нарушены в хлам. В общем, поддерживать такой код — терпения ноль, ебать.
  • Coverage: И, конечно же, он докопается до тестов. "А где, сука, покрытие?" — будет спрашивать. Показатель, сколько твоего говнокода хоть как-то протестировано.

Как его, блядь, прикрутить к Maven?

  1. Суешь плагин в pom.xml: Просто кусок XML, хуй с ним.
    <plugin>
        <groupId>org.sonarsource.scanner.maven</groupId>
        <artifactId>sonar-maven-plugin</artifactId>
        <version>3.11.0.3922</version> <!-- Бери свежую, не парься -->
    </plugin>
  2. Запускаешь магию: Собрал проект и потом даёшь команду. Главное — ключ проекта и токен не потеряй, а то нихуя не заработает.
    mvn sonar:sonar 
      -Dsonar.projectKey=my-company_my-project 
      -Dsonar.host.url=http://sonar-server:9000 
      -sonar.login=your-auth-token

А нахуй он вообще нужен, спросишь?

  • Общий язык для команды: Вместо "ой, тут код говно" можно сказать: "Смотри, у нас reliability rating упал до C, блядь". Объективно и без эмоций, хотя внутри всё равно кипишь, как чайник.
  • Страж в CI/CD: Встроишь его в пайплайн — и он будет каждый пул-реквест проверять. Найдёт критическую уязвимость — может и не пустить мержиться, говорит "иди, почини, мудак". Очень дисциплинирует, волнение ебать.
  • История твоего позора (или успеха): Все метрики в графиках. Видишь, как технический долг растёт, как паук, и понимаешь — пора, блядь, рефакторить, а не новые фичи лепить.

Лайфхак: Настрой Quality Gate. Это такой пропускной пункт. Не выполнил условия — вся сборка накрылась медным тазом. Заставляет держать планку, а не халявить.