torutkのブログ

ソフトウェア・エンジニアのブログ

[Java][NetBeans] NetBeans 8.0RC1とJDK8 b132でFindBugs、Checkstyle、PMDのプラグインを動かす

Java SE 8の正式リリースが、予定では3月18日(日本時間だと3月19日)と間近になっています。
Java SE 8でプログラミングするための開発環境を整備しようとしています。NetBeans IDEは、7.4でJava SE 8対応をある程度していますが、NetBeans 8.0が4月にリリース予定になっており現在RC1版が公開されているので、これを使ってみます。

昨今のソフトウェア開発プロジェクトでは、静的検証ツールを導入して品質向上を図ります。Javaでは、商用製品とオープンソースツールといろいろ揃っています。商用製品ではCoverity社のQuality Analizer(旧名Static Analysis)や、Techmatrix社のJtestなどが有名です。オープンソースツールでは、Checkstyle、PMD、FindBugsの3つが有名です。

ソースコードの静的検証は、リポジトリにコミットされたコードをサーバーで静的検証ツールを動かしてその結果を公開するCI(継続的インテグレーション)の方式と、ソースコードを編集する統合開発環境上で静的検証ツールを動かしてコードを変更したらすぐに検証結果を示す方式があります。

プログラミング言語Javaに熟達したプログラマーであればCI方式での検証で十分ですが、Javaに熟達していないプログラマーであれば、コードを書いているその場で問題を指摘してくれる方が望ましいです。

そこで、統合開発環境IDE)上でプログラミングしながら即時に検証ができる環境を整えます。開発者一人一人にソースコード静的検証ツールを用意することになるので、商用製品では導入費用が高くなってしまいます(効果はあるのですが・・・)。そこで、オープンソースツールを使うことにします。商用製品はCI方式でサーバーに適用すると、相互補完的に運用できてよいかと思います。

NetBeans IDE 8.0RC1にFindBugsCheckstyle、PMDのプラグインを入れる

NetBeans IDE 7.4とJDK7では、標準設定のプラグインサイトからこれらを選択してインストールできるようになっていました。しかし、NetBeans IDE 8.0RC1では、標準設定のプラグインサイトではFindBugsプラグインである「FindBugs Integration」しか選択できません。CheckstyleとPMDのプラグインはまだ検証が終わっていないためでしょうか。

ところが、FindBugs IntegrationはFindBugs 2.0.3を使うので、Java SE 8には対応できません。
同じく、EasyPMDはPMD 5.0.5を使うので、Java SE 8には対応できません。新しい言語仕様のコードを含むファイルはパースエラーを起こしてしまいました。
Checkstyleは、Java SE 8の新しい言語仕様のコード箇所でエラーを起こします。

NetBeans IDE 8.0RC1およびJDK8ではこれら静的検証ツールのプラグインは現時点では壊滅状態ですが、ひとつひとつ確認してインストールする手順を確認してみました。

Windows上でのインストールの経緯(紆余曲折)は、次に記録を残しています。
http://www.torutk.com/issues/8

次に、複数開発者が参加するプロジェクトでは、同じルールを共有する必要があります。
NetBeans IDEに組み込んだFindBugsCheckstyle、PMDのルール設定がどこに保存されるかを調べ、ルール設定を共有できることを目指します。

Windows上での設定については、以下のURLから各プラグインのリンクをたどった先に記録を残しました。
http://www.torutk.com/projects/swe/wiki/NetBeans

PMDのルールの充実ぶりはけっこうすごい

以前PMDを調べたときには、それほどとは思っていませんでした。今回調べてみると、今まで見たことがなかったルールもみかけます。PMDのルール(Java用)一覧ページは次です。
http://pmd.sourceforge.net/pmd-5.1.0/rules/index.html