🧹
spotlessでktlintをつかう
Kotlin の Formatter/Linter って何がデファクトスタンダードなんですかね…?
Spotless[1] を使って ktlint[2] による Lint/Format を行います. ktlint 単体だと Maven での設定が面倒なので, Spotless を使って設定します.
環境
Kotlin 2.0.21
Maven 3.9.9
spotless-maven-plugin 2.43.0
使い方
spotless-maven-plugin
のドキュメントにしたがって設定するだけです. Maven の Phase で実行できるように executions
の設定を追加します.
spotless-maven-plugin
の goal
は apply
と check
の 2つなので, それぞれを Phase に割り当てます.これで mvn clean
を実行するとフォーマットが適用され mvn compile
時に Lint check が行われます. compile
に割り当てられているのは ErrorProne の名残です.
<build>
<plugins>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<configuration>
<kotlin>
<includes>
<include>src/main/kotlin/**/*.kt</include>
<include>src/test/kotlin/**/*.kt</include>
</includes>
<ktlint />
</kotlin>
</configuration>
<executions>
<execution>
<id>spotless-clean</id>
<goals>
<goal>apply</goal>
</goals>
<phase>clean</phase>
</execution>
<execution>
<id>spotless-compile</id>
<goals>
<goal>check</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
Spotless は Java でも使えるし, 今回使った ktlint 以外もすぐに導入できます. 簡単ですね.
Discussion