第2章 FindBugs のインストールおよび起動

目次

1. 配布物からの取り出し
2. 設定
3. コマンドラインオプション

この章では、FindBugs のインストール方法および起動方法を説明します。

1. 配布物からの取り出し

FindBugs をインストールする最も簡単な方法は、バイナリ配布物をダウンロードすることです。 バイナリ配布物は、次の gzipped tar 形式 または zip 形式 より入手可能です。 バイナリ配布物をダウンロードしてきたら、それを任意のディレクトリに展開します。

gzipped tar 形式配布物の展開:

$ gunzip -c findbugs-0.9.1.tar.gz | tar xvf -

zip 形式配布物の展開:

C:\Software>unzip findbugs-0.9.1.zip

普通は、バイナリ配布物の展開では findbugs-0.9.1 で終わるディレクトリが作成されます。 例えば、C:\Software ディレクトリからバイナリ配布物を展開した場合、 FindBugs ソフトウェアは C:\Software\findbugs-0.9.1 ディレクトリの中へと展開されます。 そのディレクトリが、FindBugs のホームディレクトリになります。 このマニュアルの中では そのディレクトリを $FINDBUGS_HOME として言及します。

2. 設定

バイナリ配布物を展開したならば、FindBugs を実行するには ラッパースクリプトを呼び出して実行することになります。

Unix 系のシステムでは、ラッパースクリプトを呼び出すには以下のコマンドを使用します:

$ $FINDBUGS_HOME/bin/findbugs options...

Windows システムでは、ラップスクリプトの呼び出しは以下になります。

C:\My Directory>$FINDBUGS_HOME\bin\findbugs.bat options...

Unix 系および Windows システムのどちらでも、$FINDBUGS_HOME/binPATH 環境変数に追加しておけば、findbugs コマンドを使って FindBugs を呼び出すことができます。

3. コマンドラインオプション

FindBugs を呼び出す2通りの方法があります。 最初の呼び出し方法はグラフィカルユーザインターフェース (GUI) を使ったものです:

$ findbugs [標準オプション] [GUI オプション]

2つめの方法はコマンドラインインターフェース (テキスト UI) です:

$ findbugs -textui [standard options] [Text UI オプション]

3.1. 標準オプション

これらは、GUI およびテキスト UI の双方で使うことが出来るオプションです。

-jvmArgs args

JVM へ渡す属性の指定を行います。 例えば、次のような JVM プロパティを設定することができます:

$ findbugs -textui -jvmArgs "-Duser.language=ja" myApp.jar

-javahome ディレクトリ

FindBugs を実行するために使われる JRE (Java ランタイム環境) の ディレクトリの指定。

-maxHeap サイズ

メガバイト単位での最大 Java ヒープの指定。 デフォルトは 256。 巨大なプログラムあるいはライブラリを解析するにはより多くのメモリが必要とされることがあります。

-debug

検出器を走らせたときのトレースの出力およびクラスから解析された標準出力を表示。 予期せぬ解析失敗のトラブルシューティングに有用です。

-effort:min

このオプションは解析の解析精度の向上を無効にします。しかし、これは メモリの消費量を抑えます。 FindBugs を走らせたときにメモリ不足や 解析が完了するまでによく時間がかかる場合にはこのオプションを試す 価値があるかもしれません。

-effort:max

正確さを高め、より多くのバグを探す解析を有効にします。しかし、 これは、より多くのメモリおよび完了するまでのより長くの時間を必要と する可能性があります。

-property name=value

このオプションは、システムプロパティを設定します。 FindBugs は解析オプションを 設定するのにシステムプロパティを使用します。 章 9. 解析プロパティ を 参照してください。 複数のプロパティの設定を行うために、このオプションを 複数回使用することができます。 メモ: Windowsのほとんどのバージョンでは、 name=value 文字は引用符で囲まれている必要があります。

-project project

解析されるプロジェクトを指定します。 指定されたプロジェクトファイルは GUI インターフェースにて作成されたものである必要があります。 それは、 通常 .fb という拡張子を持つファイルです。

3.2. GUI オプション

これらのオプションは、GUI のときのみ有効です。

-look:plastic|gtk|native

Swing の外観を設定します。

3.3. テキスト UI オプション

これらのオプションは、テキスト UI のときのみ有効です。

-sortByClass

報告されるバグの例をクラス名でソートします。

-include filterFile.xml

filterFile.xml によって指定されたフィルタに合致したバグの例のみが報告されます。 章 8. フィルタ ファイル も参照してください。

-exclude filterFile.xml

filterFile.xml によって指定されたフィルタに合致したもの以外のすべてのバグの例が報告されます。 章 8. フィルタ ファイル も参照してください。

-onlyAnalyze com.foobar.MyClass,com.foobar.mypkg.*

バグの検出を与えられたコンマ区切りのクラスおよびパッケージのリストに 限定する。 フィルタとは違います、このオプションは明らかに一致しないクラスおよび パッケージに対しての解析の実行を避けることができます。 巨大なプロジェクトでは、このオプションは解析に必要な合計時間を 大幅に減少させるでしょう。 (しかしながら、いくつかの検出器では アプリケーション全体に対して実行されないために、不正確な 結果をもたらすかもしれません。) クラスは、それらの完全なクラス名(パッケージ名を含んだもの)で 指定される必要があり、またパッケージはパッケージ含まれるすべての クラスをインポートする Java import 構文と 同じように指定するべきです。 (i.e., パッケージの 完全な名前に .*を追加します。)

-low

すべてのバグの報告。

-medium

優先度が中および高のバグを報告されます。 これはデフォルト設定です。

-high

優先度が高のバグhが報告されます。

-relaxed

ゆるいレポートモード。 多くの検出器ではこのオプションは、誤った報告を 避けるために使用されるヒューリスティックを抑制します。

-xml

バグの報告を XML として生成します。 XML データとして生成されたものは 後ほど、GUI にて表示することができます。 このオプションは、 -xml:withMessages として指定することも可能です。 この変形のオプションが使用された場合、XML出力は ファイルに含まれていた 警告を説明する人が可読可能なメッセージを含んだものになります。 この方法によって生成された XMLファイルはレポートへと整形するのが 容易くなります。

-html

HTML 出力の生成。 デフォルトでは、FindBugs は HTMLの生成のために default.xsl XSLT スタイルシートを使用します。 findbugs.jar の中あるいは FindBugs ソース配布物の中からこのファイルを見つけることができます。 もし、整形の 実行に使われる XSLT スタイルシートとして自分のものを指定したい場合は、 -html:myStylesheet.xslmyStylesheet.xsl 部分に使用したいスタイルシートの ファイル名としたオプションとして指定することができます。

-emacs

バグの報告を Emacs 形式にて生成します。

-auxclasspath classpath

解析のための捕捉のクラスパスを設定します。 このクラスパスには、プログラムの一部である 解析に 関連するすべての jar ファイル、クラスが配置されているディレクトリが 含まれるべきです。解析したくないバグのためには必要ありません。