FindBugs扫描外部jar



我使用以下链接创建一个ant脚本在web应用程序上运行findbugs:第六章。使用FindBugs™Ant任务

我正在设置auxClasspath参数到我的jar文件夹。

但是当我从命令提示符使用和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安装库中添加了findbugs-ant.jar。findbugs目录存在

其他信息:
IDE: Netbeans 7.3
操作系统:Microsoft Windows XP
Ant版本:1.8.4
版本: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]....

知道为什么查找bug是分析它不应该分析的jar(根据文档)

我试图跟踪源代码中使用了哪些jar。

在findbugs xml输出中,我发现了一行:${basedir}Jarsantlr-2.7.2.jar

findbugs分析报告显示所有其他jar(除了antlr-2.7.2.jar)都丢失了。

没有更多的auxClassPath条目。通过在不同的行中指定每个类路径条目来解决这个问题。

如果有人有更好的想法,请贡献。

我使用以下的auxClasspath设置来拉入我的lib文件夹中的所有jar和我的lib文件夹下的所有目录中的jar。

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

放到findbugs标签中

尝试删除这一行

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

现在试着分析jar和源文件,这需要很长时间。

这一行是必需的,如果在分析源代码时遇到一个类,可以使用它来查找。

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

也许可以将其限制为只有真正需要的jar文件,而不是文件夹中的所有文件。

相关内容

  • 没有找到相关文章

最新更新