この章では、FindBugs のインストール方法および起動方法を説明します。
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 として言及します。
バイナリ配布物を展開したならば、FindBugs を実行するには ラッパースクリプトを呼び出して実行することになります。
Unix 系のシステムでは、ラッパースクリプトを呼び出すには以下のコマンドを使用します:
$ $FINDBUGS_HOME/bin/findbugs options...
Windows システムでは、ラップスクリプトの呼び出しは以下になります。
C:\My Directory>$FINDBUGS_HOME\bin\findbugs.bat options...
Unix 系および Windows システムのどちらでも、$FINDBUGS_HOME/bin を PATH 環境変数に追加しておけば、findbugs コマンドを使って FindBugs を呼び出すことができます。
FindBugs を呼び出す2通りの方法があります。 最初の呼び出し方法はグラフィカルユーザインターフェース (GUI) を使ったものです:
$ findbugs [標準オプション] [GUI オプション]
2つめの方法はコマンドラインインターフェース (テキスト UI) です:
$ findbugs -textui [standard options] [Text UI オプション]
これらは、GUI およびテキスト UI の双方で使うことが出来るオプションです。
JVM へ渡す属性の指定を行います。 例えば、次のような JVM プロパティを設定することができます:
$ findbugs -textui -jvmArgs "-Duser.language=ja" myApp.jar
FindBugs を実行するために使われる JRE (Java ランタイム環境) の ディレクトリの指定。
メガバイト単位での最大 Java ヒープの指定。 デフォルトは 256。 巨大なプログラムあるいはライブラリを解析するにはより多くのメモリが必要とされることがあります。
検出器を走らせたときのトレースの出力およびクラスから解析された標準出力を表示。 予期せぬ解析失敗のトラブルシューティングに有用です。
このオプションは解析の解析精度の向上を無効にします。しかし、これは メモリの消費量を抑えます。 FindBugs を走らせたときにメモリ不足や 解析が完了するまでによく時間がかかる場合にはこのオプションを試す 価値があるかもしれません。
正確さを高め、より多くのバグを探す解析を有効にします。しかし、 これは、より多くのメモリおよび完了するまでのより長くの時間を必要と する可能性があります。
このオプションは、システムプロパティを設定します。 FindBugs は解析オプションを 設定するのにシステムプロパティを使用します。 章 9. 解析プロパティ を 参照してください。 複数のプロパティの設定を行うために、このオプションを 複数回使用することができます。 メモ: Windowsのほとんどのバージョンでは、 name=value 文字は引用符で囲まれている必要があります。
解析されるプロジェクトを指定します。 指定されたプロジェクトファイルは GUI インターフェースにて作成されたものである必要があります。 それは、 通常 .fb という拡張子を持つファイルです。
これらのオプションは、テキスト UI のときのみ有効です。
報告されるバグの例をクラス名でソートします。
filterFile.xml によって指定されたフィルタに合致したバグの例のみが報告されます。 章 8. フィルタ ファイル も参照してください。
filterFile.xml によって指定されたフィルタに合致したもの以外のすべてのバグの例が報告されます。 章 8. フィルタ ファイル も参照してください。
バグの検出を与えられたコンマ区切りのクラスおよびパッケージのリストに 限定する。 フィルタとは違います、このオプションは明らかに一致しないクラスおよび パッケージに対しての解析の実行を避けることができます。 巨大なプロジェクトでは、このオプションは解析に必要な合計時間を 大幅に減少させるでしょう。 (しかしながら、いくつかの検出器では アプリケーション全体に対して実行されないために、不正確な 結果をもたらすかもしれません。) クラスは、それらの完全なクラス名(パッケージ名を含んだもの)で 指定される必要があり、またパッケージはパッケージ含まれるすべての クラスをインポートする Java import 構文と 同じように指定するべきです。 (i.e., パッケージの 完全な名前に .*を追加します。)
すべてのバグの報告。
優先度が中および高のバグを報告されます。 これはデフォルト設定です。
優先度が高のバグhが報告されます。
ゆるいレポートモード。 多くの検出器ではこのオプションは、誤った報告を 避けるために使用されるヒューリスティックを抑制します。
バグの報告を XML として生成します。 XML データとして生成されたものは 後ほど、GUI にて表示することができます。 このオプションは、 -xml:withMessages として指定することも可能です。 この変形のオプションが使用された場合、XML出力は ファイルに含まれていた 警告を説明する人が可読可能なメッセージを含んだものになります。 この方法によって生成された XMLファイルはレポートへと整形するのが 容易くなります。
HTML 出力の生成。 デフォルトでは、FindBugs は HTMLの生成のために default.xsl XSLT スタイルシートを使用します。 findbugs.jar の中あるいは FindBugs ソース配布物の中からこのファイルを見つけることができます。 もし、整形の 実行に使われる XSLT スタイルシートとして自分のものを指定したい場合は、 -html:myStylesheet.xsl の myStylesheet.xsl 部分に使用したいスタイルシートの ファイル名としたオプションとして指定することができます。
バグの報告を Emacs 形式にて生成します。
解析のための捕捉のクラスパスを設定します。 このクラスパスには、プログラムの一部である 解析に 関連するすべての jar ファイル、クラスが配置されているディレクトリが 含まれるべきです。解析したくないバグのためには必要ありません。