В современной разработке программного обеспечения важно не только быстро выпускать новый функционал, но и поддерживать высокое качество кода. Плохо написанный код может привести к ошибкам, уязвимостям безопасности, сложностям в поддержке и масштабировании проекта. Чтобы этого избежать, разработчики используют различные инструменты статического анализа кода. Одним из таки инструментов для анализа качества кода является SonarQube.
SonarQube — это платформа для непрерывного анализа и контроля качества кода. SonarQube поддерживает множество языков программирования и предоставляет детализированные отчеты, которые помогают разработчикам выявлять и устранять проблемы на ранних стадиях разработки.
В этой статье мы разберём, как подключить SonarQube к своему проекту и начать использовать его для улучшения качества кодовой базы.
Чтобы начать работу, перейдите на сайт SonarQube и нажмите Try Now для регистрации нового пользователя.
Из списка платформ выберите GitHub.
После успешного входа вы увидите экран приветствия. Выберите Analyze your first projects > Import an organization from GitHub.
Следуйте инструкциям для установки SonarQube Cloud App в GitHub. Разрешите доступ к вашей организации/аккаунту. Выберите репозитории для анализа (можно выбрать все или конкретные). Подтвердите установку приложения.
Система автоматически создаст SonarQube Cloud организацию, соответствующую структуре вашей организации на GitHub. Вы можете изменить название и ключ для своей организации или согласиться с предложенными.
Далее вам будет предложено выбрать тарифный план.
Выбираем бесплатный тариф Free, он подходит для открытых репозиториев, предоставляя полный функционал анализа без ограничений. После выбора нажимаем Create Organization — это завершит настройку и откроет доступ к анализу ваших проектов.
На этом подготовка к работе окончена, можно переходить к анализу проектов.
Следующий шаг — импорт репозиториев, которые вы хотите проанализировать, из вашей организации GitHub в вашу недавно созданную организацию SonarQube Cloud. Для каждого импортированного репозитория будет создан соответствующий проект SonarQube Cloud.
В правом верхнем углу нажмите на значок + и выберите 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, чтобы продемонстрировать качество вашего кода.
Бейджи расположены в разделе Information. Здесь вы можете выбрать нужный бейдж, скопировать ссылку на него и вставить в README своего проекта
Для некоторых проектов автоматический анализ может быть недоступен или не полностью удовлетворять потребностям. Например, для проектов на Java автоматический анализ доступен в ограниченном режиме. Кроме того, если необходимо измерить покрытие тестами, автоматический анализ также не подойдет.
В этом разделе мы рассмотрим альтернативный сценарий, в котором автоматический анализ недоступен, ограничен или не соответствует нашим требованиям
Если автоматический анализ не доступен для проекта, вы увидите такой экран:
Это значит, что вам необходимо настроить анализ на основе CI. В этом случае сканирование и анализ происходят не в SonarQube Cloud, а в вашей среде сборки, как часть процесса сборки проекта. Вам необходимо будет настроить процесс сборки для выполнения анализа при каждой сборке и передачи результатов в SonarQube Cloud.
Выберите Github Actions как инструмент непрерывной интеграции. После этого SonarQube предоставит подробную инструкцию, как наладить процесс анализа и публикации результатов именно для вашего проекта.
Конкретные действия будут различаться в зависимости от языка программирования и используемых инструментов. Но все же есть общие шаги, которые необходимо выполнить для настройки процесса анализа в SonarQube. Потребуется настроить конфигурацию SonarQube и встроить анализ в процесс сборки в GitHub Actions, для чего необходимо отредактировать файл workflow
Ниже приведен пример настройки процесса анализа для проектов на Java c системой сборки Gradle:
А это пример инструкции, сформированной SonarQube для проекта на PHP. Здесь дополнительно понадобится создать отдельный файл sonar-project.properties с настройками.
Выполните все шаги из предоставленной инструкции. После этого необходимо запушить изменения в свой репозиторий для запуска анализа. Если во время анализа возникнут какие-либо ошибки или проблемы, можно просмотреть логи сборки в GitHub Actions, чтобы определить причину проблемы и устранить ее.
Если нужно измерить покрытие кода тестами, автоматический анализ не подойдет, поскольку он не может измерить покрытие кода. В этом случае тоже необходимо использовать анализ на основе CI, чтобы получить полную картину качества вашего кода.
Если ваш проект уже анализируется автоматически, вам потребуется переключится с автоматического анализа на анализ на основе CI. Для этого перейдите в раздел Administration проекта и выберите пункт Analysis Method. Отключите автоматический анализ, а затем выполните все шаги из пункта «Анализ на основе CI».
В завершении статьи подведем итоги и выделим основные моменты, касающиеся использования SonarQube
Для более детального изучения можно посмотреть примеры настройки SonarQube для различных языков программирования в наших репозиториях: