Найти тему
Android Hokage

Github Actions с анализом кода Ktlint, Detekt - подключаем CI Android

Оглавление

В этой статье я буду внедрять статический анализ кода:
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 и экспортируем:

Экспортируем Editor Config File
Экспортируем Editor Config File

Запустить проверку 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.

Успешно пройденные проверки на моем проекте:

github actions
github actions

Надеюсь тебе помог этот пошаговый гайд! Задавай свои вопросы в комментариях или в телеграмм.