Checkstyle 8.13からClassFanOutComplexityでカウントされる対象が増えて死んだ話
以下のリリースノートにこんな記述がありました。
- ClassFanOutComplexity: count complexity base annotations/extends/implements/methods params. Author: kazachka #4092
annotation, extends, implementsで使われているクラスもClassFanOutComplexityのカウント対象に含まれるようになりました。 それに伴い、Bean ValidationやJacksonのアノテーションをつけているクラスやSpringのアノテーションをつけているクラスでエラーになるようになりました。 ClassFanOutComplexity の設定できる項目を確認します。 対処する方法として以下の4つが考えられます。
- コメントでignoreする
- そもそもチェックしない(ClassFanOutComplexityを外してしまう)
- ClassFanOutComplexityのmax thresholdを変更する
- 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に入れるとかが現実的な気がしています。