読者です 読者をやめる 読者になる 読者になる

rakugakibox.net

技術ノート。兼JS/CSS実験場。 ♡:Java, Spring, AWS.

Java: CheckStyle で改行コードのチェックが弱いので自前で何とかした

CheckStyle で改行コードが LF で統一されてることをチェックしたい。

ざっと探してみると NewlineAtEndOfFile ってのがあったけど、
これがイマイチなので自前でもチェックすることにした。

NewlineAtEndOfFile

こんな使い方。

<module name="NewlineAtEndOfFile">
    <property name="lineSeparator" value="lf" />
</module>

けど名前の通りファイル末尾の改行しかチェックしてくれない。
ファイルの途中に CR が入ってても、それはスルーしちゃう。

まーこれはファイル末尾が改行なことをチェックするのが
一番の目的だろうから、今回やりたいことと合わなくて仕方ないのかも。

ただ、ファイル末尾が CRLF でも通ってしまった。

確かに LF で終わってはいるけど...
それじゃ lineSeparatorcrlf とか lf とか選べる意味が薄いような...
何かポリシーあってこうしてるのかなぁ。

自前のチェックも追加!

NewlineAtEndOfFile とは別で、
正規表現でのチェックも追加することにした。

<module name="RegexpMultiline">
    <property name="format" value="\r[\s\S]*\z" />
    <property name="message" value="改行コードに LF 以外が使われてる!" />
</module>

以下ポイント。

  • CR (\r) を見つけたら違反にしてる。
  • 同じエラーが行数分発生するのはうざいので、ファイルごとに出すようにしてる。
    • => [\s\S]*\z の部分でファイル末尾まで読み込んでる。
    • => これで2つ目以降の CR があっても無視させてる。

出来たけど...

標準のチェックが用意されると嬉しいなぁ。

関連記事