В этой статье я буду внедрять статический анализ кода:
1. Внедрим в проект автоматическую проверку статическим анализатором detekt.
2. Внедрим линтер ktlint.
3. Настроим CI на основе Actions (от Github)
Настроим такой pipeline:
- Прогон статических анализаторов: detekt, ktlint
- Сборка проекта
- Прогон тестов junit
pipeline должен срабатывать на любой Pull Request и изменения в Pull Request'е.
Подключаем ktlint
Подключать ktlint будем с помощью этой библиотеки:
Добавьте данный код в build.gradle вашего проекта:
Дальше создаем файл .editorconfig в нем хранятся правила форматирования кода. Это файл можно сгенерировать с помощью Android Studio:
Переходим в File - Settings - Editor - Code Styles и экспортируем:
Запустить проверку ktlint можно в терминале командами:
.\gradlew ktlintCheck - находит все ошибки
.\gradlew ktlintFormat - автоматически исправляет ошибки, которые можно исправить.
Подключаем detekt
Добавьте данный код в build.gradle вашего проекта:
plugins {
id "io.gitlab.arturbosch.detekt" version "$detekt_version"
}
detekt {
toolVersion = "1.10.0"
config = files("config/detekt/detekt.yml")
buildUponDefaultConfig = true
failFast = true
input = files("app/src/main/java", "app/src/main/kotlin")
reports {
html {
enabled = true
destination = file("app/build/detekt/detekt.html")
}
}
}
tasks.detekt.jvmTarget = "1.8"
Еще нужно создать файл в config/detekt/detekt.yml
Содержимое этого файла возьмите здесь.
Запустить проверку detekt можно в терминале командой:
.\gradlew detekt - находит все ошибки
Подключаем Github Actions
Для этого создаем в своем проекте файл:
.github/workflows/android-build.yml
Вот его содержимое:
name: Android Build
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set Up JDK
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Make gradlew executable
run: chmod +x ./gradlew
- name: Detekt
run: ./gradlew detekt
- name: Ktlint
run: ./gradlew ktlintCheck
- name: Build
run: ./gradlew build
- name: Tests
run: ./gradlew test
Проверки будут проходится при создании и изменении pull request.
Успешно пройденные проверки на моем проекте:
Надеюсь тебе помог этот пошаговый гайд! Задавай свои вопросы в комментариях или в телеграмм.