1

次のリンクを使用して、Web アプリケーションで findbugs を実行する ant スクリプトを作成しています: 第 6 章 FindBugs™ Ant タスクの使用

auxClasspathパラメーターを jars フォルダーに設定しています。

しかし、コマンド プロンプトからant findbugsを使用してタスクを実行すると、非常に長い時間 (~45 分) がかかり、出力 xml にはソース コードと同様にauxClasspath内の jar の分析が含まれます。

ソースコードだけを解析したい。

これは私のbuild.xmlのコードです:

<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"/>
<property name="findbugs.home" value="C:/Software/FindBugs" />
<target name="findbugs" >
    <echo message="Finding Bugs From ${basedir}/src/java"/>
    <findbugs home="${findbugs.home}"
              output="xml:withMessages"
              outputFile="${basedir}\findbugs.xml"
              stylesheet="fancy-hist.xsl"
              timeout="6000000"
              jvmargs="-Xmx1200m">
        <auxClasspath path="${basedir}/Jars/*.jar" />
        <sourcePath path="${basedir}/src/java"/>
        <class location="${basedir}/build/myApp-1.0.jar" />
    </findbugs>
</target>

ant インストールの lib に findbugs-ant.jar を追加しました。findbugs ディレクトリが存在します。

その他の情報:
IDE: Netbeans 7.3
OS: Microsoft Windows XP
Ant バージョン: 1.8.4
Find Bugs バージョン: 2.0.2

アップデート

この行を省略した場合:

<auxClasspath path="${basedir}/Jars/*.jar" />

目的の出力 (つまり、ソース コードのみの分析) が得られます。しかし、それは警告を発します:

[findbugs] The following classes needed for analysis were missing:
[findbugs]   javax.servlet.http.HttpServlet
[findbugs]   javax.servlet.http.HttpServletRequestWrapper
[list continues]....

バグを見つけて分析すべきではないjarを分析している理由(ドキュメントによると)

4

3 に答える 3

3

ソース コードで使用されている Jar を追跡しようとしました。

findbugs xml 出力で、次の行を見つけました: ${basedir}\Jars\antlr-2.7.2.jar

findbugs 分析レポートは、他のすべての jar (antlr-2.7.2.jar を除く) が見つからないことを示しました。

auxClassPath エントリはもうありませんでした。各クラスパス エントリを別の行に指定することで、これを解決しました。

誰かがより良いアイデアを持っている場合は、親切に貢献してください。

于 2013-05-21T05:47:00.393 に答える
1

次の auxClasspath 設定を使用して、lib フォルダー内のすべての jar と、lib フォルダーの下のディレクトリ内のすべての jar を取得しました。

<auxClasspath>
    <fileset dir="${lib.dir}">
        <include name="*/**"/>
        <include name="*.jar"/>
    </fileset>
</auxClasspath>

これを findbugs タグ内に配置します。

于 2015-03-26T20:46:43.650 に答える
0

この行を削除してみてください

<class location="${basedir}/build/myApp-1.0.jar" />

jar ファイルとソース ファイルの両方を分析しようとすると、非常に時間がかかります。

この行は、ソースの分析中に検出された場合にクラスを見つけるために必要であり、使用されます。

<auxClasspath path="${basedir}/Jars/*.jar" />

おそらく、フォルダー内のすべてではなく、本当に必要なjarのみに制限できます。

于 2013-04-09T10:13:15.830 に答える