我使用以下链接创建一个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文件,而不是文件夹中的所有文件。