Рубрики
Без рубрики

Начало работы с SonarQube (java, maven и docker)

Как мы узнаем, достаточно ли хорош код, который мы пишем? Без ошибок? Не уязвим? Не вонючий? Задняя часть… Помечено качеством кода, maven, docker, java.

Как мы узнаем, достаточно ли хорош код, который мы пишем? Без ошибок? Не уязвим? Не вонючий?

Есть несколько инструментов, которые могут показать вам это, и сегодня я пишу о SonarQube .

Но, поскольку мне нравится подход с минимальными требуемыми шагами, я напишу ровно столько, сколько считаю необходимым для начала.

Я даже настрою его с помощью Docker image. В случае, если вы не знакомы с ним, вы можете проверить Изображения докеров – Вступление для начинающих которое я написал.

SonarQube как изображение докера

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

docker pull sonarqube:8.5.1-community

Где я это взял? На странице загрузки SonarQube есть команда docker pull, готовая к копированию. Проверьте это, могут быть доступны более новые версии.

Хорошо, изображение есть, и что теперь? Как и в случае с любым изображением docker, ознакомьтесь с документацией на Docker Hub, здесь в нашем случае.

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

Шаг 1. Найдите изображение докера для сообщества в Docker Hub (мы это уже делали)

Шаг 2. Запустите сервер, выполнив:

$ docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:8.5.1-community

На данный момент я не знаю, что это Флаг SONAR_ES_BOOTSTRAP_CHECKS_DISABLE есть, но сейчас это не важно понимать. Очевидно, что вы должны это сделать, так как это содержится в минимальной документации для быстрого запуска. И вы всегда можете воспользоваться Google, чтобы проверить это самостоятельно. Я провел краткую проверку и увидел, что SonarQube использует ElasticSearch внизу, и этот флаг предотвращает некоторые проверки, о которых мы не заботимся в данный момент. Мы хотим, чтобы SonarQube заработал и заработал.

Настройка проекта SonarQube

Войдите в http://localhost:9000 с учетными данными системного администратора,). Если вы не можете открыть страницу немедленно, подождите немного, не паникуйте. Если вы будете продолжать обновляться, как я, вы увидите это в какой-то момент

Во время входа в систему вы можете заметить это предупреждение:

Встроенная база данных должна использоваться только для целей оценки

Встроенная база данных не будет масштабироваться, она не будет поддерживать обновление до более новых версий SonarQube, и нет поддержки для переноса ваших данных из нее в другой компонент database engine.

На данный момент это совершенно нормально. Мы могли бы настроить внешнюю базу данных или сопоставить объем хранилища, но для быстрого запуска мы будем придерживаться встроенной базы данных. Определенно не рекомендуется для производственных проектов.

Нажмите на это Создать новый проект и добавьте туда несколько имен

Следующим шагом будет создание токена проекта, который будет использоваться для идентификации. Имейте в виду, что SonarQube будет иметь доступ к вашему коду (и иметь копию для целей анализа), поэтому важно, чтобы вы его защитили. Опять же, важно в производстве. Это краткая демонстрация, так что вам не нужно слишком беспокоиться о сохранении этих жетонов, давайте просто сделаем так, чтобы это сработало.

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

mvn sonar:sonar \
  -Dsonar.projectKey=hashnode-blog-showcase \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.login=YOUR-TOKEN-HERE

Дождитесь сообщения BUILD SUCCESS от Maven и перейдите в http://localhost:9000 еще раз. Еще лучше то, что вы можете нажать на ссылку в журнале maven.

ANALYSIS SUCCESSFUL, you can browse http://localhost:9000/dashboard?id=hashnode-blog-showcase

Обзор проекта

Вы должны увидеть что-то подобное. Итак, давайте просто сделаем краткий обзор того, что вы можете здесь увидеть:

  • Статус ворот качества : Пройден. Вы можете установить определенные правила для ворот качества, и на их основе вы получите логическое значение, пройденное или нет. Правило может быть, например Охват тестированием 80%
  • Новый Код/Общий Код : В целом, вы можете получить все отчеты в базе кода проекта. В новом коде вы можете увидеть разницу после выполнения второго анализа той же ветви. Таким образом, вы можете видеть только анализ ваших последних изменений.
  • Основная отчетность : Ошибки, Уязвимости, Проблемы с безопасностью, запахи кода и технические долги. Все с включенными ссылками, чтобы вы могли погрузиться в них. Технический долг измеряется некоторыми средними предположениями, сделанными SonarQube, и это может дать вам представление о том, сколько времени вы потратите на решение этих задач.
  • Покрытие : У меня есть 3 модульных теста, и SonarQube обнаруживает их, что приятно. Однако я помню, что должны быть активированы (или настроены) некоторые плагины SonarQube, чтобы он мог определять покрытие линии. Как вы можете видеть, на данный момент это 0,0%, и я знаю, что это неправильно.
  • Дублирование : В этом разделе можно найти и показать, сколько у вас дублированного кода в пересчете на строку и процент от общей базы кода.

Погружаясь, как может помочь нам SonarQube?

Хорошо, мы видим, что в этом проекте есть одна ошибка и 11 запахов кода. Как мы можем действовать дальше? Что ж, общее эмпирическое правило состоит в том, чтобы начинать с ошибок, уязвимостей и проблем безопасности.

Что мне нравится в SonarQube, так это то, что они сообщают о что , где и как части. Давайте погонимся за этим жуком. Если я нажму на ссылку в части “Ошибки”, она покажет мне подробности.

Я даже могу перейти к коду, и он покажет мне, где именно он находится.

Что мне также нравится, так это то, что SonarQube дает вам обзор серьезности, и вы можете видеть, что это Майор серьезность. Есть два уровня выше Критического и Блокиратор . Обратите на это внимание.

Следующая классная вещь, которая мне в этом нравится, – это то, что у вас есть полное описание того, почему вы должны что-то изменить. Вы, наверное, видели это Почему это проблема? ссылка. Вы часто узнаете кое-что оттуда . Они также предоставляют как совместимые, так и несоответствующие решения. Я покажу это на следующем скриншоте.

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

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

Вывод

SonarQube – это инструмент статического анализа кода. Он проверит ваш код на соответствие определенным правилам, чтобы увидеть, есть ли какие-то ошибки, проблемы с безопасностью, подводные камни и т.д.

Вы должны использовать его, так как он дает вам много объяснений, почему и как вы можете улучшить свой код. Конечно, вам не обязательно подчиняться на 100%, но, по крайней мере, подумайте о внесении изменений в свой код.

Вы можете настроить его очень просто с помощью Maven, особенно если вы установите его как образ Docker.

Цель этого поста в блоге – показать вам основы анализа SonarQube. Я планирую написать немного больше на эту тему позже.

@@брунораджи

Оригинал: “https://dev.to/brunoraljic/getting-started-with-sonarqube-java-maven-and-docker-244n”