2009-04-16 9 views

答えて

22

FindBugsは、実際には、sourcePathではなく、コンパイルされたクラスファイルをスキャンしています。 src/*とtest/*ファイルを異なるディレクトリにコンパイルする場合は、入れ子になった<class...>要素を使用するだけです。

<findbugs home="${findbugs.dir}" output="xml:withMessages" 
    outputFile="${findbugs.report.xml}" jvmargs="-Xmx256M" 
    effort="max" projectName="${ant.project.name}" 
    auxClasspathRef="findbugs.classpath" 
    sourcePath="${src.dir}"> 
    <class location="${src.classes.dir}"/> 
</findbugs> 

src/*とtest/*の両方が1つのディレクトリにコンパイルされていると動作しません。その場合は、filter fileを使用し、テストに対応するパッケージまたはクラス名を除外します。

<findbugs home="${findbugs.dir}" output="xml:withMessages" 
    outputFile="${findbugs.report.xml}" jvmargs="-Xmx256M" 
    effort="max" projectName="${ant.project.name}" 
    auxClasspathRef="findbugs.classpath" 
    sourcePath="${src.dir}" 
    excludefilter="exclude.xml"> 
    <class location="${classes.dir}"/> 
</findbugs> 

exclude.xmlが見える場所:ところで

<FindBugsFilter> 
    <Match> 
    <Class name="~.*Test$"/> 
    </Match> 
    <Match> 
    <Package name="~test\..*"/> 
    </Match> 
</FindBugsFilter> 
+0

良い説明...明らかに私はコーヒーや何かを飲んで始めなければなりません。私の答えを削除しました。間違いは間違いです。 – TofuBeer

-1

、同様にFindBugsのでユニットテストをカバーするために良いアイデアです。より質の低い基準をテストに使用する理由はありません。テストでのバグはまさにバグです。

確かに、あなたはFindBugsのを最初に実行する場合、多くのバグレポートがあるかもしれませんが、あなたがそれらに注意を払っているのであれば、バグの数は残業降りてくるだろう。

+12

これの問題は、単体テストのエラーケースをテストすることです(@ Nonnullとマークされたパラメータとしてnullを渡すなど) –

関連する問題