1<html><head> 2 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 3 <title>第4章 FindBugs™ の実行</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="FindBugs™ マニュアル"><link rel="up" href="index.html" title="FindBugs™ マニュアル"><link rel="prev" href="building.html" title="第3章 FindBugs™ のソールからのビルド"><link rel="next" href="gui.html" title="第5章 FindBugs GUI の使用方法"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">第4章 <span class="application">FindBugs</span>™ の実行</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="building.html">戻る</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="gui.html">次へ</a></td></tr></table><hr></div><div class="chapter" title="第4章 FindBugs™ の実行"><div class="titlepage"><div><div><h2 class="title"><a name="running"></a>第4章 <span class="application">FindBugs</span>™ の実行</h2></div></div></div><div class="toc"><p><b>目次</b></p><dl><dt><span class="sect1"><a href="running.html#d0e455">1. クイック・スタート</a></span></dt><dt><span class="sect1"><a href="running.html#d0e493">2. <span class="application">FindBugs</span> の起動</a></span></dt><dt><span class="sect1"><a href="running.html#commandLineOptions">3. コマンドラインオプション</a></span></dt></dl></div><p><span class="application">FindBugs</span> には2つのユーザーインタフェースがあります。すなわち、グラフィカルユーザーインタフェース (GUI) および コマンドラインインタフェースです。この章では、それぞれのインタフェースの実行方法について説明します。</p><div class="warning" title="警告" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[警告]" src="warning.png"></td><th align="left">警告</th></tr><tr><td align="left" valign="top"><p>この章は、現在書き直し中です。書き直しはまだ完了していません。</p></td></tr></table></div><div class="sect1" title="1. クイック・スタート"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e455"></a>1. クイック・スタート</h2></div></div></div><p>Windows システムで <span class="application">FindBugs</span> を起動する場合は、 <code class="filename"><em class="replaceable"><code>%FINDBUGS_HOME%</code></em>\lib\findbugs.jar</code> ファイルをダブルクリックしてください。 <span class="application">FindBugs</span> GUI が起動します。</p><p>Unix 、 Linux または Mac OS X システムの場合は、<code class="filename"><em class="replaceable"><code>$FINDBUGS_HOME</code></em>/bin/findbugs</code> スクリプトを実行するか、以下のコマンドを実行します。</p><pre class="screen"> 4<span class="command"><strong>java -jar <em class="replaceable"><code>$FINDBUGS_HOME</code></em>/lib/findbugs.jar</strong></span></pre><p>これで、 <span class="application">FindBugs</span> GUI が起動します。</p><p>GUI の使用方法については、 <a class="xref" href="gui.html" title="第5章 FindBugs GUI の使用方法">5章<i><span class="application">FindBugs</span> GUI の使用方法</i></a> を参照してください。</p></div><div class="sect1" title="2. FindBugs の起動"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e493"></a>2. <span class="application">FindBugs</span> の起動</h2></div></div></div><p>このセクションでは、 <span class="application">FindBugs</span> の起動方法を説明します。<span class="application">FindBugs</span> を起動するには2つの方法があります。すなわち、直接起動する方法、および、ラップしているスクリプトを使用する方法です。</p><div class="sect2" title="2.1. FindBugs の直接起動"><div class="titlepage"><div><div><h3 class="title"><a name="directInvocation"></a>2.1. <span class="application">FindBugs</span> の直接起動</h3></div></div></div><p>最初に述べる <span class="application">FindBugs</span> の起動方法は、 <code class="filename"><em class="replaceable"><code>$FINDBUGS_HOME</code></em>/lib/findbugs.jar</code> を直接実行する方法です。JVM (<span class="command"><strong>java</strong></span>) 実行プログラムの <span class="command"><strong>-jar</strong></span> コマンドラインスイッチを使用します。(<span class="application">FindBugs</span>のバージョンが 1.3.5 より前の場合は、ラップしているスクリプトを使用する必要があります。)</p><p><span class="application">FindBugs</span> を直接起動するための、一般的な構文は以下のようになります。</p><pre class="screen"> 5 <span class="command"><strong>java <em class="replaceable"><code>[JVM 引数]</code></em> -jar <em class="replaceable"><code>$FINDBUGS_HOME</code></em>/lib/findbugs.jar <em class="replaceable"><code>オプション…</code></em></strong></span> 6</pre><p> 7 </p><div class="sect3" title="2.1.1. ユーザーインタフェースの選択"><div class="titlepage"><div><div><h4 class="title"><a name="chooseUI"></a>2.1.1. ユーザーインタフェースの選択</h4></div></div></div><p>1 番目のコマンドラインオプションは、起動する <span class="application">FindBugs</span> ユーザーインタフェースを選択するためのものです。指定可能な値は次の通りです:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> 8 <span class="command"><strong>-gui</strong></span>: グラフィカルユーザーインタフェース (GUI) を起動します。</p></li><li class="listitem"><p> 9 <span class="command"><strong>-textui</strong></span>: コマンドラインインタフェースを起動します。</p></li><li class="listitem"><p> 10 <span class="command"><strong>-version</strong></span>: <span class="application">FindBugs</span> のバージョン番号を表示します。</p></li><li class="listitem"><p> 11 <span class="command"><strong>-help</strong></span>: <span class="application">FindBugs</span> コマンドラインインタフェースのヘルプ情報を表示します。</p></li><li class="listitem"><p> 12 <span class="command"><strong>-gui1</strong></span>: 最初に作成された <span class="application">FindBugs</span> グラフィカルユーザーインタフェース(すでに廃止されサポートされていない)を起動します。</p></li></ul></div></div><div class="sect3" title="2.1.2. Java 仮想マシン (JVM) 引数"><div class="titlepage"><div><div><h4 class="title"><a name="jvmArgs"></a>2.1.2. Java 仮想マシン (JVM) 引数</h4></div></div></div><p><span class="application">FindBugs</span> を起動する際に有用な Java 仮想マシン 引数をいくつか紹介します。</p><div class="variablelist"><dl><dt><span class="term"><span class="command"><strong>-Xmx<em class="replaceable"><code>NN</code></em>m</strong></span></span></dt><dd><p>Java ヒープサイズの最大値を <em class="replaceable"><code>NN</code></em> メガバイトに設定します。<span class="application">FindBugs</span> は一般的に大容量のメモリサイズを必要とします。大きなプロジェクトでは、 1500 メガバイトを使用することも珍しくありません。</p></dd><dt><span class="term"><span class="command"><strong>-D<em class="replaceable"><code>name</code></em>=<em class="replaceable"><code>value</code></em></strong></span></span></dt><dd><p>Java システムプロパティーを設定します。例えば、引数 <span class="command"><strong>-Duser.language=ja</strong></span> を使用すると GUI 文言が日本語で表示されます。</p></dd></dl></div></div></div><div class="sect2" title="2.2. ラップしているスクリプトを使用した FindBugs の起動"><div class="titlepage"><div><div><h3 class="title"><a name="wrapperScript"></a>2.2. ラップしているスクリプトを使用した <span class="application">FindBugs</span> の起動</h3></div></div></div><p><span class="application">FindBugs</span> を起動するもうひとつの方法は、ラップしているスクリプトを使用する方法です。</p><p>Unix 系のシステムにおいては、次のようなコマンドでラップしているスクリプトを起動します :</p><pre class="screen"> 13<code class="prompt">$ </code><span class="command"><strong><em class="replaceable"><code>$FINDBUGS_HOME</code></em>/bin/findbugs <em class="replaceable"><code>オプション…</code></em></strong></span> 14</pre><p> 15</p><p>Windows システムにおいては、ラップしているスクリプトを起動するコマンドは次のようになります。</p><pre class="screen"> 16<code class="prompt">C:\My Directory></code><span class="command"><strong><em class="replaceable"><code>%FINDBUGS_HOME%</code></em>\bin\findbugs.bat <em class="replaceable"><code>オプション…</code></em></strong></span> 17</pre><p> 18</p><p>Unix 系システム および Windows システムのどちらにおいても、ディレクトリー <code class="filename"><em class="replaceable"><code>$FINDBUGS_HOME</code></em>/bin</code> を環境変数 <code class="filename">PATH</code> に追加するだけで、 <span class="command"><strong>findbugs</strong></span> コマンドを使用して FindBugs を起動することができます。</p><div class="sect3" title="2.2.1. ラップしているスクリプトのコマンドラインオプション"><div class="titlepage"><div><div><h4 class="title"><a name="wrapperOptions"></a>2.2.1. ラップしているスクリプトのコマンドラインオプション</h4></div></div></div><p><span class="application">FindBugs</span> のラップしているスクリプトは、次のようなコマンドラインオプションをサポートしています。これらのコマンドラインオプションは <span class="application">FindBugs</span> プログラム 自体が操作するのでは<span class="emphasis"><em>なく</em></span>、どちらかといえば、ラップしているスクリプトの方が処理を行います。</p><div class="variablelist"><dl><dt><span class="term"><span class="command"><strong>-jvmArgs <em class="replaceable"><code>引数</code></em></strong></span></span></dt><dd><p>JVM に受け渡される引数を指定します。例えば、次のような JVM プロパティが設定できます:</p><pre class="screen"> 19<code class="prompt">$ </code><span class="command"><strong>findbugs -textui -jvmArgs "-Duser.language=ja" <em class="replaceable"><code>myApp.jar</code></em></strong></span> 20</pre><p> 21 </p></dd><dt><span class="term"><span class="command"><strong>-javahome <em class="replaceable"><code>ディレクトリー</code></em></strong></span></span></dt><dd><p><span class="application">FindBugs</span> の実行に使用する JRE (Java ランタイム環境) がインストールされているディレクトリーを指定します。</p></dd><dt><span class="term"><span class="command"><strong>-maxHeap <em class="replaceable"><code>サイズ</code></em></strong></span></span></dt><dd><p>Java ヒープサイズの最大値をメガバイト単位で指定します。デフォルトは、 256 です。巨大なプログラムやライブラリを分析するには、もっと大きなメモリー容量が必要になる可能性があります。</p></dd><dt><span class="term"><span class="command"><strong>-debug</strong></span></span></dt><dd><p>ディテクタ実行およびクラス分析のトレース情報が標準出力に出力されます。分析が予期せず失敗した際の、トラブルシューティングに有用です。</p></dd><dt><span class="term"><span class="command"><strong>-property</strong></span> <em class="replaceable"><code>name=value</code></em></span></dt><dd><p>このオプションを使用してシステムプロパティーを設定することができます。 <span class="application">FindBugs</span> はシステムプロパティーを使用して分析特性の設定を行います。<a class="xref" href="analysisprops.html" title="第9章 分析プロパティー">9章<i>分析プロパティー</i></a> を参照してください。このオプションを複数指定して、複数のシステムプロパティを設定することが可能です。注: Windows の多くのバージョンでは、 <em class="replaceable"><code>name=value</code></em> 文字列を引用符で囲む必要があります。</p></dd></dl></div></div></div></div><div class="sect1" title="3. コマンドラインオプション"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="commandLineOptions"></a>3. コマンドラインオプション</h2></div></div></div><p>このセクションでは、 <span class="application">FindBugs</span> がサポートするコマンドラインオプションについて説明します。ここで示すコマンドラインオプションは、 <span class="application">FindBugs</span> 直接起動、または、ラップしているスクリプトによる起動で使用できます。</p><div class="sect2" title="3.1. 共通のコマンドラインオプション"><div class="titlepage"><div><div><h3 class="title"><a name="d0e778"></a>3.1. 共通のコマンドラインオプション</h3></div></div></div><p>ここで示すオプションは、 GUI および コマンドラインインタフェースの両方で使用できます。</p><div class="variablelist"><dl><dt><span class="term"><span class="command"><strong>-effort:min</strong></span></span></dt><dd><p>このオプションを指定すると、精度を上げるために大量のメモリーを消費する分析が無効になります。<span class="application">FindBugs</span> の実行時にメモリー不足になったり、分析を完了するまでに異常に長い時間がかかる場合に試してみてください。</p></dd><dt><span class="term"><span class="command"><strong>-effort:max</strong></span></span></dt><dd><p>精度が高く、より多くのバグを検出する分析を有効にします。ただし、多くのメモリー容量を必要とし、また、完了までの時間が多くかかる可能性があります。</p></dd><dt><span class="term"><span class="command"><strong>-project</strong></span> <em class="replaceable"><code>project</code></em></span></dt><dd><p>分析するプロジェクトを指定します。指定するプロジェクトファイルには、 GUI を使って作成したものを使用してください。ファイルの拡張子は、一般的には <code class="filename">.fb</code> または <code class="filename">.fbp</code> です。</p></dd></dl></div></div><div class="sect2" title="3.2. GUI オプション"><div class="titlepage"><div><div><h3 class="title"><a name="d0e818"></a>3.2. GUI オプション</h3></div></div></div><p>ここで示すオプションは、グラフィカルユーザーインタフェースでのみ使用できます。</p><div class="variablelist"><dl><dt><span class="term"><span class="command"><strong>-look:</strong></span><em class="replaceable"><code>plastic|gtk|native</code></em></span></dt><dd><p>Swing のルック・アンド・フィールを設定します。</p></dd></dl></div><p> 22</p></div><div class="sect2" title="3.3. テキストユーザーインタフェースオプション"><div class="titlepage"><div><div><h3 class="title"><a name="d0e834"></a>3.3. テキストユーザーインタフェースオプション</h3></div></div></div><p>ここで示すオプションは、テキストユーザーインタフェースでのみ使用できます。</p><div class="variablelist"><dl><dt><span class="term"><span class="command"><strong>-sortByClass</strong></span></span></dt><dd><p>報告されるバグ検索結果をクラス名でソートします。</p></dd><dt><span class="term"><span class="command"><strong>-include</strong></span> <em class="replaceable"><code>filterFile.xml</code></em></span></dt><dd><p><em class="replaceable"><code>filterFile.xml</code></em> で指定したフィルターに一致したバグ検索結果のみ報告されます。<a class="xref" href="filter.html" title="第8章 フィルターファイル">8章<i>フィルターファイル</i></a> を参照してください。</p></dd><dt><span class="term"><span class="command"><strong>-exclude</strong></span> <em class="replaceable"><code>filterFile.xml</code></em></span></dt><dd><p><em class="replaceable"><code>filterFile.xml</code></em> で指定したフィルターに一致したバグ検索結果は報告されません。<a class="xref" href="filter.html" title="第8章 フィルターファイル">8章<i>フィルターファイル</i></a> を参照してください。</p></dd><dt><span class="term"><span class="command"><strong>-onlyAnalyze</strong></span> <em class="replaceable"><code>com.foobar.MyClass,com.foobar.mypkg.*</code></em></span></dt><dd><p>コンマ区切りで指定したクラスおよびパッケージのみに限定して、バグ検出の分析を行うようにします。フィルターと違って、このオプションを使うと一致しないクラスおよびパッケージに対する分析の実行を回避することができます。大きなプロジェクトにおいて、このオプションを活用すると分析にかかる時間を大きく削減することができる可能性があります。(しかしながら、アプリケーションの全体で実行していないために不正確な結果を出してしまうディテクタがある可能性もあります。) クラスはパッケージも含んだ完全な名前を指定する必要があります。また、パッケージは、 Java の <code class="literal">import</code> 文でパッケージ下のすべてのクラスをインポートするときと同じ方法で指定します。 (すなわち、パッケージの完全な名前に <code class="literal">.*</code> を付け加えた形です。)<code class="literal">.*</code> の代わりに <code class="literal">.-</code> を指定すると、サブパッケージも含めてすべてが分析されます。</p></dd><dt><span class="term"><span class="command"><strong>-low</strong></span></span></dt><dd><p>すべてのバグが報告されます。</p></dd><dt><span class="term"><span class="command"><strong>-medium</strong></span></span></dt><dd><p>優先度 (中) および優先度 (高) のバグが報告されます。これは、デフォルトの設定値です。</p></dd><dt><span class="term"><span class="command"><strong>-high</strong></span></span></dt><dd><p>優先度 (高) のバグのみが報告されます。</p></dd><dt><span class="term"><span class="command"><strong>-relaxed</strong></span></span></dt><dd><p>手抜き報告モードです。このオプションを指定すると、多くのディテクタにおいて 誤検出を回避するためのヒューリスティック機能が抑止されます。</p></dd><dt><span class="term"><span class="command"><strong>-xml</strong></span></span></dt><dd><p>バグ報告が XML で作成されます。作成された XML データは 、後で GUI で見ることができます。このオプションは <span class="command"><strong>-xml:withMessages</strong></span> と指定することもできます。こうすると 出力 XML には 各バグに関して人間に読むことができるメッセージが含まれるようになります。このオプションで作成された XML ファイルは 報告書に変換するのが簡単です。</p></dd><dt><span class="term"><span class="command"><strong>-html</strong></span></span></dt><dd><p>HTML 出力が生成されます。デフォルトでは <span class="application">FindBugs</span> は <code class="filename">default.xsl</code> <a class="ulink" href="http://www.w3.org/TR/xslt" target="_top">XSLT</a> スタイルシートを使用して HTML 出力を生成します: このファイルは、 <code class="filename">findbugs.jar</code> の中、または、 <span class="application">FindBugs</span> のソース配布物もしくはバイナリ配布物の中にあります。このオプションには、次のようなバリエーションも存在します。すなわち、 <span class="command"><strong>-html:plain.xsl</strong></span> 、 <span class="command"><strong>-html:fancy.xsl</strong></span> および <span class="command"><strong>-html:fancy-hist.xsl</strong></span> です。<code class="filename">plain.xsl</code> スタイルシートは Javascript や DOM を利用しません。したがって、古いWeb ブラウザ使用時や印刷時にも比較的うまく表示されるでしょう。<code class="filename">fancy.xsl</code> スタイルシートは DOM と Javascript を利用してナビゲーションを行います。また、ビジュアル表示に CSS を使用します。<span class="command"><strong>fancy-hist.xsl</strong></span> は <span class="command"><strong>fancy.xsl</strong></span> スタイルシートを更に進化させたものです。DOM や Javascript をふんだんに駆使して、バグの一覧を動的にフィルタリングします。</p><p>ユーザー自身の XSLT スタイルシートを用いて HTML への変換を行いたい場合は、 <span class="command"><strong>-html:<em class="replaceable"><code>myStylesheet.xsl</code></em></strong></span> のように指定してください。ここで、 <em class="replaceable"><code>myStylesheet.xsl</code></em> はユーザーが使用したいスタイルシートのファイル名です。</p></dd><dt><span class="term"><span class="command"><strong>-emacs</strong></span></span></dt><dd><p>バグ報告が Emacs 形式で作成されます。</p></dd><dt><span class="term"><span class="command"><strong>-xdocs</strong></span></span></dt><dd><p>バグ報告が xdoc XML 形式で作成されます。Apache Mavenで使用できます。</p></dd><dt><span class="term"><span class="command"><strong>-output</strong></span> <em class="replaceable"><code>ファイル名</code></em></span></dt><dd><p>指定したファイルに出力結果が作成されます。</p></dd><dt><span class="term"><span class="command"><strong>-outputFile</strong></span> <em class="replaceable"><code>ファイル名</code></em></span></dt><dd><p>この引数は、使用すべきではありません。代わりに、 <span class="command"><strong>-output</strong></span> を使用してください。</p></dd><dt><span class="term"><span class="command"><strong>-nested</strong></span><em class="replaceable"><code>[:true|false]</code></em></span></dt><dd><p>このオプションは、ファイルやディレクトリーの中で入れ子になった jar および zip ファイルを分析するかどうかを指定します。デフォルトでは、入れ子になった jar および zip ファイルも分析します。入れ子になった jar および zip ファイルの分析するを無効にする場合は、 <span class="command"><strong>-nested:false</strong></span> をコマンドライン引数に追加してください。</p></dd><dt><span class="term"><span class="command"><strong>-auxclasspath</strong></span> <em class="replaceable"><code>クラスパス</code></em></span></dt><dd><p>分析時に使用する補助クラスパスを設定します。分析するプログラムで使用するjarファイルやクラスディレクトリーをすべて指定してください。補助クラスパスに指定したクラスは分析の対象にはなりません。</p></dd></dl></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="building.html">戻る</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="gui.html">次へ</a></td></tr><tr><td width="40%" align="left" valign="top">第3章 <span class="application">FindBugs</span>™ のソールからのビルド </td><td width="20%" align="center"><a accesskey="h" href="index.html">ホーム</a></td><td width="40%" align="right" valign="top"> 第5章 <span class="application">FindBugs</span> GUI の使用方法</td></tr></table></div></body></html>