ktlint作为detekt中的格式化程序

时间:2019-08-03 07:29:40

标签: android android-gradle-plugin detekt

我正在使用带有ktlint的detekt格式化我的代码,如下所示。

detekt.gradle

ext{
    toolVersion = "1.0.0-RC16"
}
detekt {
    input = files(...)

    filters = ".*/resources/.*,.*/build/.*"
    baseline = file("${project.rootDir}/tools/detekt-baseline.xml")
    reports{
        html{
            enabled = true
        }
        xml{
            enabled = false
        }
    }
    config = files(file("$project.rootDir/tools/detekt.yml"))
}

dependencies {
    detektPlugins "io.gitlab.arturbosch.detekt:detekt-formatting:$toolVersion"
}

detekt-baseline.yml

autoCorrect: true

build:
  maxIssues: 10
  weights:
  # complexity: 2
  # LongParameterList: 1
  # style: 1
  # comments: 1

项目级别 build.gradle

buildscript {
    ext{...}
    repositories {...}
    dependencies {...}
}

plugins{
    id "io.gitlab.arturbosch.detekt" version "1.0.0-RC16"
}

apply from: 'tools/detekt.gradle'
...


allprojects {
    repositories {...}
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

如您所见,我已经在 detekt.gradle 中添加了detekt插件用于格式化。我还在 detekt-baseline.yml 中启用了autoCorrect。但是我运行./gradlew detekt时代码未格式化 生成的html报告未显示任何发现,但显示了指标。

在注释掉 detekt.gradle 中的以下行后,我运行./gradlew detekt时。

//    config = files(file("$project.rootDir/tools/detekt.yml"))

它确实向我显示了一些发现,包括格式问题(例如:不必要的空白行)

如何配置detekt以根据ktlint自动设置代码格式?


这是一个android项目。

1 个答案:

答案 0 :(得分:1)

从detekt 1.1.0-RC15​​开始,您必须在gradle中启用自动更正:

detekt {
    autoCorrect = true
}

https://arturbosch.github.io/detekt/changelog-rc.html#migration-1