ktlint 作为 detekt 中的格式化程序

use*_*158 6 android android-gradle-plugin detekt

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

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"
}
Run Code Online (Sandbox Code Playgroud)

检测基线.yml

autoCorrect: true

build:
  maxIssues: 10
  weights:
  # complexity: 2
  # LongParameterList: 1
  # style: 1
  # comments: 1
Run Code Online (Sandbox Code Playgroud)

项目级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
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我在detekt.gradle 中添加了用于格式化的 detekt 插件。我也能autoCorrectdetekt-baseline.yml。但是当我运行./gradlew detekt Generated html report时没有格式化代码,没有发现任何结果,但显示了指标。

当我./gradlew detektdetekt.gradle 中注释掉以下行后跑步时

//    config = files(file("$project.rootDir/tools/detekt.yml"))
Run Code Online (Sandbox Code Playgroud)

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

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


这是一个安卓项目。

Kho*_*han 5

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

detekt {
    autoCorrect = true
}
Run Code Online (Sandbox Code Playgroud)

https://detekt.github.io/detekt/changelog-rc.html#rc15