Что такое SonarQube?
SonarQube — это платформа с открытым исходным кодом, разработанная SonarSource для непрерывной проверки качества кода. Она выполняет статический анализ кода для обнаружения ошибок, “запахов кода” (code smells) и уязвимостей безопасности в более чем 25 языках программирования. SonarQube интегрируется с вашим существующим рабочим процессом (конвейерами CI/CD) и предоставляет разработчикам комплексную панель мониторинга для выявления и устранения проблем, обеспечивая чистоту, безопасность и поддерживаемость кода.
Ключевые особенности
- Поддержка нескольких языков: Анализирует широкий спектр языков, включая Java, C#, Python, JavaScript, C++ и другие.
- Обнаружение уязвимостей безопасности: Выявляет распространенные уязвимости, такие как SQL-инъекции, межсайтовый скриптинг (XSS) и другие уязвимости из списка OWASP Top 10.
- Метрики качества кода: Отслеживает ключевые метрики, такие как сложность кода, дублирование и покрытие тестами, для поддержания высокого стандарта здоровья кода.
- Интеграция с CI/CD: Бесшовно интегрируется с популярными инструментами CI/CD, такими как Jenkins, Azure DevOps, GitLab и GitHub Actions, для автоматизации анализа кода.
- Quality Gates (Врата качества): Позволяет определить набор условий, которым должен соответствовать ваш проект перед выпуском, предотвращая попадание некачественного кода в продакшн.
- Интеграция с IDE: Предоставляет плагины для IDE, таких как IntelliJ IDEA, VS Code и Eclipse, позволяя разработчикам исправлять проблемы до коммита кода.
Сферы применения
- Непрерывная интеграция/Непрерывное развертывание (CI/CD): Автоматически анализировать каждый pull request и новую строку кода для выявления проблем на ранних этапах процесса разработки.
- Аудит безопасности: Проводить комплексное сканирование безопасности приложений для выявления и устранения уязвимостей перед развертыванием.
- Рефакторинг унаследованного кода: Оценивать качество существующей кодовой базы для приоритизации и управления техническим долгом.
- Обеспечение стандартов кодирования: Гарантировать, что все разработчики в команде придерживаются единого набора стандартов кодирования и лучших практик.
Начало работы
Начало работы с SonarQube обычно включает запуск сервера SonarQube и сканера. Docker — самый простой способ запустить сервер для пробы.
- Запуск сервера SonarQube с помощью Docker:
docker run -d --name sonarqube -p 9000:9000 sonarqube:latestДоступ к серверу по адресу
http://localhost:9000. -
Запуск SonarScanner для проекта: Загрузите и настройте SonarScanner для вашего проекта. Для простого проекта на Java вам нужно будет создать файл
sonar-project.properties:# должен быть уникальным в данном экземпляре SonarQube sonar.projectKey=my-java-project # --- необязательные свойства --- sonar.projectName=My Java Project sonar.projectVersion=1.0 # путь указывается относительно файла sonar-project.properties. sonar.sources=. # кодировка исходного кода. По умолчанию используется системная кодировка sonar.sourceEncoding=UTF-8 - Выполнение сканирования:
Из корневого каталога вашего проекта выполните команду сканера:
sonar-scannerПосле завершения анализа результаты будут доступны на вашей панели мониторинга SonarQube.
Цены
SonarQube предлагает модель Freemium:
- Community Edition: Бесплатная и с открытым исходным кодом, предлагает статический анализ для более чем 15 языков.
- Developer Edition: Платная подписка, добавляющая такие функции, как анализ pull request и анализ для языков, таких как Swift и Objective-C.
- Enterprise Edition: Платная подписка, предназначенная для крупных организаций, предлагающая расширенные функции безопасности, управление портфелем и отчетность.
- Data Center Edition: Для критически важных развертываний, предлагающая высокую доступность и масштабируемость.