Blog

gradle の detekt と detektMain の違い

./gradlew detekt では一件も検出されないが、detektMain だと検出されまくるという時がある。

一般的な checkstyle などのプラグインではcheckstyleMain は checkstyle をメインソースセットに対してだけ実行するという意味なので、checkstyleMain と checkstyleTest を足したものにだいたい等しいのだが、detekt の場合は違う。

detektMain/detektTest の時は Type Resolution が有効になる という違いがある。

detekt の組み込みのルールの中にも、Type Resolution が有効じゃないと動かないテストも多いので注意が必要(NullableToStringCall など)。 ./gradlew detekt で CI していると./gradlew detektMain では通らないコードができあがる。