gradle向け ErrorProneでsuggestedFixを適用する方法

以下のプラグインを使っている前提で書きます。

github.com

こうです。 これではうまく動かないので追記を参照

tasks.withType(JavaCompile).configureEach {
    options.errorprone {
        // error-proneのsuggested fixesを適用する
        // usage: ./gradlew compileJava compileTestJava -PerrorProneApply
        if (project.hasProperty("errorProneApply")) {
            errorproneArgs.addAll("-XepPatchLocation:IN_PLACE")
        }
    }
}

2024/10/16追記 動かないケースがあったので直した

上だとうまく動かないケースがあったのでこうした。 もうちょっと楽な方法があったら教えて下さい。

ext {
    errorProneApply = project.hasProperty("errorProneApply")
}

tasks.register('errorProneApply').configure {
    errorProneApply = true
    // error-proneはコンパイル時に動くのでcleanの後に実行する
    dependsOn('clean', tasks.withType(JavaCompile))
}

class ErrorProneApply implements CommandLineArgumentProvider {

    private final Project project

    ErrorProneApply(Project project) {
        this.project = project
    }

    @Override
    Iterable<String> asArguments() {
        if (!project.hasProperty("errorProneApply") || !project.property("errorProneApply")) {
            return []
        }

        return ["-XepPatchLocation:IN_PLACE"]
    }
}

tasks.withType(JavaCompile).configureEach {
    options.errorprone {
        // custom taskでpropertyの上書きをするために、errorproneArgumentProvidersを追加する
        errorproneArgumentProviders.add(new ErrorProneApply(project))
    }
}

終わり。調べても出てこんので、メモ程度に書いておいた。