Что такое SonarQube

Обновлено и опубликовано Опубликовано:

SonarQube —
простыми словами

приложение для анализа качества программного кода. Концепция SonarQube строится вокруг стандарта Clean Code (чистый код) и методологии Clean as You Code. Можно выделить несколько критериев, по которым проходит проверка:

  1. Надежность и безопасность кода. Поиск потенциальных багов, уязвимостей и нарушений безопасности (захардкоженные секреты).
  2. Соблюдение правил хорошего тона при написании кода. Выявление строк, которые неудобно читать, например, из-за неправильно названных переменных.
  3. Покрытие кода тестами. Получение показателей, какой процент кода тестируется (coverage).
  4. Отсутствие дублирования. SonarQube отмечает повторяющиеся участки кода.
  5. Наличие комментариев. Поиск забытого закомментированного кода, пустых комментариев и отсутствие комментариев в публичных API.
  6. Гибкость кода. Необходимо проверять наличие избыточных связей между классами и циклических зависимостей между пакетами.
  7. Простота. Проверяется цикломатическая сложность, глубина вложенности, количество точек ветвления.

Сканер SonarQube может быть запущен как в среде docker, так и в операционной системе (потребуется установка компонентов). Поддерживаются все основные ОС: Linux (рекомендована), Windows, macOS (для локальных тестов). Для централизованного хранения результатов, истории метрик, интеграции с различными системами (например, CI/CD) необходимо развернуть серверный компонент, который также может быть запущен как контейнер или установлен на операционную систему.

Чтобы автоматизировать проверку кода, SonarQube можно подключить к другим системам: CI/CD, репозиториям, IDE. Также компания развивает ИИ-функции (Sonar AI) для валидации сгенерированного нейросетями кода, а также автоматической генерации исправлений.

Чтобы SonarQube лучше понимал некоторые языки программирования, используются встроенные модули, например:

  • SonarJava.
  • SonarJS (JavaScript, TypeScript).
  • SonarPython.
  • SonarCFamily.

Ключевая ценность новых версий SonarQube раскрывается при анализе отдельных веток и Pull Requests (PR). Вместо того чтобы копаться в старых проблемах в огромном проекте, система оценивает только новый или измененный код. SonarQube интегрируется с Git-платформами (GitHub, GitLab, Bitbucket) и автоматически оставляет комментарии с найденными дефектами прямо в коде PR, оставляя статус Failed, который можно использовать для блокировки слияния (Merge).

Однако доступность этих функций строго зависит от лицензии:

  • Бесплатная версия (Community).
  • Платные коммерческие редакции (Developer / Enterprise) тарифицируются по количеству строк кода (LOC).

Перед внедрением решения важно убедиться, что возможностей бесплатной версии вам хватит. В противном случае придется закладывать бюджет на лицензии или смотреть в сторону бесплатных аналогов. И хотя точного бесплатного решения «всё в одном» на рынке нет, аналогичного результата можно добиться с помощью комбинации специализированных open-source продуктов (например, связки из Semgrep, Trivy и языковых линтеров в CI/CD).

Еще немного о SonarQube на Википедии.

Встречается в статьях

Примеры скриптов:

  1. Запуск SonarQube Server в контейнере с помощью docker-compose


Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Другие термины

Docker   SpamAssassin   Файловый сервер   Битрикс24   Gradle   Безопасный режим   Roundcube   SonarQube   NAT   PDU   PostGIS   Домен   Ubuntu   NTFS   KVM виртуализация   Cassandra   Жесткая ссылка   Windows   PostgreSQL   Куки (cookie)  
.....

Реклама