PMD (英語のProgramming Mistake Detectorの頭文字)は、Javaソースコード解析英語版するための静的なルールセットで、以下のような潜在的問題を識別する:

  • バグの可能性 —空のトライ/キャッチ/フィナリー/スイッチブロック
  • デッドコード —使われていないローカル変数パラメータプライベートメソッド
  • 空のif/whileステートメント
  • 複雑な式 —whileループを可能にしたforループのステートメントが必要ない場合
  • 準最適コード —無駄な文字列/ストリングバッファの使用
  • 高い循環的複雑度測定を使ったクラス
  • 重複コード —コピー・アンド・ペーストされたコードはバグもコピー・アンド・ペーストされていると解釈でき、保守性が低下してしまう。

PMDには正式名称が無く、いくつかの非公式名があり、おそらく最も適切な名称は「Programming Mistake Detector」とされる。

通常PMDのエラーは真のエラーにはならないが、むしろ非効率なコードで例えば未だに修正されないとしてもアプリケーションは適切な動作が出来る事になる。

ルールセット

編集

PMDにはカスタムルールを書くことが出来る内蔵のルールやサポートが含まれる。カスタムルールは以下2通りの方法で書くことになる:

  1. XPathの使用
  2. Javaクラスの使用

Copy/Paste Detector (CPD)

編集

Copy/Paste Detector (CPD)とはPMDに対応したアドオンでラビン-カープ文字列検索アルゴリズムを使って重複コードを検索する。Java、JSPC言語C++FortranPHPC#のコードを使って動作している。

プラグイン

編集

PMDはJDeveloperEclipsejEditJBuilder、Omnicore's CodeGuide、NetBeans/Sun StudioIntelliJ IDEATextPadMavenAnt、Gel、JCreatorHudsonJenkinsSonar英語版Emacsプラグインにもなっている。

参考文献

編集

外部リンク

編集