Как разработчик, вы хотите реализовать наилучшее качество кода. С этими двумя инструментами вы можете добиться этого быстро и без особых усилий.

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

Обзор

1. Introduction
|
2. SonarQube
|--- 2.1 Installation
|--- 2.2 Configuration
|--- 2.3 Analyzing code quality with SonarQube
3. Gradle Detekt
|
4. Combining both tools
|
5. Closing notes

1. Введение

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

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

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

2. СонарКьюб

Что такое SonarQube?

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

2.1. Монтаж

Следующий файл docker-compose.sq.yml можно использовать для создания экземпляра SonarQube в Docker Swarm.

Чтобы запустить SonarQube, необходимо экспортировать используемую переменную среды в файле docker-compose.sq.yml:

$> export PRIMARY_DOMAIN=knulst.de

После этого стек можно развернуть

$> docker stack deploy -c docker-compose.sq.yml sonarqube

и он будет доступен по адресу https://sq.knulst.de.

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

sysctl -w vm.max_map_count=262144

(В Windows необходимо запустить оболочку WSL:wsl.exe -d docker-desktop)

2.2. Конфигурация

Теперь вы можете войти в веб-панель управления (пользователь/пароль по умолчанию = admin/admin) и начать процесс настройки. Чтобы использовать этот экземпляр SonarQube в любом приложении для Android, необходимо создать токен входа в профиль пользователя по адресу https://sq.knulst.de.

После создания этого токена необходимо настроить три файла:

  1. build.gradle(проект)
  2. build.gradle (приложение)
  3. gradle.properties

Первое дополнение необходимо в рамках проектов build.gradle. Важно добавить на корневом уровне:

plugins {
    id "org.sonarqube" version "2.8"
}

Во-вторых, в приложении build.gradle должен быть создан новый блок:

Важно знать, что этот блок используется приложением, написанным на Kotlin, которое имеет несколько разновидностей. Чтобы использовать этот блок кода, необходимо настроить activeFlavor и sonar.sources.

Кроме того, в приложение build.gradle необходимо вставить еще две строки:

  1. Добавьте пакет SonarQube в зависимости:
    implementation "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3"
  2. Примените подключаемый модуль SonarQube
    apply plugin: 'org.sonarqube'

Последний шаг — добавить токен, URL-адрес и имя проекта в gradle.properties

2.3. Анализ качества кода с помощью SonarQube

После выполнения описанных выше шагов анализ можно запустить в терминале (или в студии Android):

$> gradle sonarqube

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

3. Градл детект

Что такое detekt?

detekt — это инструмент статического анализа кода для языка программирования Kotlin. Он работает с абстрактным синтаксическим деревом, предоставляемым компилятором Kotlin.

Detektможно внедрить в любоеприложение для Android на основе Kotlin. Его можно использовать с самоопределяемым набором правил для проверки приложения. Включение detekt очень просто и выполняется в четыре шага:

  1. Добавить detekt в проектbuild.gradle
dependencies { 
    [...]
    classpath("io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.17.0")
}

2. Создайте detekt.yml с определенным набором правил. Загрузите образец файла здесь и сохраните его в пределах project_folder/detekt/detekt.yml

3. Примените подключаемый модуль detekt в приложении build.gradle.

apply plugin: "io.gitlab.arturbosch.detekt"

4. Добавьте блокировку detektвприложение build.gradle.

Теперь можно создать отчет detekt, выполнив:

$> gradle detekt

4. Сочетание обоих инструментов

После включения обоих инструментов их можно комбинировать. Для этого нужно всего лишь добавить следующую строку кода в блок SonarQube:

sonarqube {
    properties {
            [...]
            property "sonar.kotlin.detekt.reportPaths", "build/reports/detekt.xml"
            }
}

Теперь можно создать информативную запись проекта на сайте SonarQube, выполнив:

$> gradle detekt
$> gradle sonarqube

После выполнения обеих команд сводка проекта доступна по адресу https://sq.knulst.de/projects и покажет все найденные проблемы!

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

5. Заключительные заметки

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

Для локальной разработки вы можете использовать это docker-compose и эти заметки, чтобы знать, что вам нужно изменить.

Want to Connect With the Author?
Here's my GitHub handle and Personal blog.