Флаттер и SonarQube

Если у вас есть приложение Flutter и вы хотите узнать о качестве своего кода или о том, какие части проекта необходимо улучшить, вы можете использовать Sonarqube для анализа вашего кода и получения этой информации для вас.

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

В этой статье я подробно покажу, как анализировать ваш код Flutter с помощью SonarQube и Docker, выполнив следующие шаги:

  • Локальный запуск Sonar
  • Создайте проект сонара
  • Загрузка сонарного сканера
  • Анализ вашего проекта Flutter
  • Проверка результатов

Локальный запуск Sonar

Вы можете запустить Sonar локально с помощью докера, для этого запустите команду docker run --rm -d -p 9000:9000/tcp edsondiasalves/sonarqube-flutter в своем терминале, он вытащит и запустит образ SonarQube с уже установленным SonarQube Flutter Plugin.

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

Чтобы создать образ Sonar и установить плагин самостоятельно, скачайте плагин и скопируйте его в работающий образ docker: docker cp ThePluginDownload.jar YourSonarQubeImage:/opt/sonarqube/extensions/plugins

Как только образ завершит извлечение и будет запущен, он будет доступен по адресу http://localhost:9000, для входа в систему используйте admin от имени пользователя и 1234 в качестве пароля

При нажатии на пункт меню Администрирование и в разделе Установлено мы видим, что установлен плагин Flutter версии 0.4.0.

Создайте проект сонара

Теперь пришло время создать наш проект сонара, для этого щелкните пункт меню Проект.

И в кнопке Добавить проект в центре страницы.

Теперь нажмите Вручную и укажите Ключ проекта. Обратите внимание, что отображаемое имя будет заполнено автоматически, вам не нужно его менять.

Нажмите кнопку Настроить, и появится новый экран, требующий от вас создать новый токен, указать имя и нажать кнопку Создать.

Для указанного имени токена будет создан новый токен.

При нажатии на кнопку Продолжить будет показано, как запустить анализ на разных платформах.

Теперь ваш проект Sonar уже создан.

Загрузка SonarScanner

SonarScanner — это официальный инструмент SonarQube, который сканирует ваш проект и загружает анализ в ваш проект Sonar.

Загрузите его в соответствии с вашей операционной системой и добавьте папку /bin в путь.

В качестве примера для версии Windows 4.7.0 в путь нужно добавить sonar-scanner-cli-4.7.0.2747-windows\bin

Чтобы убедиться, что все в порядке, запустите sonar-scanner -v на своем терминале и проверьте, будет ли версия возвращена правильно.

Анализ вашего проекта Flutter

Теперь создайте sonar-project.properties в корневой папке Flutter и вставьте следующий код.

Замените sonar.projectKey , sonar.projectName и sonar.login информацией, предоставленной ранее при создании проекта Sonar.

Теперь запустите flutter test --machine --coverage > tests.output , он запустит ваши локальные тесты и экспортирует их в файл перед загрузкой сонарным сканером.

Наконец, запустите sonar-scanner, чтобы начать анализ и загрузить его в свой проект Sonar.

Если все в порядке, в конце появится аналогичное сообщение.

Проверка результатов

После завершения сканирования вернитесь в Sonar и нажмите f5 или снова войдите в свой проект. Теперь мы можем увидеть основную общую информацию о проекте.

На вкладке обзора мы можем увидеть более общую информацию.

Если вам нужна дополнительная информация, изучите другие вкладки.

И Вуаля, дело сделано.

Как обычно, я упоминаю только самое основное использование инструмента, не стесняйтесь проверять более подробную информацию о Docker, SonarQube и Flutter на соответствующих страницах документации.

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

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