Как подключить SonarQube в свой проект

Читать в полной версии →

В современной разработке программного обеспечения важно не только быстро выпускать новый функционал, но и поддерживать высокое качество кода. Плохо написанный код может привести к ошибкам, уязвимостям безопасности, сложностям в поддержке и масштабировании проекта. Чтобы этого избежать, разработчики используют различные инструменты статического анализа кода. Одним из таки инструментов для анализа качества кода является SonarQube.

SonarQube — это платформа для непрерывного анализа и контроля качества кода. SonarQube поддерживает множество языков программирования и предоставляет детализированные отчеты, которые помогают разработчикам выявлять и устранять проблемы на ранних стадиях разработки.

В этой статье мы разберём, как подключить SonarQube к своему проекту и начать использовать его для улучшения качества кодовой базы.

Начало работы

Чтобы начать работу, перейдите на сайт SonarQube и нажмите Try Now для регистрации нового пользователя.

Начало работы с SonarQube

Из списка платформ выберите GitHub.

Выберите GitHub

После успешного входа вы увидите экран приветствия. Выберите Analyze your first projects > Import an organization from GitHub.

Экран приветствия

Следуйте инструкциям для установки SonarQube Cloud App в GitHub. Разрешите доступ к вашей организации/аккаунту. Выберите репозитории для анализа (можно выбрать все или конкретные). Подтвердите установку приложения.

Система автоматически создаст SonarQube Cloud организацию, соответствующую структуре вашей организации на GitHub. Вы можете изменить название и ключ для своей организации или согласиться с предложенными.

SonarQube Cloud организация

Далее вам будет предложено выбрать тарифный план.

Выберите тарифный план

Выбираем бесплатный тариф Free, он подходит для открытых репозиториев, предоставляя полный функционал анализа без ограничений. После выбора нажимаем Create Organization — это завершит настройку и откроет доступ к анализу ваших проектов.

На этом подготовка к работе окончена, можно переходить к анализу проектов.

Создание нового проекта

Следующий шаг — импорт репозиториев, которые вы хотите проанализировать, из вашей организации GitHub в вашу недавно созданную организацию SonarQube Cloud. Для каждого импортированного репозитория будет создан соответствующий проект SonarQube Cloud.

В правом верхнем углу нажмите на значок + и выберите Analyze New Project.

Выберите Analyze New Project

Выберите вашу организацию на GitHub и в предложенном списке отметьте галочками те репозитории, которые нужно проанализировать. После этого нажмите Set Up.

Выбор репозиториев для анализа

Следующий шаг - установить определение нового кода (NCD) для вашего проекта. NCD определяет, какая часть вашего кода считается новым кодом.

Установите определение нового кода

Для нашего проекта подойдет NCD Previous version, так анализ будет запускаться на каждый новый пуш в репозиторий. Выберите Previous version и нажмите Create Project

Автоматический анализ

Для репозиториев GitHub SonarQube Cloud предлагает два метода анализа: автоматический анализ и анализ на основе CI. Когда вы импортируете проект, SonarQube Cloud проверяет репозиторий на соответствие требованиям для возможности автоматического анализа. Если репозиторий соответствует необходимым условиям, SonarQube Cloud автоматически запускает анализ после создания проекта.

В этом разделе мы рассмотрим базовый сценарий, в котором SonarQube Cloud автоматически запускает анализ вашего репозитория.

Если репозиторий соответствует требованиям автоматического анализа, то после нажатия кнопки Create Project анализ начнется автоматически и после его завершения вы увидите результат.

Автоматический анализ и результат

Публикация результатов проверки

После окончания анализа вы можете просмотреть результаты проверки качества кода, включая выявленные проблемы и уязвимости.

Результаты анализа

Вы также можете разместить бейджи в своем README-файле репозитория на GitHub, чтобы продемонстрировать качество вашего кода.

Бейджи в README-файле репозитория на GitHub

Бейджи расположены в разделе Information. Здесь вы можете выбрать нужный бейдж, скопировать ссылку на него и вставить в README своего проекта

Анализ на основе CI и покрытие тестам

Для некоторых проектов автоматический анализ может быть недоступен или не полностью удовлетворять потребностям. Например, для проектов на Java автоматический анализ доступен в ограниченном режиме. Кроме того, если необходимо измерить покрытие тестами, автоматический анализ также не подойдет.

В этом разделе мы рассмотрим альтернативный сценарий, в котором автоматический анализ недоступен, ограничен или не соответствует нашим требованиям

Если автоматический анализ не доступен для проекта, вы увидите такой экран:

Автоматический анализ не доступен

Это значит, что вам необходимо настроить анализ на основе CI. В этом случае сканирование и анализ происходят не в SonarQube Cloud, а в вашей среде сборки, как часть процесса сборки проекта. Вам необходимо будет настроить процесс сборки для выполнения анализа при каждой сборке и передачи результатов в SonarQube Cloud.

Выберите Github Actions как инструмент непрерывной интеграции. После этого SonarQube предоставит подробную инструкцию, как наладить процесс анализа и публикации результатов именно для вашего проекта.

Конкретные действия будут различаться в зависимости от языка программирования и используемых инструментов. Но все же есть общие шаги, которые необходимо выполнить для настройки процесса анализа в SonarQube. Потребуется настроить конфигурацию SonarQube и встроить анализ в процесс сборки в GitHub Actions, для чего необходимо отредактировать файл workflow

Ниже приведен пример настройки процесса анализа для проектов на Java c системой сборки Gradle:

Пример настройки процесса анализа

А это пример инструкции, сформированной SonarQube для проекта на PHP. Здесь дополнительно понадобится создать отдельный файл sonar-project.properties с настройками.

Отдельный файл sonar-project.properties с настройками

Выполните все шаги из предоставленной инструкции. После этого необходимо запушить изменения в свой репозиторий для запуска анализа. Если во время анализа возникнут какие-либо ошибки или проблемы, можно просмотреть логи сборки в GitHub Actions, чтобы определить причину проблемы и устранить ее.

Анализ покрытия кода тестами

Если нужно измерить покрытие кода тестами, автоматический анализ не подойдет, поскольку он не может измерить покрытие кода. В этом случае тоже необходимо использовать анализ на основе CI, чтобы получить полную картину качества вашего кода.

Aнализ на основе CI

Если ваш проект уже анализируется автоматически, вам потребуется переключится с автоматического анализа на анализ на основе CI. Для этого перейдите в раздел Administration проекта и выберите пункт Analysis Method. Отключите автоматический анализ, а затем выполните все шаги из пункта «Анализ на основе CI».

Выводы

В завершении статьи подведем итоги и выделим основные моменты, касающиеся использования SonarQube

Для более детального изучения можно посмотреть примеры настройки SonarQube для различных языков программирования в наших репозиториях: