如何在您的Android项目中添加一尘不染的代码格式?
#初学者 #kotlin #android #gradle

逐步指南,将Kotlin脚本(KTS)和Groovy Build build gradle文件添加到您的Android项目中添加一尘不染的代码格式

我一直在许多开源代码中看到了这一一尘不染,事实证明,它是用于Android开发的Gradle Build System的一个非常流行的编码样式插件。

所以我尝试了一下,并在项目中使用它。这是我将此一尘不染的插件添加到现有项目中的步骤,该插件由Kotlin脚本(KTS)和Groovy Build Build build Gradle文件组成。

1.添加com.diffplug.spoteless插件

在项目级构建中添加com.diffplug.spotless.gradle/.kts。

kts

plugins {
    /*...*/
    id("com.diffplug.spotless") version "6.19.0" apply false
}

Groovy

plugins {
    /*...*/
    id 'com.diffplug.spotless' version '6.19.0' apply false
}

2.配置一尘不染

在项目级构建的末尾添加以下内容。gradle/.kts。

kts

subprojects {
    apply(plugin = "com.diffplug.spotless")
    configure<com.diffplug.gradle.spotless.SpotlessExtension> {
        kotlin {
            target("**/*.kt")
            targetExclude("$buildDir/**/*.kt")

            ktlint()
            licenseHeaderFile(rootProject.file("spotless/copyright.kt"))
        }

        kotlinGradle {
            target("*.gradle.kts")
            ktlint()
        }
    }
}

Groovy

subprojects {
    apply plugin: 'com.diffplug.spotless'
    spotless {
        kotlin {
            target '**/*.kt'
            targetExclude("$buildDir/**/*.kt")

            ktlint()
            licenseHeaderFile rootProject.file('spotless/copyright.kt')
        }

        groovyGradle {
            target '*.gradle'
            greclipse()
        }
    }
}

几个注:

  • target("**/*.kt")需要在子目录中包括所有kotlin文件。 **指示子目录。

  • licenseHeaderFile在每个Kotlin文件中添加了版权文本标头。可以找到spotless/copyright.kt文件的示例。

  • 不需要在target("*.gradle.kts")中明确使用**,它已经包括子目录。

3.运行一尘不染的代码格式

在您的Android Studio终端中运行以下命令。

在不进行更改的情况下检查:

 .\gradlew spotlessCheck

检查并应用更改:

 .\gradlew spotlessApply

SpotlessScheck对我来说有点没用。我通常只是直接直接运行。

如果遇到错误,它不会直接应用更改。我遇到的一些错误是

通配符进口

规则:标准:无妻子-Imports

通配符导入

java.lang.AsserTionError:线上错误:5,列:1

规则:标准:无妻子-Imports

通配符导入

没有空格开始功能主体

规则:标准:功能启动体间距

期望在启动功能主体之前一个单个空白

java.lang.assertionError:线上错误:7,列:57

规则:标准:功能启动体间距

期望在启动功能主体之前一个单个空白

修复了所有错误后,它将版权标头和默认编码样式应用于文件。

4.在构建中自动化一尘不染

如果您懒惰。

在您的项目级构建中添加此内容。

kts / groovy < / strong>

subprojects {
    /*...*/
    afterEvaluate {
        tasks.named("preBuild") {
            dependsOn("spotlessApply")
        }
    }
}

一尘不染的问题

  • 官方文件很烂 - 我遵循Doc here。不,它不起作用!

  • 一次错误 - 没有开玩笑,我的项目中有很多通配符进口。我必须修复每个错误,然后重新运行一尘不染,以解决下一个错误。幸运的是,我可以search the file content而不是依靠一尘不染。

  • 无法禁用规则 - 我尝试过,但我没有工作。因此,我不知道这是否可行。这根本没有任何文件。

例子

github存储库:demo_cleanemptyCompose


最初出版于https://vtsen.hashnode.dev