diffplug / spotless

Keep your code spotless
Apache License 2.0
4.56k stars 458 forks source link

Allow enabling custom rulesets for ktlint #1220

Closed jonesetc closed 11 months ago

jonesetc commented 2 years ago

Follow up from https://github.com/diffplug/spotless/issues/409#issuecomment-1107055624

I had been watching the issue around this before, but it was closed after just the first request (experimental ruleset) was completed. Currently my team runs a second formatting plugin (https://github.com/JLLeitschuh/ktlint-gradle) that reruns ktlint so that we can use a custom ruleset that helps us avoid some common pitfalls in our codebase.

The way that we use this today looks roughly like:

build.gradle.kts

plugins {
    java
    kotlin("jvm")
    id("com.diffplug.spotless")
    // The extra ktlint plugin
    id("org.jlleitschuh.gradle.ktlint")
}

dependencies {
    // Add the ruleset from a submodule
    ktlintRuleset(project(":linting"))
}

spotless {
    kotlin {
        target("**/*.kt")
        ktlint()
    }
}

// After running spotlessApply or spotlessCheck, run a last check with the custom rules
tasks.spotlessKotlin {
    finalizedBy(
        "ktlintCheck"
    )
}
bengaudiosi-toast commented 1 year ago

Any movement on this?

Goooler commented 11 months ago

Addressing the fix to #1896.

nedtwigg commented 11 months ago

Implemented in plugin-gradle 6.23.0 and plugin-maven 2.41.0 thanks to the incredibly prolific @Goooler.