Checkstyle 8.13からClassFanOutComplexityでカウントされる対象が増えて死んだ話

以下のリリースノートにこんな記述がありました。

checkstyle.org

  • ClassFanOutComplexity: count complexity base annotations/extends/implements/methods params. Author: kazachka #4092

annotation, extends, implementsで使われているクラスもClassFanOutComplexityのカウント対象に含まれるようになりました。 それに伴い、Bean ValidationやJacksonのアノテーションをつけているクラスやSpringのアノテーションをつけているクラスでエラーになるようになりました。 ClassFanOutComplexity の設定できる項目を確認します。 対処する方法として以下の4つが考えられます。

  1. コメントでignoreする
  2. そもそもチェックしない(ClassFanOutComplexityを外してしまう)
  3. ClassFanOutComplexityのmax thresholdを変更する
  4. ClassFanOutComplexityのexclude設定を追加する
<module name="ClassFanOutComplexity">
  <!-- 3つ目の案 -->
  <property name="max" value="40"/> <!-- そもそも今のプロジェクトだと30にしてた -->
  <!-- 4つ目の案 -->
  <property name="excludedPackages" value="your.own.package"/>
</module>

個人的には、4つ目の、excludeするパッケージを追加で対応かなぁ
Bean ValidationやlombokアノテーションのパッケージをexcludedPackagesに入れるとかが現実的な気がしています。