Советы для вашего проекта Kotlin
Статья здесь: https://flatteredwithflutter.com/tips-for-kotlin-project/
В этой статье приведены некоторые советы о том, что следует включить в ваш проект kotlin. Мы кратко расскажем:
- Ктлинт
- Детект
- Рабочий процесс на гитхабе
Примечание. В этой статье предполагается, что читатель знаком с Kotlin.
Ктлинт
Линтинг — это процесс анализа кода на наличие потенциальных ошибок, и один из способов сделать это в Kotlin — использовать Ktlint. Согласно документации:
Ktlint — это Kotlin-линтер против байкшединга.
Есть два способа интегрировать Ktlint в проект kotlin.
jlleitschuh/ktlint-gradle jeremymailen/kotlinter-gradle
Мы будем использовать ktlint-gradle, который является оберткой над ktlint.
Настраивать
- Перейдите на уровень проекта build.gradle.
- Внутри
buildscripts
добавьте последнюю версию вext
и добавьте зависимость вdependencies
ext { // https://github.com/JLLeitschuh/ktlint-gradle/releases ktlintPluginVersion = "10.2.0" } dependencies { classpath 'com.android.tools.build:gradle:7.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.32" ## KTLINT DEPENDENCY classpath "org.jlleitschuh.gradle:ktlint- gradle:$ktlintPluginVersion" }
- Внутри раздела
repositories
добавьте это
repositories { google() mavenCentral() ## ADDED THIS FOR KTLINT maven { url "https://plugins.gradle.org/m2/" } }
- Создаем отдельный файл для настройки/настройки
ktlint
. Создайте каталогbuildscripts
на уровне проекта и внутри него создайте новый файл с именемktlint.gradle
apply plugin: "org.jlleitschuh.gradle.ktlint" ktlint { // https://github.com/pinterest/ktlint/releases version = "0.42.1" reporters { reporter "plain" reporter "checkstyle" reporter "html" } outputColorName = "RED" }
- Наконец, мы применяем эту конфигурацию ко всем нашим
subprojects
, добавляя ниже внутри нашего уровня проекта build.gradle
subprojects { apply from: "../buildscripts/ktlint.gradle" }
- Нажмите
Sync Now
. Если все прошло успешно, мы должны увидеть задачу gradle под названиемktlintformat
.
Примечание. Если вы не видите свои задачи Gradle, проверьте этот пост.
- После запуска задачи
ktlintformat
он выводит результаты (в случае ошибок он покажет файл, в котором есть подробная информация о файлах)
Нажмите на файл .txt
и исправьте ошибки соответствующим образом.
Примечание. У вас, вероятно, будет много изменений файлов, поскольку
ktlintformat
проверяет все файлы вашего проекта и исправляет их в соответствии со стандартом kotlin.
Детект
Detekt — инструмент статического анализа кода для языка программирования Kotlin. Он работает с абстрактным синтаксическим деревом, предоставляемым компилятором Kotlin.
Он анализирует код Kotlin с несколькими наборами правил и помечает код, нарушающий любое из его правил.
Настраивать
- Перейдите на уровень проекта build.gradle.
- Внутри
buildscripts
добавьте последнюю версию вext
и добавьте зависимость вdependencies
ext { // https://github.com/detekt/detekt/releases detektVersion = "1.17.0" } dependencies { classpath 'com.android.tools.build:gradle:7.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.32" ## DETEKT DEPENDENCY classpath "io.gitlab.arturbosch.detekt:detekt-gradle- plugin:$detektVersion" }
- Создаем отдельный файл для настройки/настройки
detekt
. Создайте каталогbuildscripts
на уровне проекта (игнорируйте, если вы создали его на предыдущем шаге) и внутри него создайте новый файл с именемdetekt.gradle
apply plugin: "io.gitlab.arturbosch.detekt" detekt { config = files("${rootProject.projectDir}/config/detekt/detekt.yml") reports { html.enabled = true xml.enabled = true txt.enabled = true } }
Примечание. Файл конфигурации
detekt.yml
еще не существует, мы увидим его на следующем шаге.
- Наконец, мы применяем эту конфигурацию ко всем нашим
subprojects
, добавляя ниже внутри нашего уровня проекта build.gradle
subprojects { apply from: "../buildscripts/detekt.gradle" }
- Нажмите
Sync Now
Если все прошло успешно, мы должны увидеть задачу gradle с именемdetektGenerateConfig
и запустить ее.
- После запуска задачи создается файл конфигурации с именем
detekt.yml
.
который включает в себя все конфигурации, поставляемые с detekt. Мы можем настроить его в соответствии с нашими предпочтениями.
- Наконец, мы запускаем следующее в нашем проекте
./gradlew detekt
Это покажет вам все проблемы внутри вашего проекта вместе с именем конфигурации.
В случае, если вы хотите подавить какую-то проблему в файле, например, вышеупомянутые проблемы, связанные с MagicNumber
, мы можем просто перейти к файлу и добавить
@file:Suppress("MagicNumber")
Рабочий процесс на гитхабе
В приведенных выше шагах мы видели, как интегрировать ktlint
и detekt
в наш проект kotlin.
На последнем этапе мы интегрируем оба с нашим CI, гарантируя, что основная ветвь всегда останется стандартизированной.
- Добавьте каталог
.github
внутри проекта. - Создайте подкаталог
workflows
и внутри него создайте файл с именемandroid_build.yml
name: Android Build on: push jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v1 - name: Set Up JDK uses: actions/setup-java@v1 with: java-version: 1.11 - name: Build Project run: ./gradlew assemble - name: Run Tests run: ./gradlew test - name: Lint Checks run: ./gradlew ktlintCheck detekt
- На последнем шаге мы включаем
ktlintCheck
, а такжеdetekt
Поскольку это задание выполняется в режиме push, мы будем уверены, что код соответствует нашим соглашениям. - Мы также можем добавить правило защиты ветки, требующее прохождения проверки состояния и выбирающее
build
Другие статьи:
Source code