PMD を NetBeans で使う

今日は静的解析ツールの PMD を NetBeans で使ってみます。


P.S. あとで Eclipse でも使ってみました。


PMD プラグインのインストール」

Browse PMD Files on SourceForge.netよりプラグインをダウンロード。
pmd-netbeans65-2.2.5-bin.zip をダウンロードして解凍します。


ファイル名を見ると NetBeans 6.5 用のようだけど、折角なので NetBeans 6.7.1 で試してみます。
プラグインマネージャ(「ツール」-「プラグイン」)で、解凍したファイル pmd.nbm を指定してインストールします。


プラグインの設定

オプションを開きます。(「ツール」-「オプション」)
「その他」に「PMD」というタブが生えましたね。

REALTIME SCANNING

Enable Scan を ON にします。

解析のルール

ルールはずいぶんたくさん登録されています。数えてみると、240個くらいのルールが登録されているようです。


このサイト「PMD vs FindBugs - dJWiki」によると、FindBugs と比べて幅広いようですね。ただし英語。

PMD の解析パターンはコーディング規約をチェックするようなパターンから、潜在的なバグを見つけるパターンまでかなり幅広いチェックパターンが用意されています。
(略)
一方、FindBugs の解析内容はほぼ潜在的なバグを見つけるパターンに絞っており、PMD に存在しないチェックパターンもあります。

ルールセット

PMD - PMD Rulesets indexにリストがありますが、それ以外(?)にもルールセットを追加できるようです。


ReadMe を読むと、 "Add RuleSet" で ルールセットの XML を、"Add Rule jar" で ルールセットを含む jar ファイルを指定するそうです。


解析

リアルタイムスキャン

リアルタイムスキャンした結果です。保存しなくとも、編集しただけでスキャンされます。

リアルタイムでないスキャン(普通のスキャン)

プロジェクトペインで、パッケージやソースファイルを選び、コンテキストメニューより「ツール」-「Run PMD」を実行します。


問題がある行のコードの先頭にマーキングされるほか、以下の結果が出力されています。

補足

様々な IDE 用のプラグインが用意されていますね。
PMD - IDE Integrations

感想とか

  • NetBeansプラグイン:使用するルールセットの指定ができたらよい。個々のルールの使用可否を指定する想定なのかな?6.5だともっといろいろできるのかな?
  • PMD そのもの:英語だし・・・