Intellij Idea ktlint和Kotlin项目扩展

kninwzqo  于 2022-12-17  发布在  Kotlin
关注(0)|答案(1)|浏览(154)

我尝试使用ktlint在项目中实现Kotlin检查样式。

plugins {
    id("org.jlleitschuh.gradle.ktlint") version "10.1.0" apply false
}

在根目录 * build.gradle.kts * 中以及

plugins {
id("org.jlleitschuh.gradle.ktlint")
}

在子项目的 build.gradle.kts
我打电话的时候
梯度检测
我得到了

FAILURE: Build failed with an exception.
 
* What went wrong:
org/jetbrains/kotlin/gradle/dsl/KotlinProjectExtension

我该怎么修呢?

vuktfyat

vuktfyat1#

这就是我如何在Android Gradle的gradle.kts文件上使用Klint和KotlinDSL的方法。同时还添加了Spotless和Kotlin DSL(代码格式化程序)。
同样值得注意的是,我的是不是一个多模块项目。

步骤1 - gradle.kts(应用程序)-添加Klint和Spotless插件并导入Reporters

import org.jlleitschuh.gradle.ktlint.reporter.ReporterType

plugins {
            id("com.android.application") ... 
            //Klint
            id("org.jlleitschuh.gradle.ktlint") version "11.0.0"

            //Spotless
            id("com.diffplug.spotless")
        }

步骤2 - gradle.kts(应用程序)-配置 * 仅限Klint *

// ktlintFormat task will need to run before preBuild
tasks.getByPath("preBuild")
    .dependsOn("ktlintFormat")

configure<org.jlleitschuh.gradle.ktlint.KtlintExtension> {

    android.set(true)
    ignoreFailures.set(false)
    disabledRules.set(setOf("final-newline", "no-wildcard-imports"))
    reporters {
        reporter(ReporterType.PLAIN)
        reporter(ReporterType.CHECKSTYLE)
        reporter(ReporterType.SARIF)
    }
}

第3步- gradle.kts(应用程序)-配置 * 仅适用于无瑕疵 *

configure<com.diffplug.gradle.spotless.SpotlessExtension> {
    kotlin {
        // version, setUseExperimental, userData and editorConfigOverride are all optional
        ktlint("0.45.2")
            .setUseExperimental(true)
            .userData(mapOf("android" to "true"))
            .editorConfigOverride(mapOf("indent_size" to 2))
    }
    kotlinGradle {
        target("*.gradle.kts") // default target for kotlinGradle
        ktlint() // or ktfmt() or prettier()
    }
}

步骤4 - gradle.kts(项目)-在类路径中添加 Spotless

buildscript {

    repositories{
        google()
        mavenCentral()
    }
    dependencies {
        
        ... 
        //class path for Spotless
        classpath("com.diffplug.spotless:spotless-plugin-gradle:6.9.1")
    }

}

这两个插件在此设置下工作正常。

相关问题