なにか作る

なにかを作るブログです。

Google's Java Style の CheckStyle を使う

Google's Java Style Checkstyle の導入

Java の静的解析ツールの一つである Checkstyle は便利なものなんだけど、デフォルトの設定だと警告があがりすぎて正直ウザい。

なので、ちょこちょこと設定の微調整を行う必要があるんだけど、これがまた面倒くさい。

なにか便利なやり方はないかと探していたら、Checkstyle の公式サイトで Google Java Style 用の設定が配布されていることに気付いた。

checkstyle – Google's Style

XML ファイルがダウンロードできるので、これを使うのが便利そうだ。

Google's Java Style Checkstyle の微調整

とはいえ、これもそのまま使うには気になるところがいくつか。何点かの微調整を行う。

  • パッケージ名にアンダースコアを使いたいときがあるので、パッケージ名のチェックを除外する。
<!--
<module name="PackageName">
    <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
    <message key="name.invalidPattern"
     value="Package name ''{0}'' must match pattern ''{1}''."/>
</module>
-->
  • Eclipse のフォーマッターがラムダ式のインデントを正しく行ってくれないので、インデント幅のチェックを除外。
<!--
<module name="Indentation">
    <property name="basicOffset" value="2"/>
    <property name="braceAdjustment" value="0"/>
    <property name="caseIndent" value="2"/>
    <property name="throwsIndent" value="4"/>
    <property name="lineWrappingIndentation" value="4"/>
    <property name="arrayInitIndent" value="2"/>
</module>
-->
  • Javadoc 一行目の概要チェックが句点「。」に対応していないので、このチェックを除外。
<!-- 
<module name="SummaryJavadocCheck">
    <property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
</module>
-->

これで OK。

ちなみに

Want to use other letter for end of sentence. · Issue #472 · checkstyle/checkstyle · GitHub によると v6.2 から文末記号を指定できるようになったらしいんだけど、プラグインのほうがまだ対応していないのが多いみたい。

<module name="SummaryJavadocCheck">
    <property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
    <property name="period" value="。"/>
</module>