OLD | NEW |
1 <html><head> | 1 <html><head> |
2 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> | 2 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
3 <title>第8章 フィルターフ
449;イル</title><meta name="generator" content="DocBook XSL Styleshe
ets V1.76.1"><link rel="home" href="index.html" title="FindBugs™ マ&
#12491;ュアル"><link rel="up" href="index.html" title="FindBug
s™ マニュアル"><link rel="prev" href="eclips
e.html" title="第7章 FindBugs™ Eclipse プラグ
;インの使用方法"><link rel="next" href
="analysisprops.html" title="第9章 分析プロ&
#12497;ティー"></head><body bgcolor="white" text="black" link=
"#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="1
00%" summary="Navigation header"><tr><th colspan="3" align="center">第8
1456; フィルターファイル</
th></tr><tr><td width="20%" align="left"><a accesskey="p" href="eclipse.html">&#
25147;る</a> </td><th width="60%" align="center"> </th><td width
="20%" align="right"> <a accesskey="n" href="analysisprops.html">次&#
12408;</a></td></tr></table><hr></div><div class="chapter" title="第8ĺ
56; フィルターファイル"><d
iv class="titlepage"><div><div><h2 class="title"><a name="filter"></a>第8&
#31456; フィルターファイル
</h2></div></div></div><div class="toc"><p><b>目次</b></p><dl><dt><s
pan class="sect1"><a href="filter.html#d0e1709">1. フィル|
79;ーファイルの概要</a></span></
dt><dt><span class="sect1"><a href="filter.html#d0e1759">2. マッ
481;ング条件の種類</a></span></dt><dt>
<span class="sect1"><a href="filter.html#d0e1958">3. Java 要素ࡧ
7;マッチング</a></span></dt><dt><span class="sect1
"><a href="filter.html#d0e1982">4. 留意事項</a></span></
dt><dt><span class="sect1"><a href="filter.html#d0e2012">5. 例</a></span><
/dt><dt><span class="sect1"><a href="filter.html#d0e2065">6. 完全
2394;例</a></span></dt></dl></div><p>フィルタ}
40;ファイルを使用する{
71;とで、特定のクラス|
20;メソッドをバグ報告{
95;含めたりバグ報告か|
25;除外したりすること{
64;できます。この章で{
99;、フィルターファイ}
23;の使用方法を説明し|
14;す。</p><div class="note" title="計画され
ている機能" style="margin-left: 0.5in; margin-righ
t: 0.5in;"><table border="0" summary="Note: 計画され
390;いる機能"><tr><td rowspan="2" align="center" valign=
"top" width="25"><img alt="[注記]" src="note.png"></td><th align="le
ft">計画されている機能</th
></tr><tr><td align="left" valign="top"><p>フィルタ}
40;は現在、コマンドラ|
52;ンインタフェースで{
98;みサポートされてい|
14;す。最終的には、フ|
51;ルターのサポートは GUI
にも追加される予定で
す。</p></td></tr></table></div><p> | 3 <title>第8章 フィルターフ
449;イル</title><meta name="generator" content="DocBook XSL Styleshe
ets V1.76.1"><link rel="home" href="index.html" title="FindBugs™ マ&
#12491;ュアル"><link rel="up" href="index.html" title="FindBug
s™ マニュアル"><link rel="prev" href="eclips
e.html" title="第7章 FindBugs™ Eclipse プラグ
;インの使用方法"><link rel="next" href
="analysisprops.html" title="第9章 分析プロ&
#12497;ティー"></head><body bgcolor="white" text="black" link=
"#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="1
00%" summary="Navigation header"><tr><th colspan="3" align="center">第8
1456; フィルターファイル</
th></tr><tr><td width="20%" align="left"><a accesskey="p" href="eclipse.html">&#
25147;る</a> </td><th width="60%" align="center"> </th><td width
="20%" align="right"> <a accesskey="n" href="analysisprops.html">次&#
12408;</a></td></tr></table><hr></div><div class="chapter" title="第8ĺ
56; フィルターファイル"><d
iv class="titlepage"><div><div><h2 class="title"><a name="filter"></a>第8&
#31456; フィルターファイル
</h2></div></div></div><div class="toc"><p><b>目次</b></p><dl><dt><s
pan class="sect1"><a href="filter.html#d0e1843">1. フィル|
79;ーファイルの概要</a></span></
dt><dt><span class="sect1"><a href="filter.html#d0e1893">2. マッ
481;ング条件の種類</a></span></dt><dt>
<span class="sect1"><a href="filter.html#d0e2157">3. Java 要素ࡧ
7;マッチング</a></span></dt><dt><span class="sect1
"><a href="filter.html#d0e2185">4. 留意事項</a></span></
dt><dt><span class="sect1"><a href="filter.html#d0e2215">5. 例</a></span><
/dt><dt><span class="sect1"><a href="filter.html#d0e2278">6. 完全
2394;例</a></span></dt></dl></div><p>フィルタ}
40;ファイルを使用する{
71;とで、特定のクラス|
20;メソッドをバグ報告{
95;含めたりバグ報告か|
25;除外したりすること{
64;できます。この章で{
99;、フィルターファイ}
23;の使用方法を説明し|
14;す。</p><div class="note" title="計画され
ている機能" style="margin-left: 0.5in; margin-righ
t: 0.5in;"><table border="0" summary="Note: 計画され
390;いる機能"><tr><td rowspan="2" align="center" valign=
"top" width="25"><img alt="[注記]" src="note.png"></td><th align="le
ft">計画されている機能</th
></tr><tr><td align="left" valign="top"><p>フィルタ}
40;は現在、コマンドラ|
52;ンインタフェースで{
98;みサポートされてい|
14;す。最終的には、フ|
51;ルターのサポートは GUI
にも追加される予定で
す。</p></td></tr></table></div><p> |
4 </p><div class="sect1" title="1. フィルターフ
;ァイルの概要"><div class="titlepage"><div><
div><h2 class="title" style="clear: both"><a name="d0e1709"></a>1. フ|
51;ルターファイルの概Š
01;</h2></div></div></div><p>概念的に言え
2400;、フィルターはバグ
6908;索結果をある基準と
9031;合します。フィルタ
2540;を定義することで、 &#
29305;別な取り扱いをする&#
12496;グ検索結果を選択す&#
12427;ことができます。例&#
12360;ば、あるバグ検索結&#
26524;をバグ報告に含めた&#
12426;、バグ報告から除外&#
12375;たりすることができ&#
12414;す。</p><p>フィルターフ
2449;イルは、 <a class="ulink" href="http://www.w3.org/X
ML/" target="_top">XML</a> 文書です。最Ç
78;位要素が <code class="literal">FindBugsFilter<
/code> 要素 であり、その子
要素として <code class="literal">Match</code> #
201;素を複数個定義しま
377;。それぞれの <code class="literal">Match
</code> 要素は、生成された
バグ検索結果に適用さ
れる述部にあたります
。通常、フィルターは
バグ検索結果を除外す
るために使用します。
次に、例を示します:</p><pr
e class="screen"> | 4 </p><div class="sect1" title="1. フィルターフ
;ァイルの概要"><div class="titlepage"><div><
div><h2 class="title" style="clear: both"><a name="d0e1843"></a>1. フ|
51;ルターファイルの概Š
01;</h2></div></div></div><p>概念的に言え
2400;、フィルターはバグ
6908;索結果をある基準と
9031;合します。フィルタ
2540;を定義することで、 &#
29305;別な取り扱いをする&#
12496;グ検索結果を選択す&#
12427;ことができます。例&#
12360;ば、あるバグ検索結&#
26524;をバグ報告に含めた&#
12426;、バグ報告から除外&#
12375;たりすることができ&#
12414;す。</p><p>フィルターフ
2449;イルは、 <a class="ulink" href="http://www.w3.org/X
ML/" target="_top">XML</a> 文書です。最Ç
78;位要素が <code class="literal">FindBugsFilter<
/code> 要素 であり、その子
要素として <code class="literal">Match</code> #
201;素を複数個定義しま
377;。それぞれの <code class="literal">Match
</code> 要素は、生成された
バグ検索結果に適用さ
れる述部にあたります
。通常、フィルターは
バグ検索結果を除外す
るために使用します。
次に、例を示します:</p><pr
e class="screen"> |
5 <code class="prompt">$ </code><span class="command"><strong>findbugs -textui -ex
clude <em class="replaceable"><code>myExcludeFilter.xml</code></em> <em class="r
eplaceable"><code>myApp.jar</code></em></strong></span> | 5 <code class="prompt">$ </code><span class="command"><strong>findbugs -textui -ex
clude <em class="replaceable"><code>myExcludeFilter.xml</code></em> <em class="r
eplaceable"><code>myApp.jar</code></em></strong></span> |
6 </pre><p>また一方で、的をし
;ぼった報告を得るため
;にバグ報告結果を選択
;するためにフィルター
;を使用することも考え
;られます :</p><pre class="screen"> | 6 </pre><p>また一方で、的をし
;ぼった報告を得るため
;にバグ報告結果を選択
;するためにフィルター
;を使用することも考え
;られます :</p><pre class="screen"> |
7 <code class="prompt">$ </code><span class="command"><strong>findbugs -textui -in
clude <em class="replaceable"><code>myIncludeFilter.xml</code></em> <em class="r
eplaceable"><code>myApp.jar</code></em></strong></span> | 7 <code class="prompt">$ </code><span class="command"><strong>findbugs -textui -in
clude <em class="replaceable"><code>myIncludeFilter.xml</code></em> <em class="r
eplaceable"><code>myApp.jar</code></em></strong></span> |
8 </pre><p> | 8 </pre><p> |
9 </p><p> | 9 </p><p> |
10 <code class="literal">Match</code> 要素は子要ŀ
32;を持ちます。それら{
98;子要素は論理積で述Ų
96;になります。つまりz
89;述部が真であるため{
95;は、すべての子要素{
64;真である必要があり|
14;す。</p></div><div class="sect1" title="2. マッӠ
1;ング条件の種類"><div class="titlepag
e"><div><div><h2 class="title" style="clear: both"><a name="d0e1759"></a>2. 
510;ッチング条件の種類</h2
></div></div></div><div class="variablelist"><dl><dt><span class="term"><code cl
ass="literal"><Bug></code></span></dt><dd><p>この要ŀ
32;は、バグパターンをý
51;定して照合します。<code
class="literal">pattern</code> 属性には、コ
ンマ区切りでバグパタ
ーン類型のリストを指
定します。どの警告が
どのバグパターン類型
にあたるかは、 <span class="command"><
strong>-xml</strong></span> オプションを
388;かって出力されたも
398; (<code class="literal">BugInstance</code> 要素の <code cl
ass="literal">type</code> 属性) を見るか
289;または、 <a class="ulink" href="../../bugDescription
s.html" target="_top">バグ解説ドキュ&#
12513;ント</a>を参照してくӖ
4;さい。</p><p>もっと粒度の
;粗い照合を行いたいと
;きは、 <code class="literal">code</code> 属性
434;使用してください。
496;グ略称のコンマ区切
426;のリストで指定でき
414;す。さらに粒度の粗
356;照合を行いたいとき
399;、 <code class="literal">category</code> 属性をË
51;用してください。次{
95;示す、バグカテゴリ}
40;名のコンマ区切りの}
22;ストで指定できます : <c
ode class="literal">CORRECTNESS</code>, <code class="literal">MT_CORRECTNESS</co
de>, <code class="literal">BAD_PRACTICICE</code>, <code class="literal">PERFORMA
NCE</code>, <code class="literal">STYLE</code>.</p><p>同じ <code cla
ss="literal"><Bug></code> 要素に上記の
属性を複数指定した場
合は、バグパターン名
、バグ略称、バグカテ
ゴリーのいずれか1つで
;も該当すれば、バグパ
;ターンは合致すると判
;定されます。</p><p>下位互
換性を持たせたい場合
は、 <code class="literal"><Bug></code> 要素ӗ
8;代わりに <code class="literal"><BugPattern></cod
e> 要素および <code class="literal"><BugCode>
;</code> 要素を使用してくだ
;さい。これらの要素は
;それぞれ、 <code class="literal">name</code> 
646;性で値のリストを指
450;します。これらの要 
032;は、将来サポートさ
428;なくなる可能性があ
426;ます。</p></dd><dt><span class="term"><code class="literal
"><Priority></code></span></dt><dd><p>この要素
399;、特定の優先度をも
388;警告を照合します。<cod
e class="literal">value</code> 属性には、整&
#25968;値を指定します : 1 は
778;先度(高)、また、 2 はࠝ
8;先度(中) 、 3 は優先度(低
;) を示します。</p></dd><dt><span class="ter
m"><code class="literal"><Package></code></span></dt><dd><p>こӗ
8;要素は、 <code class="literal">name</code> 属
4615;で指定した特定のパ
2483;ケージ内にあるクラ
2473;に関連した警告を照
1512;します。入れ子のパ
2483;ケージは含まれませ
2435; (Java import 文に従っていま{
77;) 。しかしながら、正
5215;表現を使うと複数パ
2483;ケージにマッチさせ
2427;ことは簡単にできま
2377;。</p></dd><dt><span class="term"><code class="literal"><Class>
</code></span></dt><dd><p>この要素は、୲
5;定のクラスに関連しӖ
3;警告を照合します。<code
class="literal">name</code> 属性を使用し
390;、照合するクラス名
434;クラス名そのものか
289;または、正規表現で
351;定します。</p><p>下位互ÿ
63;性を持たせたい場合{
99;、この要素の代わり{
95; <code class="literal">Match</code> 要素を使用&
#12375;てください。クラス&
#21517;そのものの指定は <code cl
ass="literal">class</code> 属性を、クラ|
73;名を正規表現で指定{
77;る場合は <code class="literal">classregex</code> 
646;性をそれぞれ使用し
390;ください</p><p>もし <code class="literal
">Match</code> 要素に <code class="literal">Class</code> Š
01;素が無かったり、 <code class=
"literal">class</code> / <code class="literal">classregex</code> 属性
;が無かったりした場合
;は、すべてのクラスに
;適用されます。その場
;合、想定外に多くのバ
;グ検索結果が一致して
;しまうことがあり得ま
;す。その場合は、適当
;なメソッドやフィール
;ドで絞り込んでくださ
;い。</p></dd><dt><span class="term"><code class="literal"><Metho
d></code></span></dt><dd><p>この要素は、&
#12513;ソッドを指定します&
#12290;<code class="literal">name</code> 属性を使用
;して、照合するメソッ
;ド名をメソッド名その
;ものか、または、正規
;表現で指定します。<code c
lass="literal">params</code> 属性には、コ
2531;マ区切りでメソッド
4341;数の型のリストを指
3450;します。<code class="literal">returns</code> ़
6;性にはメソッドの戻Ӛ
6;値の型を指定しますӍ
0;<code class="literal">params</code> および <code class="lite
ral">returns</code> においては、ク
521;ス名は完全修飾名で
354;る必要があります。(
0363;えば、単に "String" ではな&
#12367; "java.lang.String" としてくださ{
56;。) <code class="literal">params</code> <code class="literal">returns</
code> のどちらか一方を指&#
23450;した場合は、もう一&#
26041;の属性の指定も必須&#
12391;す。なぜならば、メ&#
12477;ッドシグニチャーを&#
27083;築のために必要だか&#
12425;です。<code class="literal">name</code> 属性
、<code class="literal">params</code> 属性 およ
2403; <code class="literal">returns</code> 属性また{
99; 3 つの 属性すべて、の&
#12393;れかを条件とするこ&
#12392;できることを意味し&
#12390;います。このように&
#12289;名前とシグニチャー&
#12395;基づく様々な種類の&
#26465;件を規定できます。<
/p></dd><dt><span class="term"><code class="literal"><Field></code></span>
</dt><dd><p>この要素は、フィ
540;ルドを指定します。<cod
e class="literal">name</code> 属性を使用し&#
12390;、照合するフィール&#
12489;名をフィールド名そ&#
12398;ものか、または、正&#
35215;表現で指定します。&#
12414;た、フィールドのシ&#
12464;ニチャーに照らした&#
12501;ィルタリングをする&#
12371;とができます。 <code class="lite
ral">type</code> 属性を使用して、
;フィールドの型を完全
;修飾名で指定してくだ
;さい。名前とシグニチ
;ャーに基づく条件を規
;定するために、その2Ӗ
8;の属性を両方とも指ऩ
0;することができますӍ
0;</p></dd><dt><span class="term"><code class="literal"><Local></code></sp
an></dt><dd><p>この要素は、ロー&
#12459;ル変数を指定します&
#12290;<code class="literal">name</code> 属性を使用
;して、照合するローカ
;ル変数名をローカル変
;数名そのものか、また
;は、正規表現で指定し
;ます。ローカル変数と
;は、メソッド内で定義
;した変数です。</p></dd><dt><span clas
s="term"><code class="literal"><Or></code></span></dt><dd><p>こ{
98;要素は、論理和とし{
90; <code class="literal">Match</code> 条項を結合&
#12375;ます。すなわち、2つ
の <code class="literal">Method</code> 要素を <code clas
s="literal">Or</code> 条項に入れるこ&#
12392;で、どちらか一方の&#
12513;ソッドでマッチさせ&#
12427;ことができます。</p></dd><
/dl></div></div><div class="sect1" title="3. Java 要素名ӣ
0;ッチング"><div class="titlepage"><div><div><h2 class="
title" style="clear: both"><a name="d0e1958"></a>3. Java 要素名
;マッチング</h2></div></div></div><p><code class="
literal">Class</code> 、 <code class="literal">Method</code> ま{
83;は <code class="literal">Field</code> の <code class="literal">na
me</code> 属性が文字 ~ で始ま
2387;ている場合は、属性
0516;の残りの部分を Java のĒ
91;規表現として解釈し|
14;す。そうして、当該 Java
要素の名前に対しての
;照合が行われます。</p><p>
パターンの照合は要素
の名前全体に対して行
われることに注意して
ください。そのため、
部分一致照合を行いた
い場合はパターン文字
列の前後に .* を付加し
390;使用する必要があり
414;す。</p><p>パターンの構ă
91;規則に関しては、 <a class="ul
ink" href="http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/regex/Pattern
.html" target="_top"><code class="literal">java.util.regex.Pattern</code></a> &#
12398;ドキュメントを参照&#
12375;てください。</p></div><div class="sect
1" title="4. 留意事項"><div class="titlepage"><div><div>
<h2 class="title" style="clear: both"><a name="d0e1982"></a>4. 留意&
#20107;項</h2></div></div></div><p> | 10 <code class="literal">Match</code> 要素は子要ŀ
32;を持ちます。それら{
98;子要素は論理積で述Ų
96;になります。つまりz
89;述部が真であるため{
95;は、すべての子要素{
64;真である必要があり|
14;す。</p></div><div class="sect1" title="2. マッӠ
1;ング条件の種類"><div class="titlepag
e"><div><div><h2 class="title" style="clear: both"><a name="d0e1893"></a>2. 
510;ッチング条件の種類</h2
></div></div></div><div class="variablelist"><dl><dt><span class="term"><code cl
ass="literal"><Bug></code></span></dt><dd><p>この要ŀ
32;は、バグパターンをý
51;定して照合します。<code
class="literal">pattern</code> 属性には、コ
ンマ区切りでバグパタ
ーン類型のリストを指
定します。どの警告が
どのバグパターン類型
にあたるかは、 <span class="command"><
strong>-xml</strong></span> オプションを
388;かって出力されたも
398; (<code class="literal">BugInstance</code> 要素の <code cl
ass="literal">type</code> 属性) を見るか
289;または、 <a class="ulink" href="../../bugDescription
s.html" target="_top">バグ解説ドキュ&#
12513;ント</a>を参照してくӖ
4;さい。</p><p>もっと粒度の
;粗い照合を行いたいと
;きは、 <code class="literal">code</code> 属性
434;使用してください。
496;グ略称のコンマ区切
426;のリストで指定でき
414;す。さらに粒度の粗
356;照合を行いたいとき
399;、 <code class="literal">category</code> 属性をË
51;用してください。次{
95;示す、バグカテゴリ}
40;名のコンマ区切りの}
22;ストで指定できます : <c
ode class="literal">CORRECTNESS</code>, <code class="literal">MT_CORRECTNESS</co
de>, <code class="literal">BAD_PRACTICICE</code>, <code class="literal">PERFORMA
NCE</code>, <code class="literal">STYLE</code>.</p><p>同じ <code cla
ss="literal"><Bug></code> 要素に上記の
属性を複数指定した場
合は、バグパターン名
、バグ略称、バグカテ
ゴリーのいずれか1つで
;も該当すれば、バグパ
;ターンは合致すると判
;定されます。</p><p>下位互
換性を持たせたい場合
は、 <code class="literal"><Bug></code> 要素ӗ
8;代わりに <code class="literal"><BugPattern></cod
e> 要素および <code class="literal"><BugCode>
;</code> 要素を使用してくだ
;さい。これらの要素は
;それぞれ、 <code class="literal">name</code> 
646;性で値のリストを指
450;します。これらの要 
032;は、将来サポートさ
428;なくなる可能性があ
426;ます。</p></dd><dt><span class="term"><code class="literal
"><Confidence></code></span></dt><dd><p> |
| 11 この要素は、特定
398;バグ信頼度をもつ警
578;を照合します。 |
| 12 <code class="literal">value</code> 属性には&
#12289;整数値を指定します&
#12290;すなわち 1 は信頼度(ƌ
40;) 、また、 2 は信頼度(中
;) 、 3 は信頼度(低) を示し
;ます。 |
| 13 <Confidence> は 2.0.0 リリース&#
12363;ら <Priority> の後継として
取って代わりました。 |
| 14 </p></dd><dt><span class="term"><code class="literal"><Priority></
code></span></dt><dd><p> |
| 15 <code class="literal"><Confidence></code> と同
968;です。下位互換性を
445;つため残されていま
377;。 |
| 16 </p></dd><dt><span class="term"><code class="literal"><Rank></code
></span></dt><dd><p> |
| 17 この要素は、特定
398;バグランクをもつ警
578;を照合します。 |
| 18 <code class="literal">value</code> 属性には&
#12289; 1 から 20 の整数値を指&#
23450;します。 |
| 19 1 から 4 は最も恐ろし
;いバグ、 5 から 9 は恐ろ&
#12375;いバグ、 10 から 14 は厄&
#20171;なバグ, |
| 20 そして 15 から 20 は不
433;なバグを示します。 |
| 21 </p></dd><dt><span class="term"><code class="literal"><Package></c
ode></span></dt><dd><p>この要素は、 <code cl
ass="literal">name</code> 属性で指定しӖ
3;特定のパッケージ内ӗ
5;あるクラスに関連しӖ
3;警告を照合します。ࠣ
7;れ子のパッケージはࡪ
7;まれません (Java import 文に従
っています) 。しかしӗ
4;がら、正規表現を使ӓ
8;と複数パッケージにӣ
0;ッチさせることは簡ࡕ
6;にできます。</p></dd><dt><span class="term
"><code class="literal"><Class></code></span></dt><dd><p>この&
#35201;素は、特定のクラス&
#12395;関連した警告を照合&
#12375;ます。<code class="literal">name</code> 属性
;を使用して、照合する
;クラス名をクラス名そ
;のものか、または、正
;規表現で指定します。
;</p><p>下位互換性を持たせ
たい場合は、この要素
の代わりに <code class="literal">Match</code> #
201;素を使用してくださ
356;。クラス名そのもの
398;指定は <code class="literal">class</code> 属性
を、クラス名を正規表
現で指定する場合は <code c
lass="literal">classregex</code> 属性をそれぞ
;れ使用してください</p><p>
もし <code class="literal">Match</code> 要素に <co
de class="literal">Class</code> 要素が無かっ
たり、 <code class="literal">class</code> / <code class="liter
al">classregex</code> 属性が無かった&#
12426;した場合は、すべて&#
12398;クラスに適用されま&#
12377;。その場合、想定外&#
12395;多くのバグ検索結果&#
12364;一致してしまうこと&#
12364;あり得ます。その場&#
21512;は、適当なメソッド&#
12420;フィールドで絞り込&#
12435;でください。</p></dd><dt><span class="
term"><code class="literal"><Source></code></span></dt><dd><p> |
| 22 この要素は、特定
398;ソースファイルに関$
899;した警告を照合しま
377;。 |
| 23 <code class="literal">name</code> 属性を使&#
29992;して、照合するソー&#
12473;ファイル名をソース&#
12501;ァイル名そのものか&#
12289;または、正規表現で&#
25351;定します。 |
| 24 </p></dd><dt><span class="term"><code class="literal"><Method></co
de></span></dt><dd><p>この要素は、メ&#
12477;ッドを指定します。<c
ode class="literal">name</code> 属性を使用し
て、照合するメソッド
名をメソッド名そのも
のか、または、正規表
現で指定します。<code class="lit
eral">params</code> 属性には、コン
510;区切りでメソッド引
968;の型のリストを指定
375;ます。<code class="literal">returns</code> 属性
;にはメソッドの戻り値
;の型を指定します。<code c
lass="literal">params</code> および <code class="literal">retu
rns</code> においては、クラ|
73;名は完全修飾名であ|
27;必要があります。(例
360;ば、単に "String" ではなく "
java.lang.String" としてくださいӍ
0;) <code class="literal">params</code> <code class="literal">returns</code> 
2398;どちらか一方を指定
2375;た場合は、もう一方
2398;属性の指定も必須で
2377;。なぜならば、メソ
2483;ドシグニチャーを構
1689;のために必要だから
2391;す。<code class="literal">name</code> 属性、<
code class="literal">params</code> 属性 および <co
de class="literal">returns</code> 属性または 3 
2388;の 属性すべて、のど&#
12428;かを条件とすること&#
12391;きることを意味して&#
12356;ます。このように、&#
21517;前とシグニチャーに&#
22522;づく様々な種類の条&#
20214;を規定できます。</p></dd><
dt><span class="term"><code class="literal"><Field></code></span></dt><dd>
<p>この要素は、フィー}
23;ドを指定します。<code class="
literal">name</code> 属性を使用して
2289;照合するフィールド
1517;をフィールド名その
2418;のか、または、正規
4920;現で指定します。ま
2383;、フィールドのシグ
2491;チャーに照らしたフ
2451;ルタリングをするこ
2392;ができます。 <code class="literal">type
</code> 属性を使用して、フ
ィールドの型を完全修
飾名で指定してくださ
い。名前とシグニチャ
ーに基づく条件を規定
するために、その2つの
;属性を両方とも指定す
;ることができます。</p></d
d><dt><span class="term"><code class="literal"><Local></code></span></dt><
dd><p>この要素は、ローカ&#
12523;変数を指定します。<c
ode class="literal">name</code> 属性を使用し
て、照合するローカル
変数名をローカル変数
名そのものか、または
、正規表現で指定しま
す。ローカル変数とは
、メソッド内で定義し
た変数です。</p></dd><dt><span class="term">
<code class="literal"><Or></code></span></dt><dd><p>このව
1;素は、論理和として <code
class="literal">Match</code> 条項を結合し&#
12414;す。すなわち、2つの
<code class="literal">Method</code> 要素を <code class="litera
l">Or</code> 条項に入れること
2391;、どちらか一方のメ
2477;ッドでマッチさせる
2371;とができます。</p></dd><dt><span
class="term"><code class="literal"><And></code></span></dt><dd><p> |
| 25 この要素は、論理積{
92;して <code class="literal">Match</code> 条項を&
#32080;合します。 |
| 26 すなわち、 <code class="literal">Bug</code> &#
12362;よび <code class="literal">Confidence</code> 要素&
#12434; <code class="literal">And</code> 条項内に指
;定することで |
| 27 特定の信頼度の特定{
98;バグのみ照合するこ{
92;ができます。 |
| 28 </p></dd><dt><span class="term"><code class="literal"><Not></code></spa
n></dt><dd><p> |
| 29 この要素は、内包す|
27;子 <code class="literal">Match</code> を反転し&
#12414;す。 |
| 30 すなわち、 <code class="literal">Bug</code> 
5201;素を <code class="literal">Not</code> 条項内&
#12395;指定することで指定&
#12375;たバグ以外のすべて&
#12398;バグと照合します。 |
| 31 </p></dd></dl></div></div><div class="sect1" title="3. Java 要素&
#21517;マッチング"><div class="titlepage"><div><di
v><h2 class="title" style="clear: both"><a name="d0e2157"></a>3. Java 要&#
32032;名マッチング</h2></div></div></div><p> |
| 32 <code class="literal">Class</code> 、 <code class="literal">Source</code>
、 <code class="literal">Method</code> または <code clas
s="literal">Field</code> の <code class="literal">name</code> 属
615;が文字 ~ で始まってい&
#12427;場合は、 |
| 33 属性値の残りの部分を
Java の正規表現として解&#
37320;します。 |
| 34 そうして、当該 Java 要素&#
12398;名前に対しての照合&#
12364;行われます。 |
| 35 </p><p>パターンの照合は要&
#32032;の名前全体に対して&
#34892;われることに注意し&
#12390;ください。そのため&
#12289;部分一致照合を行い&
#12383;い場合はパターン文&
#23383;列の前後に .* を付加{
75;て使用する必要があ|
26;ます。</p><p>パターンのઔ
3;文規則に関しては、 <a cl
ass="ulink" href="http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/regex/
Pattern.html" target="_top"><code class="literal">java.util.regex.Pattern</code>
</a> のドキュメントを参
9031;してください。</p></div><div clas
s="sect1" title="4. 留意事項"><div class="titlepage"><di
v><div><h2 class="title" style="clear: both"><a name="d0e2185"></a>4. 留&#
24847;事項</h2></div></div></div><p> |
11 <code class="literal">Match</code> 条項は、バ|
64;検索結果に実際に含|
14;れている情報にのみÇ
68;致します。すべての|
96;グ検索結果はクラス|
34;持っています。した{
64;って、一般的に言っ{
90;、バグを除外するた|
17;にはクラスを用いてŜ
92;うとうまくいくこと{
64;多いです。</p><p>バグ検ಃ
4;結果の中には、2個以Ç
78;のクラスを保持して{
56;るものもあります。Ë
63;えば、 DE (dropped exception : 例外の
961;視) バグは、 例外の無&
#35222;が発生したメソッド&
#12434;持っているクラスと&
#12289; 無視された例外の型
を表すクラスの両方を
含んだ形で報告されま
す。<code class="literal">Match</code> 条項と{
99;、 <span class="emphasis"><em>1番目</em></span> (主)
のクラスのみが照合さ
れます。したがって、
例えば、クラス "com.foobar.A" 、
"com.foobar.B" 間での IC (initialization circularity : ࠶
1;期化時の処理循環) バ
464;報告を抑止したい場
512;、以下に示すように 2&#
12388;の <code class="literal">Match</code> 条項を߳
1;用します :</p><pre class="programlisting"> | 36 <code class="literal">Match</code> 条項は、バ|
64;検索結果に実際に含|
14;れている情報にのみÇ
68;致します。すべての|
96;グ検索結果はクラス|
34;持っています。した{
64;って、一般的に言っ{
90;、バグを除外するた|
17;にはクラスを用いてŜ
92;うとうまくいくこと{
64;多いです。</p><p>バグ検ಃ
4;結果の中には、2個以Ç
78;のクラスを保持して{
56;るものもあります。Ë
63;えば、 DE (dropped exception : 例外の
961;視) バグは、 例外の無&
#35222;が発生したメソッド&
#12434;持っているクラスと&
#12289; 無視された例外の型
を表すクラスの両方を
含んだ形で報告されま
す。<code class="literal">Match</code> 条項と{
99;、 <span class="emphasis"><em>1番目</em></span> (主)
のクラスのみが照合さ
れます。したがって、
例えば、クラス "com.foobar.A" 、
"com.foobar.B" 間での IC (initialization circularity : ࠶
1;期化時の処理循環) バ
464;報告を抑止したい場
512;、以下に示すように 2&#
12388;の <code class="literal">Match</code> 条項を߳
1;用します :</p><pre class="programlisting"> |
12 <Match> | 37 <Match> |
13 <Class name="com.foobar.A" /> | 38 <Class name="com.foobar.A" /> |
14 <Bug code="IC" /> | 39 <Bug code="IC" /> |
15 </Match> | 40 </Match> |
16 | 41 |
17 <Match> | 42 <Match> |
18 <Class name="com.foobar.B" /> | 43 <Class name="com.foobar.B" /> |
19 <Bug code="IC" /> | 44 <Bug code="IC" /> |
20 </Match> | 45 </Match> |
21 </pre><p>明示的に両方のクラ
;スで照合することによ
;って、循環しているど
;ちらのクラスがバグ検
;索結果の 1 番目になっ
390;いるかに関係なく一!
268;させることができま
377;。(もちろんこの方法
2399;、処理循環が "com.foobar.A" 、 "c
om.foobar.B" に加えて3番目のク&#
12521;スも含んでいる場合&#
12399;図らずも失敗してし&#
12414;う恐れがあります。)<
/p><p>多くの種類のバグ報&#
21578;は、自身が出現した&#
12513;ソッドを報告します&#
12290;それらのバグ検索結&#
26524;に対しては、 <code class="literal">Met
hod</code> 条項を <code class="literal">Match</code> 要&
#32032;に加えると期待通り&
#12398;動作をするでしょう&
#12290;</p></div><div class="sect1" title="5. 例"><div class="titlepage"><
div><div><h2 class="title" style="clear: both"><a name="d0e2012"></a>5. 例
</h2></div></div></div><p>1. 特定のクラス
2395;対するすべてのバグ
2577;告に一致させます。</p
><pre class="programlisting"> | 46 </pre><p>明示的に両方のクラ
;スで照合することによ
;って、循環しているど
;ちらのクラスがバグ検
;索結果の 1 番目になっ
390;いるかに関係なく一!
268;させることができま
377;。(もちろんこの方法
2399;、処理循環が "com.foobar.A" 、 "c
om.foobar.B" に加えて3番目のク&#
12521;スも含んでいる場合&#
12399;図らずも失敗してし&#
12414;う恐れがあります。)<
/p><p>多くの種類のバグ報&#
21578;は、自身が出現した&#
12513;ソッドを報告します&#
12290;それらのバグ検索結&#
26524;に対しては、 <code class="literal">Met
hod</code> 条項を <code class="literal">Match</code> 要&
#32032;に加えると期待通り&
#12398;動作をするでしょう&
#12290;</p></div><div class="sect1" title="5. 例"><div class="titlepage"><
div><div><h2 class="title" style="clear: both"><a name="d0e2215"></a>5. 例
</h2></div></div></div><p>1. 特定のクラス
2395;対するすべてのバグ
2577;告に一致させます。</p
><pre class="programlisting"> |
22 | 47 |
23 <Match> | 48 <Match> |
24 <Class name="com.foobar.MyClass" /> | 49 <Class name="com.foobar.MyClass" /> |
25 </Match> | 50 </Match> |
26 | 51 |
27 </pre><p> | 52 </pre><p> |
28 | 53 |
29 </p><p>2. バグ略称を指定しӗ
0;、特定のクラスに対ӕ
7;る特定の検査項目にߌ
8;致させます。</p><pre class="programlisting
"> | 54 </p><p>2. バグ略称を指定しӗ
0;、特定のクラスに対ӕ
7;る特定の検査項目にߌ
8;致させます。</p><pre class="programlisting
"> |
30 | 55 |
31 <Match> | 56 <Match> |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 <Method returns="void" name="main" params="java.lang.String[]" /> | 145 <Method returns="void" name="main" params="java.lang.String[]" /> |
121 <Method pattern="DM_EXIT" /> | 146 <Method pattern="DM_EXIT" /> |
122 </Match> | 147 </Match> |
123 <!-- すべてのクラスの com
.foobar.DebugInfo 型のフィールドӗ
5;対する UuF 警告に一致。
--> | 148 <!-- すべてのクラスの com
.foobar.DebugInfo 型のフィールドӗ
5;対する UuF 警告に一致。
--> |
124 <Match> | 149 <Match> |
125 <Field type="com.foobar.DebugInfo" /> | 150 <Field type="com.foobar.DebugInfo" /> |
126 <Bug code="UuF" /> | 151 <Bug code="UuF" /> |
127 </Match> | 152 </Match> |
128 | 153 |
129 </pre><p> | 154 </pre><p> |
| 155 </p><p> |
| 156 11. Not フィルター演算子
434;使用してバグに一致
373;せます。 |
| 157 </p><pre class="programlisting"> |
130 | 158 |
131 </p></div><div class="sect1" title="6. 完全な例"><div cl
ass="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e2065
"></a>6. 完全な例</h2></div></div></div><pre class="prog
ramlisting"> | 159 <!-- テストクラスのバグ
は無視する。ただし、
JUnit テスト特有のバグは&
#20363;外とする。 --> |
| 160 <!-- i.e. filter bug if ( classIsJUnitTest && ! bugIsRelatedToJUnit )
--> |
| 161 <Match> |
| 162 <!-- Match フィルタは論理和
と同等 --> |
| 163 |
| 164 <Class name="~.*\.*Test" /> |
| 165 <!-- テストクラスは末ह
4;に「Test」 --> |
| 166 |
| 167 <Not> |
| 168 <Bug code="IJU" /> <!-- 「IJU」は JUnit テ
;ストコード関連のバグ
;コード --> |
| 169 </Not> |
| 170 </Match> |
| 171 |
| 172 </pre><p> |
| 173 </p><p> |
| 174 12. 完全な除外フィルタ&#
12540;。 Groovy ソースファイル&#
12363;ら生成された全クラ&#
12473;を除外します。 |
| 175 |
| 176 </p><pre class="programlisting"> |
| 177 |
| 178 <?xml version="1.0" encoding="UTF-8"?> |
| 179 <FindBugsFilter> |
| 180 <Match> |
| 181 <Source name="~.*\.groovy" /> |
| 182 </Match> |
| 183 </FindBugsFilter> |
| 184 |
| 185 </pre><p> |
| 186 </p></div><div class="sect1" title="6. 完全な例"><div cl
ass="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e2278
"></a>6. 完全な例</h2></div></div></div><pre class="prog
ramlisting"> |
132 | 187 |
133 <FindBugsFilter> | 188 <FindBugsFilter> |
134 <Match> | 189 <Match> |
135 <Class name="com.foobar.ClassNotToBeAnalyzed" /> | 190 <Class name="com.foobar.ClassNotToBeAnalyzed" /> |
136 </Match> | 191 </Match> |
137 | 192 |
138 <Match> | 193 <Match> |
139 <Class name="com.foobar.ClassWithSomeBugsMatched" /> | 194 <Class name="com.foobar.ClassWithSomeBugsMatched" /> |
140 <Bug code="DE,UrF,SIC" /> | 195 <Bug code="DE,UrF,SIC" /> |
141 </Match> | 196 </Match> |
(...skipping 14 matching lines...) Expand all Loading... |
156 <Bug code="DC" /> | 211 <Bug code="DC" /> |
157 </Match> | 212 </Match> |
158 | 213 |
159 <!-- dead local store (優先度 (中)) に&
306;する誤検出があるメ
477;ッド。--> | 214 <!-- dead local store (優先度 (中)) に&
306;する誤検出があるメ
477;ッド。--> |
160 <Match> | 215 <Match> |
161 <Class name="com.foobar.MyClass" /> | 216 <Class name="com.foobar.MyClass" /> |
162 <Method name="someMethod" /> | 217 <Method name="someMethod" /> |
163 <Bug pattern="DLS_DEAD_LOCAL_STORE" /> | 218 <Bug pattern="DLS_DEAD_LOCAL_STORE" /> |
164 <Priority value="2" /> | 219 <Priority value="2" /> |
165 </Match> | 220 </Match> |
| 221 |
| 222 <!-- テストクラスのバ
2464;すべて。 JUnit 特有のバ
464;は除く。 --> |
| 223 <Match> |
| 224 <Class name="~.*\.*Test" /> |
| 225 <Not> |
| 226 <Bug code="IJU" /> |
| 227 </Not> |
| 228 </Match> |
| 229 |
166 </FindBugsFilter> | 230 </FindBugsFilter> |
167 | 231 |
168 </pre></div></div><div class="navfooter"><hr><table width="100%" summary="Naviga
tion footer"><tr><td width="40%" align="left"><a accesskey="p" href="eclipse.htm
l">戻る</a> </td><td width="20%" align="center"> </td><td
width="40%" align="right"> <a accesskey="n" href="analysisprops.html">Ē
25;へ</a></td></tr><tr><td width="40%" align="left" valign="top">第7
章 <span class="application">FindBugs</span>™ Eclipse プӤ
1;グインの使用方法 </td><td
width="20%" align="center"><a accesskey="h" href="index.html">ホー&
#12512;</a></td><td width="40%" align="right" valign="top"> 第9౉
6; 分析プロパティー</td></tr></t
able></div></body></html> | 232 </pre></div></div><div class="navfooter"><hr><table width="100%" summary="Naviga
tion footer"><tr><td width="40%" align="left"><a accesskey="p" href="eclipse.htm
l">戻る</a> </td><td width="20%" align="center"> </td><td
width="40%" align="right"> <a accesskey="n" href="analysisprops.html">Ē
25;へ</a></td></tr><tr><td width="40%" align="left" valign="top">第7
章 <span class="application">FindBugs</span>™ Eclipse プӤ
1;グインの使用方法 </td><td
width="20%" align="center"><a accesskey="h" href="index.html">ホー&
#12512;</a></td><td width="40%" align="right" valign="top"> 第9౉
6; 分析プロパティー</td></tr></t
able></div></body></html> |
OLD | NEW |