第4章 FindBugs グラフィカルユーザインターフェースの使用法

目次

1. プロジェクトの作成
2. 解析の実行
3. 結果の閲覧
4. 結果の読み込みおよび保存

FindBugs は2種類のインターフェース: グラフィカルインターフェース (GUI) と、 コマンドラインインターフェースを持ちます。 この章では GUI について説明します。

1. プロジェクトの作成

FindBugs を起動した後に、findbugs のコマンド File->New Project メニュー項目を選択して使用します。 次のようなダイアログが表示されます:

"Browse" ボタンを使用し、"Add archive or directory" テキストフィールドに、Java アーカイブファイル (zip, jar, ear, war ファイル) あるいはバグを解析したいクラスが含まれているディレクトリを 選択します。 複数のアーカイブ/ディレクトリを追加することも可能です。

解析した Java アーカイブのソースコードが含まれているソースディレクトリを 追加することでも可能です。 これは、エラーの可能性があるソースコードを FindBugs が ハイライト表示することを可能するでしょう。 追加するソースコードディレクトリは Java パッケージ階層のルートである べきです。 例えば、あなたのアプリケーションが org.foobar.myapp というパッケージを含んでいるとすると、親ディレクトリである org ディレクトリをプロジェクトの ソースディレクトリリストに追加するべきです。

必要に応じて、Jar ファイルあるいは、クラスパスとしてディレクトリを 追加します。 解析したいアーカイブあるいはディレクトリが 解析したいアーカイブ/ディレクトリおよび標準のランタイムクラスパスに 含まれていない別のクラスを参照している場合はこの手順を行う必要があります。 FindBugs によって検出されるいくつかのバグパターンは、クラスの階層情報を 用いています。 FindBugs が解析の実行にクラス階層の全体が利用可能であれば より正確な情報が得られることでしょう。

2. 解析の実行

すべてのアーカイブ、ディレクトリ、ソースディレクトリを追加し終えたなら、 Java ファイルに含まれているクラスの解析を行うために "Find Bugs!" ボタンをクリックします。 古いコンピュータにて 大きなプロジェクトに対して行う場合、長時間 (10分など) を要するかもしれません。 十分なメモリを備えた最近のコンピュータであれば、大きなプロジェクトであっても 数分にて解析を行うことが一般的に可能です。

3. 結果の閲覧

解析が完了したら、次のような画面が表示されます:

ウィンドウ上部のペインには、Java ファイル中を解析して検出された すべての潜在的なバグが階層構造にて表現されたバグツリーが表示されます。 タブによって class、パッケージ、バグの種類別に閲覧することが可能です。

上部ペインにて特定のバグ例を選択すると、下部のパインの "Details" タブに そのバグの説明が表示されます。 更に、下部ペインの "Source code" タブでは、いくつかの種類のバグのために 潜在的なバグが発生するプログラムのソースコードを見れます。 上記の例は、コンストラクタのなかで初期化されていないフィールドへのアクセス するバグです。 ソースコードウィンドウは、問題があるアクセスが含まれている 行をハイライト表示します。

バグの例に対して説明の注釈を追加することができます。 追加するには、 下部のパインから "Annotations" タブを選択します。 後は、そこに 保存したい追加の情報を入力するだけです。 保存したバグの結果ファイルを 読み込むと、注釈は維持されています。

現在の Jar ファイルおよびソースディレクトリの一覧を保存するために、 File->Save project メニュー項目を使うことができます。 File->Open project メニュー項目にて保存したプロジェクトを 読み込むことが可能です。 メモ: プロジェクトを保存しても、解析結果は保存されません。

4. 結果の読み込みおよび保存

File->Load bugs および File->Save bugs を使って プロジェクト上で FindBugs を実行したことで得られたバグ結果を読み込みおよび保存することが できます。 結果は、XML 形式にて保存されます。 バグ報告にあなたが追加した注釈もまた 結果の XML ファイルに保存されます。

[Note]計画されている機能

バグの読み込みおよび保存のサポートは、まだ開発中のものです。 この機能にてバグを見つけるかもしれません、またファイル形式や 実装は将来のリリースで変更される可能性があります。