連載
» 2006年04月15日 00時00分 公開

Eclipseで使えるテストツールカタログ(2):Eclipseで使える静的解析ツール (3/4)

[珍田晋之介, 岡本隆史,株式会社NTTデータ]

潜在的なバグからコーディング規約をチェック:PMD

ツール名:PMD

URL:http://pmd.sourceforge.net/

ライセンス:BSD


 PMDは潜在的なバグからコーディング規約をチェックすることができる静的解析ツールです。例えばコネクションオブジェクトを使用したら必ずクローズメソッドが呼ばれなければならない、あるいはnullとの比較にequals()メソッドは使用しないなど、コンパイルエラーとしてチェックされないが、バグを誘発する可能性が高いコードをチェックしてくれます。

 PMDは先ほど紹介したCheckstyleや、後から紹介するFindBugsと比べると、コーディングスタイルのチェックルールを持ち、かつ潜在的なバグをチェックするルールを持っているオールラウンド的なツールです。ただしデフォルトで提供されるルール数はそれほど多くはないので、プロジェクト固有のカスタムルールを作成し、幅広いチェックができるようにするとよいです。

特長

 PMDの特長は以下になります。

・豊富なチェックルールを提供

  潜在的なバグから、コーディング規約に関するルールまで幅広いチェックルールが提供されています。また本稿では取り上げませんが、ソースコードのメトリクス情報を算出するためのルールや計測機能を持っていることも大きな特長として挙げられます。

・ソースコードが解析対象

  ソースコードが解析対象のため、プログラムの作成途中でもチェックが可能です。

・ルールには優先度の設定が可能

  幅広いチェックルールを持つため、PMDの各ルールには5段階の優先順位(Error High/ Error/ Warnig High/ Warning / Information)が付与されています。これにより開発者はチェックで検出されたメッセージにおいてどの部分を優先的に修正すべきか判断することができます。

・適用するルールの選択が可能

  ルールのカテゴリを独自に設定し、必要なルールのみをチェックできるようにフィルタリングすることができます。

・ルールの拡張性が高い≪≫

  ルールを追加する方法として、以下のいずれかの方法を使用することができます

  1. XPath(XML Path Language)を用いたルールの作成
  2. Javaのクラスを直接作成

 PMDではXPathを用いたカスタムルールの作成を支援するためにツール(AST Viewer)を提供しています。ただしPMDプラグインでは提供されていないため、別途下記のURLからダウンロードしてください。

・豊富な連携ツールが存在する

  Eclipse以外にもさまざまなIDE上で利用することができます。利用可能なIDEは以下のURLを参照してください。

■入手方法

 PMDを利用する場合は、Eclipseのアップデート機能を用いたインストールを行います。

 [ウィンドウ]-[設定]でEclipseの設定画面を開き、ツリーの部分に[PMD]が表示されていればインストールが成功しています。

使い方

 PMDでは自動実行と手動実行の2つの実行方法があります。

それぞれの実行方法について下記の手順にて利用します。

●Just In Timeで実行

・ビルドパスの設定

 ソースコードを保存したタイミングでPMDが実行されるように設定を行います。[プロジェクト]メニューの[プロパティ]を選択して表示されるプロジェクトのプロパティ画面(図1)にて、PMDを選択し、[Enable PMD]のチェックボックスをチェックします。利用できるルール一覧が表示されるので、チェックボックスのチェックを行い、使用するルールを設定します。

図1 プロジェクトのプロパティ設定画面にてPMDの設定を行う(クリックすると拡大します) 図1 プロジェクトのプロパティ設定画面にてPMDの設定を行う
(クリックすると拡大します)

・問題ビューの確認

  Eclipse環境にてPMDでチェックされた内容を正しく表示するために問題ビューの設定を確認します。問題ビューのフィルターのアイコンをクリックし、フィルターの設定のダイアログを表示(図3)、タイプフィールドで表示されたPMDに関連する3つの項目がチェックされているか確認します。

 

図2 問題ビューの設定確認 図2 問題ビューの設定確認

●手動で実行

・コンテキストメニューから呼び出し

 パッケージエクスプローラから添削対象の選択を行った状態で、右クリックにより、[PMD]-[Check Code With PMD]を実行します。

 

図3 コンテキストメニューからのPMD呼び出し画面 図3 コンテキストメニューからのPMD呼び出し画面

・解析結果の確認

  PMDによる解析結果は、[Violations Outline]と[Violations Overview]に表示されます。基本は[Violations Outline]で表示されるエラーメッセージ、行番号を基に対象となるコードの問題点を確認します。

 

図5 PMD解析結果の確認 図5 PMD解析結果の確認

・解析結果への対処

  [Violations Outline]で表示されるメッセージを右クリックし、以下のいずれかの操作を行います。

  1. 詳細を見る(Show Details)
    指摘されたチェックルールの詳細を確認することができます。特にチェックルールで検出される典型的なコード例が表示されるので、何を修正すべきか分からない場合のよりどころとなります。
  2. レビュー実施済みマークを付ける(Mark as reviewed)
    レビューが実施されたことを対象コードのコメントとして自動的に挿入することができます。最終的にレビューが完了した時点でPMDがコードに自動で挿入したコメントをすべて削除する場合にはコンテキストメニューから[PMD]-[Clear violations review]を選択することで、コメントを自動削除することができます。
  3. 違反と見なさない(Removed violations)
    [Violations Outline]の指摘ルール一覧から削除します。レビュー等によって指摘されたルールが違反ではないと判断された場合に使用します。
  4. 修正する(Quick fix)
    チェックによって検出された指摘事項を修正する機能のようですが、現時点ではこの機能を用いることができるルールは存在しません。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。