Java 8 のシンタックス (ラムダとか!) を使ってるコードに CheckStyle したら、
Eclipse (Pleiades) でも Maven でもエラーになった。

どっちも CheckStyle 本体のバージョンが古いのが原因だった。
Java 8 対応のバージョンになるのも時間の問題だろうけど、
それぞれで使う CheckStyle をバージョンアップ出来たので、やり方をメモっとく。

環境

  • Eclipse:
    • Pleiades All in One 4.4.1.v20140926
    • Eclipse 4.4.0 Luna ルナ SR1 for Windows ベース
    • Checkstyle プラグイン 5.7
  • Maven:
    • Apache Maven 3.2.3
    • Maven CheckStyle Plugin 2.13 (CheckStyle 5.7)

エラー内容

試しにこんなコード書いたら。

private void hoge() {
  Runnable run = () -> System.out.println("");
}

怒られた…

(extension) TreeWalker: Got an exception - expecting EOF, found '}'

Eclipse (Pleiades) での対応方法

  1. pleiades/eclipse/dropins/CheckStyle をフォルダごと削除する。
  2. Eclipse を起動して、 [ヘルプ] → [Eclipse マーケットプレース] を開く。
  3. “checkstyle” で検索。
  4. “Checkstyle プラグイン 6.1.0” をインストール。続きはウィザードに従えばOK。

あとは使いたいプロジェクトのプロパティから [Checkstyle] を開いて、
[このプロジェクトで Checkstyle をアクティブにする] にチェック入れれば OK。

最初、 pleiades/eclipse/dropins/CheckStyle を削除せずに
6.1.0 をインストールしてて、うまく動かなくて悩んでしまった。
古いバージョン (5.7.0) は手動削除しないと、自動で消えてくれないっぽい。

Maven CheckStyle Plugin での対応方法

pom.xmlmaven-checkstyle-plugin を書くとき、
CheckStyle 本体の依存関係を新しいバージョンで書いたら通った。

<plugin>
  <artifactId>maven-checkstyle-plugin</artifactId>
  <version>2.13</version>
  <dependencies>
    <dependency>
    <groupId>com.puppycrawl.tools</groupId>
    <artifactId>checkstyle</artifactId>
    <version>6.1</version>
    </dependency>
  </dependencies>
</plugin>

と言っても Maven CheckStyle Plugin 側では
動作確認されてないバージョンだろうけど。
何か問題が出てきたらそのとき考えることにしよう。

Java 8 対応版、はよリリースされると嬉しいなー(・ε・`)