FindBugs には2つのユーザーインタフェースがあります。すなわち、グラフィカルユーザーインタフェース (GUI) および コマンドラインインタフェースです。この章では、それぞれのインタフェースの実行方法について説明します。
警告 | |
---|---|
この章は、現在書き直し中です。書き直しはまだ完了していません。 |
Windows システムで FindBugs を起動する場合は、
ファイルをダブルクリックしてください。 FindBugs GUI が起動します。%FINDBUGS_HOME%
\lib\findbugs.jar
Unix 、 Linux または Mac OS X システムの場合は、
スクリプトを実行するか、以下のコマンドを実行します。$FINDBUGS_HOME
/bin/findbugs
java -jar $FINDBUGS_HOME
/lib/findbugs.jar
これで、 FindBugs GUI が起動します。
GUI の使用方法については、 5章FindBugs GUI の使用方法 を参照してください。
このセクションでは、 FindBugs の起動方法を説明します。FindBugs を起動するには2つの方法があります。すなわち、直接起動する方法、および、ラップしているスクリプトを使用する方法です。
最初に述べる FindBugs の起動方法は、
を直接実行する方法です。JVM (java) 実行プログラムの -jar コマンドラインスイッチを使用します。(FindBugsのバージョンが 1.3.5 より前の場合は、ラップしているスクリプトを使用する必要があります。)$FINDBUGS_HOME
/lib/findbugs.jar
FindBugs を直接起動するための、一般的な構文は以下のようになります。
java [JVM 引数]
-jar $FINDBUGS_HOME
/lib/findbugs.jar オプション…
1 番目のコマンドラインオプションは、起動する FindBugs ユーザーインタフェースを選択するためのものです。指定可能な値は次の通りです:
-gui: グラフィカルユーザーインタフェース (GUI) を起動します。
-textui: コマンドラインインタフェースを起動します。
-version: FindBugs のバージョン番号を表示します。
-help: FindBugs コマンドラインインタフェースのヘルプ情報を表示します。
-gui1: 最初に作成された FindBugs グラフィカルユーザーインタフェース(すでに廃止されサポートされていない)を起動します。
FindBugs を起動するもうひとつの方法は、ラップしているスクリプトを使用する方法です。
Unix 系のシステムにおいては、次のようなコマンドでラップしているスクリプトを起動します :
$
$FINDBUGS_HOME
/bin/findbugsオプション…
Windows システムにおいては、ラップしているスクリプトを起動するコマンドは次のようになります。
C:\My Directory>
%FINDBUGS_HOME%
\bin\findbugs.batオプション…
Unix 系システム および Windows システムのどちらにおいても、ディレクトリー
を環境変数 $FINDBUGS_HOME
/binPATH
に追加するだけで、 findbugs コマンドを使用して FindBugs を起動することができます。
FindBugs のラップしているスクリプトは、次のようなコマンドラインオプションをサポートしています。これらのコマンドラインオプションは FindBugs プログラム 自体が操作するのではなく、どちらかといえば、ラップしているスクリプトの方が処理を行います。
引数
JVM に受け渡される引数を指定します。例えば、次のような JVM プロパティが設定できます:
$
findbugs -textui -jvmArgs "-Duser.language=ja"myApp.jar
ディレクトリー
FindBugs の実行に使用する JRE (Java ランタイム環境) がインストールされているディレクトリーを指定します。
サイズ
Java ヒープサイズの最大値をメガバイト単位で指定します。デフォルトは、 256 です。巨大なプログラムやライブラリを分析するには、もっと大きなメモリー容量が必要になる可能性があります。
ディテクタ実行およびクラス分析のトレース情報が標準出力に出力されます。分析が予期せず失敗した際の、トラブルシューティングに有用です。
name=value
このオプションを使用してシステムプロパティーを設定することができます。 FindBugs はシステムプロパティーを使用して分析特性の設定を行います。9章分析プロパティー を参照してください。このオプションを複数指定して、複数のシステムプロパティを設定することが可能です。注: Windows の多くのバージョンでは、 name=value
文字列を引用符で囲む必要があります。
このセクションでは、 FindBugs がサポートするコマンドラインオプションについて説明します。ここで示すコマンドラインオプションは、 FindBugs 直接起動、または、ラップしているスクリプトによる起動で使用できます。
ここで示すオプションは、 GUI および コマンドラインインタフェースの両方で使用できます。
このオプションを指定すると、精度を上げるために大量のメモリーを消費する分析が無効になります。FindBugs の実行時にメモリー不足になったり、分析を完了するまでに異常に長い時間がかかる場合に試してみてください。
精度が高く、より多くのバグを検出する分析を有効にします。ただし、多くのメモリー容量を必要とし、また、完了までの時間が多くかかる可能性があります。
project
分析するプロジェクトを指定します。指定するプロジェクトファイルには、 GUI を使って作成したものを使用してください。ファイルの拡張子は、一般的には .fb
または .fbp
です。
ここで示すオプションは、グラフィカルユーザーインタフェースでのみ使用できます。
plastic|gtk|native
Swing のルック・アンド・フィールを設定します。
ここで示すオプションは、テキストユーザーインタフェースでのみ使用できます。
報告されるバグ検索結果をクラス名でソートします。
filterFile.xml
filterFile.xml
で指定したフィルターに一致したバグ検索結果のみ報告されます。8章フィルターファイル を参照してください。
filterFile.xml
filterFile.xml
で指定したフィルターに一致したバグ検索結果は報告されません。8章フィルターファイル を参照してください。
com.foobar.MyClass,com.foobar.mypkg.*
コンマ区切りで指定したクラスおよびパッケージのみに限定して、バグ検出の分析を行うようにします。フィルターと違って、このオプションを使うと一致しないクラスおよびパッケージに対する分析の実行を回避することができます。大きなプロジェクトにおいて、このオプションを活用すると分析にかかる時間を大きく削減することができる可能性があります。(しかしながら、アプリケーションの全体で実行していないために不正確な結果を出してしまうディテクタがある可能性もあります。) クラスはパッケージも含んだ完全な名前を指定する必要があります。また、パッケージは、 Java の import
文でパッケージ下のすべてのクラスをインポートするときと同じ方法で指定します。 (すなわち、パッケージの完全な名前に .*
を付け加えた形です。).*
の代わりに .-
を指定すると、サブパッケージも含めてすべてが分析されます。
すべてのバグが報告されます。
優先度 (中) および優先度 (高) のバグが報告されます。これは、デフォルトの設定値です。
優先度 (高) のバグのみが報告されます。
手抜き報告モードです。このオプションを指定すると、多くのディテクタにおいて 誤検出を回避するためのヒューリスティック機能が抑止されます。
バグ報告が XML で作成されます。作成された XML データは 、後で GUI で見ることができます。このオプションは -xml:withMessages と指定することもできます。こうすると 出力 XML には 各バグに関して人間に読むことができるメッセージが含まれるようになります。このオプションで作成された XML ファイルは 報告書に変換するのが簡単です。
HTML 出力が生成されます。デフォルトでは FindBugs は default.xsl
XSLT スタイルシートを使用して HTML 出力を生成します: このファイルは、 findbugs.jar
の中、または、 FindBugs のソース配布物もしくはバイナリ配布物の中にあります。このオプションには、次のようなバリエーションも存在します。すなわち、 -html:plain.xsl 、 -html:fancy.xsl および -html:fancy-hist.xsl です。plain.xsl
スタイルシートは Javascript や DOM を利用しません。したがって、古いWeb ブラウザ使用時や印刷時にも比較的うまく表示されるでしょう。fancy.xsl
スタイルシートは DOM と Javascript を利用してナビゲーションを行います。また、ビジュアル表示に CSS を使用します。fancy-hist.xsl は fancy.xsl スタイルシートを更に進化させたものです。DOM や Javascript をふんだんに駆使して、バグの一覧を動的にフィルタリングします。
ユーザー自身の XSLT スタイルシートを用いて HTML への変換を行いたい場合は、 -html:myStylesheet.xsl
のように指定してください。ここで、 myStylesheet.xsl
はユーザーが使用したいスタイルシートのファイル名です。
バグ報告が Emacs 形式で作成されます。
バグ報告が xdoc XML 形式で作成されます。Apache Mavenで使用できます。
ファイル名
指定したファイルに出力結果が作成されます。
ファイル名
この引数は、使用すべきではありません。代わりに、 -output を使用してください。
[:true|false]
このオプションは、ファイルやディレクトリーの中で入れ子になった jar および zip ファイルを分析するかどうかを指定します。デフォルトでは、入れ子になった jar および zip ファイルも分析します。入れ子になった jar および zip ファイルの分析するを無効にする場合は、 -nested:false をコマンドライン引数に追加してください。
クラスパス
分析時に使用する補助クラスパスを設定します。分析するプログラムで使用するjarファイルやクラスディレクトリーをすべて指定してください。補助クラスパスに指定したクラスは分析の対象にはなりません。
分析時に使用する補助クラスパスを標準入力から読み込みます。標準入力の各行が分析時に使用する補助クラスパスに追加されます。
ファイルパス
分析時に使用する補助クラスパスをファイルから読み込みます。ファイルの各行が分析時に使用する補助クラスパスに追加されます。
ファイルパス
分析対象ファイルをファイルから読み込みます。ファイルの各行が分析対象クラスパスに追加されます。
edu.umd.cs.findbugs.core.prefs
ユーザー設定ファイルのパスを設定します。ユーザー設定ファイルの内容で、他のオプションの一部を上書きすることができます。
userPrefs
を一番目の引数に指定した場合は、後続のオプションの方がユーザー設定ファイルの内容に優先します。
userPrefs
を最後の引数に指定した場合は、ユーザー設定ファイルの内容の方が前に指定したオプションに優先します。
このオプションを設けた背景・理由は、 Eclipse プロジェクトの FindBugs の設定をコマンドライン実行で再利用するためです。