ソフトウェアエンジニアの雑記

日々思ったことをまとめます

JavaのCheckStyleで除外設定をする方法

Javaを使っていると静的解析にCheckStyleを使うことが多いと思います。ただ自動生成コードなどはSuppressionFilterで対象外にしますが、ファイル数が多いと処理に時間がかかります。これはファイルを検索したあとにSuppressionFilterに設定してあるファイルかどうかのチェックを行っています。 これは、SuppressionFilterが、ファイル1つ1つで何をチェック対象から外すかという細かい制御機能を持っているからです。

自動生成コードを使用している場合、ディレクトリ配下すべてが自動生成コードであることはよくあります。その場合はCheckStyleディレクトリごと読み込む必要がないので、これを行うのは、BeforeExecutionExclusionFileFilterになります。

これで読み込むファイル数を減らすことができるので、CIの実行時間が短くなります。

<module name="Checker">

  <module name="RegexpOnFilename">
    <property name="fileNamePattern" value="^[A-Z].*"/>
    <property name="match" value="false"/>
    <message key="regexp.filename.mismatch"
      value="File name must start with an uppercase."/>
  </module>

  <module name="BeforeExecutionExclusionFileFilter">
    <property name="fileNamePattern" value="module\-info\.java$"/>
  </module>

</module>