Как разработчик, вы хотите реализовать наилучшее качество кода. С этими двумя инструментами вы можете добиться этого быстро и без особых усилий.
Качество кода очень важно, и вы всегда должны пытаться оптимизировать свою реализацию. В этой статье показаны два инструмента, которые можно комбинировать для достижения лучшего качества, особенно в приложениях для 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.
После создания этого токена необходимо настроить три файла:
build.gradle
(проект)build.gradle
(приложение)gradle.properties
Первое дополнение необходимо в рамках проектов build.gradle
. Важно добавить на корневом уровне:
plugins {
id "org.sonarqube" version "2.8"
}
Во-вторых, в приложении build.gradle
должен быть создан новый блок:
Важно знать, что этот блок используется приложением, написанным на Kotlin, которое имеет несколько разновидностей. Чтобы использовать этот блок кода, необходимо настроить activeFlavor
и sonar.sources
.
Кроме того, в приложение build.gradle
необходимо вставить еще две строки:
- Добавьте пакет SonarQube в зависимости:
implementation "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3"
- Примените подключаемый модуль SonarQube
apply plugin: 'org.sonarqube'
Последний шаг — добавить токен, URL-адрес и имя проекта в gradle.properties
2.3. Анализ качества кода с помощью SonarQube
После выполнения описанных выше шагов анализ можно запустить в терминале (или в студии Android):
$> gradle sonarqube
В обзоре проекта на сайте SonarQube должен быть обзор проекта после завершения выполнения команды:
3. Градл детект
Что такое detekt
?
detekt — это инструмент статического анализа кода для языка программирования Kotlin. Он работает с абстрактным синтаксическим деревом, предоставляемым компилятором Kotlin.
Detektможно внедрить в любоеприложение для Android на основе Kotlin. Его можно использовать с самоопределяемым набором правил для проверки приложения. Включение detekt
очень просто и выполняется в четыре шага:
- Добавить 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.