PMDのClassNamingConventionsがおせっかいすぎる件

f:id:takahashikzn:20180603092427p:plain

「ユーティリティクラスはXXXUtilsまたはXXXHelperという名前でなければなりません」

はわかるのですが、ただの定数クラス(しかもパッケージプライベートな内部用)にもそのルールを当てはめるのは、やりすぎです。

PMD6.4にアップデートしてから、この警告が100個以上増えてしまいました。

どうにかする

当然のごとく同じように考える皆様がいらっしゃるようで、issueで議論になっています。

github.com

PMDの作者いわく

<rule ref="category/java/codestyle.xml/ClassNamingConventions">
  <properties>
    <property name="utilityClassPattern" value="[A-Z][a-zA-Z0-9]+"/>
  </properties>
</rule>

とやれば無効化できるとのこと。

ユーティリティクラスの最近のトレンドはjava.util.Objectsjava.nio.file.Filesのように単なる複数形にすることなので、 この件に関する判定は多分廃止になるか大幅に緩和されるんじゃないかと思います。