1 <html><head> 2 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 3 <title>第6章 FindBugs™ Ant タスクの使用方法</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="gui.html" title="第5章 FindBugs GUI の使用方法"><link rel="next" href="eclipse.html" title="第7章 FindBugs™ Eclipse プラグインの使用方法"></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">第6章 <span class="application">FindBugs</span>™ <span class="application">Ant</span> タスクの使用方法</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="gui.html">戻る</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="eclipse.html">次へ</a></td></tr></table><hr></div><div class="chapter" title="第6章 FindBugs™ Ant タスクの使用方法"><div class="titlepage"><div><div><h2 class="title"><a name="anttask"></a>第6章 <span class="application">FindBugs</span>™ <span class="application">Ant</span> タスクの使用方法</h2></div></div></div><div class="toc"><p><b>目次</b></p><dl><dt><span class="sect1"><a href="anttask.html#d0e1173">1. <span class="application">Ant</span> タスクのインストール</a></span></dt><dt><span class="sect1"><a href="anttask.html#d0e1209">2. build.xml の書き方</a></span></dt><dt><span class="sect1"><a href="anttask.html#d0e1278">3. タスクの実行</a></span></dt><dt><span class="sect1"><a href="anttask.html#d0e1303">4. パラメーター</a></span></dt></dl></div><p>この章では、 <span class="application">FindBugs</span> を <a class="ulink" href="http://ant.apache.org/" target="_top"><span class="application">Ant</span></a> のビルドスクリプトに組み入れる方法について説明します。 <a class="ulink" href="http://ant.apache.org/" target="_top"><span class="application">Ant</span></a> は、ビルドや配備を行うことができる Java でよく使用されるツールです。<span class="application">FindBugs</span> <span class="application">Ant</span> タスクを使用すると、 ビルドスクリプトを作成して機械的に <span class="application">FindBugs</span> による Java コードの分析を実行することができます。</p><p>この <span class="application">Ant</span> タスクは、 Mike Fagan 氏の多大な貢献によるものです。</p><div class="sect1" title="1. Ant タスクのインストール"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1173"></a>1. <span class="application">Ant</span> タスクのインストール</h2></div></div></div><p><span class="application">Ant</span> タスクのインストールは、 <code class="filename"><em class="replaceable"><code>$FINDBUGS_HOME</code></em>/lib/findbugs-ant.jar</code> を <span class="application">Ant</span> インストールディレクトリーの<code class="filename">lib</code> サブディレクトリーにコピーするだけです。</p><div class="note" title="注記" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[注記]" src="note.png"></td><th align="left">注記</th></tr><tr><td align="left" valign="top"><p>使用する <span class="application">Ant</span> タスクと <span class="application">FindBugs</span> 本体は、同梱されていた同じバージョンのものを使用することを強く推奨します。別のバージョンの <span class="application">FindBugs</span> に含まれていた <span class="application">Ant</span> タスク Jar ファイルでの動作は保証しません。</p></td></tr></table></div><p> 4 </p></div><div class="sect1" title="2. build.xml の書き方"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1209"></a>2. build.xml の書き方</h2></div></div></div><p><span class="application">FindBugs</span> を <code class="filename">build.xml</code> (<span class="application">Ant</span> ビルドスクリプト) に組み入れるためにはまず、タスク定義を記述する必要があります。タスク定義は次のように記述します。:</p><pre class="screen"> 5 <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"/> 6 </pre><p>タスク定義は、 <code class="literal">findbugs</code> 要素を <code class="filename">build.xml</code> 上に記述したとき、そのタスクの実行に使用されるクラスを指定します。</p><p>タスク定義の記述をすれば、<code class="literal">findbugs</code> タスクを使ってターゲットを定義できます。次に示すのは、 Apache <a class="ulink" href="http://jakarta.apache.org/bcel/" target="_top">BCEL</a> ライブラリーを分析する場合を想定した <code class="filename">build.xml</code> の記述例です。</p><pre class="screen"> 7 <property name="findbugs.home" value="/export/home/daveho/work/findbugs" /> 8 9 <target name="findbugs" depends="jar"> 10 <findbugs home="${findbugs.home}" 11 output="xml" 12 outputFile="bcel-fb.xml" > 13 <auxClasspath path="${basedir}/lib/Regex.jar" /> 14 <sourcePath path="${basedir}/src/java" /> 15 <class location="${basedir}/bin/bcel.jar" /> 16 </findbugs> 17 </target> 18 </pre><p><code class="literal">findbugs</code> 要素には、 <code class="literal">home</code> 属性が必須です。 <span class="application">FindBugs</span> のインストールディレクトリーすなわち <em class="replaceable"><code>$FINDBUGS_HOME</code></em> の値を設定します。<a class="xref" href="installing.html" title="第2章 FindBugs™ のインストール">2章<i><span class="application">FindBugs</span>™ のインストール</i></a> を参照してください。</p><p>このターゲットは <code class="filename">bcel.jar</code> に対して <span class="application">FindBugs</span> を実行します。この Jar ファイルは、 BCEL ビルドスクリプトによって作成されるものです。(上記のターゲットが「jar」ターゲットに依存している (depends) と設定することにより、 <span class="application">FindBugs</span> が実行される前に当該ライブラリーが完全にコンパイルされていることを保証しています。) <span class="application">FindBugs</span> の出力は、 XML 形式で <code class="filename">bcel-fb.xml</code> ファイルに保存されます。補助 Jar ファイル <code class="filename">Regex.jar</code> を aux classpath に記述しています。なぜなら、当該 Jar ファイルが BCEL メイン・ライブラリーから参照されるからです。source path を指定することで、保存されるバグデータに BCEL ソースコードへの正確な参照が記述されます。</p></div><div class="sect1" title="3. タスクの実行"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1278"></a>3. タスクの実行</h2></div></div></div><p>コマンドラインから <span class="application">Ant</span> を起動する例を次に示します。前述の <code class="literal">findbugs</code> ターゲットを使用しています。</p><pre class="screen"> 19 <code class="prompt">[daveho@noir]$</code> <span class="command"><strong>ant findbugs</strong></span> 20 Buildfile: build.xml 21 22 init: 23 24 compile: 25 26 examples: 27 28 jar: 29 30 findbugs: 31 [findbugs] Running FindBugs... 32 [findbugs] Bugs were found 33 [findbugs] Output saved to bcel-fb.xml 34 35 BUILD SUCCESSFUL 36 Total time: 35 seconds 37 </pre><p>この事例においては、XML ファイルでバグ検索結果を保存しているので、 <span class="application">FindBugs</span> GUI を使って結果を参照することができます。 <a class="xref" href="running.html" title="第4章 FindBugs™ の実行">4章<i><span class="application">FindBugs</span>™ の実行</i></a> を参照してください。</p></div><div class="sect1" title="4. パラメーター"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1303"></a>4. パラメーター</h2></div></div></div><p>このセクションでは、 <span class="application">FindBugs</span> タスクを使用する際に、指定することができるパラメーターについて説明します。</p><div class="variablelist"><dl><dt><span class="term"><code class="literal">class</code></span></dt><dd><p>分析の対象となるクラス群を指定するためのネストされる要素です。<code class="literal">class</code> 要素には <code class="literal">location</code> 属性の指定が必須です。分析対象となるアーカイブファイル (jar, zip, 他)、ディレクトリーまたはクラスファイルの名前を記述します。1 つの <code class="literal">findbugs</code> 要素に対して、複数の <code class="literal">class</code> 子要素を指定することができます。</p></dd><dt><span class="term"><code class="literal">auxClasspath</code></span></dt><dd><p>任意指定のネストされる要素です。分析対象のライブラリーまたはアプリケーションによって使用されているが分析の対象にはしたくないクラスを含んでいるクラスパス (Jar ファイルまたはディレクトリー) を指定します。 <span class="application">Ant</span> の Java タスクにある <code class="literal">classpath</code> 要素 と同じ方法で指定することができます。</p></dd><dt><span class="term"><code class="literal">sourcePath</code></span></dt><dd><p>任意指定のネストされる要素です。分析対象 Java コードのコンパイル時に使用したソースファイルを含んでいるソースディレクトリーへのパスを指定します。ソースパスを指定することにより、生成される XML のバグ出力結果に完全なソース情報をもたせることができ、後になって GUI で参照することができます。</p></dd><dt><span class="term"><code class="literal">home</code></span></dt><dd><p>必須属性です。<span class="application">FindBugs</span> がインストールされているディレクトリー名を設定します。</p></dd><dt><span class="term"><code class="literal">quietErrors</code></span></dt><dd><p>任意指定のブール値属性です。true を設定すると、深刻な分析エラー発生やクラスがみつからないといった情報が <span class="application">FindBugs</span> 出力に記録されません。デフォルトは、 false です。</p></dd><dt><span class="term"><code class="literal">reportLevel</code></span></dt><dd><p>任意指定の属性です。報告されるバグの優先度のしきい値を指定します。「low」に設定すると、すべてのバグが報告されます。「medium」 (デフォルト) に設定すると、優先度 (中)および優先度 (高)のバグが報告されます。「high」に設定すると、優先度 (高) のバグのみが報告されます。</p></dd><dt><span class="term"><code class="literal">output</code></span></dt><dd><p>任意指定の属性です。出力形式を指定します。「xml」 (デフォルト) に設定すると、出力は XML 形式になります。「xml:withMessages」 に設定すると、出力は人間が読めるメッセージ が追加された XML 形式になります。(XSL スタイルシートを使ってレポートを作成することを計画している場合はこの形式を使用してください。) 「html」に設定すると、出力は HTML 形式(デフォルトのスタイルシートは default.xsl) になります。 「text」に設定すると、出力は特別なテキスト形式になります。「emacs」に設定すると、出力は <a class="ulink" href="http://www.gnu.org/software/emacs/" target="_top">Emacs</a> エラーメッセージ形式になります。「xdocs」に設定すると、出力は Apache Maven で使用できる xdoc XML になります。</p></dd><dt><span class="term"><code class="literal">stylesheet</code></span></dt><dd><p>任意指定の属性です。output 属性 に html を指定した場合に、 HTML 出力作成に使用されるスタイルシートを指定します。FindBugs 配布物に含まれているスタイルシートは、 default.xsl、 fancy.xsl 、 fancy-hist.xsl 、 plain.xsl および summary.xsl です。デフォルト値は default.xsl です。</p></dd><dt><span class="term"><code class="literal">sort</code></span></dt><dd><p>任意指定の属性です。<code class="literal">output</code> 属性に「text」を指定した場合に、バグの報告をクラス順にソートするかどうかを <code class="literal">sort</code> 属性で指定します。デフォルトは、 true です。</p></dd><dt><span class="term"><code class="literal">outputFile</code></span></dt><dd><p>任意指定の属性です。指定した場合、<span class="application">FindBugs</span> の出力はその名前のファイルへと保存されます。省略時、出力は <span class="application">Ant</span> によって直接表示されます。</p></dd><dt><span class="term"><code class="literal">debug</code></span></dt><dd><p>任意指定のブール値属性です。true に設定すると、 <span class="application">FindBugs</span> は 診断情報を出力します。どのクラスを分析しているか、どのパグパターンディテクタが実行されているか、という情報が表示されます。デフォルトは、 false です。</p></dd><dt><span class="term"><code class="literal">effort</code></span></dt><dd><p>分析の活動レベルを設定します。<code class="literal">min</code> 、<code class="literal">default</code> または <code class="literal">max</code> のいずれかの値を設定してください。分析レベルの設定に関する詳細情報は、 <a class="xref" href="running.html#commandLineOptions" title="3. コマンドラインオプション">「コマンドラインオプション」</a> を参照してください。</p></dd><dt><span class="term"><code class="literal">conserveSpace</code></span></dt><dd><p>effort="min" と同義です。</p></dd><dt><span class="term"><code class="literal">workHard</code></span></dt><dd><p>effort="max" と同義です。</p></dd><dt><span class="term"><code class="literal">visitors</code></span></dt><dd><p>任意指定の属性です。どのバグディテクタを実行するかをコンマ区切りのリストで指定します。バグディテクタはパッケージ指定なしのクラス名で指定します。省略時、デフォルトで無効化されているものを除くすべてのディテクタが実行されます。</p></dd><dt><span class="term"><code class="literal">omitVisitors</code></span></dt><dd><p>任意指定の属性です。<code class="literal">visitors</code> 属性と似ていますが、こちらは <span class="emphasis"><em>実行されない</em></span> ディテクタを指定します。</p></dd><dt><span class="term"><code class="literal">excludeFilter</code></span></dt><dd><p>任意指定の属性です。フィルターファイル名を指定します。報告から除外されるバグを指定します。<a class="xref" href="filter.html" title="第8章 フィルターファイル">8章<i>フィルターファイル</i></a> を参照してください。</p></dd><dt><span class="term"><code class="literal">includeFilter</code></span></dt><dd><p>任意指定の属性です。フィルターファイル名を指定します。報告されるバグを指定します。<a class="xref" href="filter.html" title="第8章 フィルターファイル">8章<i>フィルターファイル</i></a> を参照してください。</p></dd><dt><span class="term"><code class="literal">projectFile</code></span></dt><dd><p>任意指定の属性です。プロジェクトファイル名を指定します。プロジェクトファイルは、 <span class="application">FindBugs</span> GUI で作成します。分析されるクラス、および、補助クラスパス、ソースディレクトリーが記入されてます。プロジェクトファイルを指定した場合は、 <code class="literal">class</code> 要素・ <code class="literal">auxClasspath</code> 属性および <code class="literal">sourcePath</code> 属性を設定する必要はありません。プロジェクトの作成方法は、 <a class="xref" href="running.html" title="第4章 FindBugs™ の実行">4章<i><span class="application">FindBugs</span>™ の実行</i></a> を参照してください。</p></dd><dt><span class="term"><code class="literal">jvmargs</code></span></dt><dd><p>任意指定の属性です。<span class="application">FindBugs</span> を実行している Java 仮想マシンに対して受け渡される引数を指定します。巨大なプログラムを分析する場合に、 JVM が使用するメモリ容量を増やす指定をするためにこの引数を利用する必要があるかもしれません。</p></dd><dt><span class="term"><code class="literal">systemProperty</code></span></dt><dd><p>任意指定のネストされる要素です。指定した場合、Java システムプロパティーを定義します。<code class="literal">name</code> 属性にはシステムプロパティーの名前を指定します。そして、 <code class="literal">value</code> 属性にはシステムプロパティの値を指定します。</p></dd><dt><span class="term"><code class="literal">timeout</code></span></dt><dd><p>任意指定の属性です。<span class="application">FindBugs</span> を実行している Java プロセス の実行許容時間をミリ秒単位で指定します。時間を超過するとハングアップしていると判断してプロセスが終了されます。デフォルトは、 600,000 ミリ秒 (10 分) です。巨大なプログラムの場合は、 <span class="application">FindBugs</span> が分析を完了するまでに 10 分 以上掛かる可能性があることに注意してください。</p></dd><dt><span class="term"><code class="literal">failOnError</code></span></dt><dd><p>任意指定のブール値属性です。<span class="application">FindBugs</span> の実行中にエラーがあった場合に、ビルドプロセス自体を打ち切って異常終了させるかどうかを指定します。デフォルトは、「false」です。</p></dd><dt><span class="term"><code class="literal">errorProperty</code></span></dt><dd><p>任意指定の属性です。<span class="application">FindBugs</span> の実行中にエラーが発生した場合に、「true」が設定されるプロパティーの名前を指定します。</p></dd><dt><span class="term"><code class="literal">warningsProperty</code></span></dt><dd><p>任意指定の属性です。<span class="application">FindBugs</span> が分析したプログラムにバグ報告が 1 件でもある場合に、「true」が設定されるプロパティーの名前を指定します。</p></dd></dl></div><p> 38 39 40 </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="gui.html">戻る</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="eclipse.html">次へ</a></td></tr><tr><td width="40%" align="left" valign="top">第5章 <span class="application">FindBugs</span> GUI の使用方法 </td><td width="20%" align="center"><a accesskey="h" href="index.html">ホーム</a></td><td width="40%" align="right" valign="top"> 第7章 <span class="application">FindBugs</span>™ Eclipse プラグインの使用方法</td></tr></table></div></body></html>