6. 使用 FindBugs™ Ant 任务
本章介绍如何将 FindBugs 集成到 Ant 构建脚本中,Ant 是一款流行的 Java 构建与部署工具。借助 FindBugs 的 Ant 任务,你的构建脚本可以自动对 Java 代码运行 FindBugs。
该 Ant 任务由 Mike Fagan 慷慨贡献。
1. 安装 Ant 任务
要安装 Ant 任务,只需将 $FINDBUGS_HOME/lib/findbugs-ant.jar 复制到 Ant 安装目录的 lib 子目录中即可。
![]() | 注意 |
|---|---|
| 强烈建议你将 Ant 任务与它所附带的 FindBugs 版本配合使用。我们不保证该 Ant 任务的 Jar 文件能够与它所附带版本之外的任何 FindBugs 版本一起工作。 |
2. 修改 build.xml
要将 FindBugs 纳入 build.xml(Ant 的构建脚本),你首先需要添加一个任务定义。其内容应如下所示:
<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"/>该任务定义指明,当在 build.xml 中遇到 findbugs 元素时,应使用指定的类来执行该任务。
添加任务定义之后,你就可以定义一个使用 findbugs 任务的 target。下面是一个可以添加到 Apache BCEL 库的 build.xml 中的示例。
<property name="findbugs.home" value="/export/home/daveho/work/findbugs" />
<target name="findbugs" depends="jar">
<findbugs home="${findbugs.home}"
output="xml"
outputFile="bcel-fb.xml" >
<auxClasspath path="${basedir}/lib/Regex.jar" />
<sourcePath path="${basedir}/src/java" />
<class location="${basedir}/bin/bcel.jar" />
</findbugs>
</target>findbugs 元素必须设置 home 属性为 FindBugs 的安装目录,即 $FINDBUGS_HOME。参见第 2 章,安装 FindBugs™。
该目标将对 bcel.jar 执行 FindBugs 分析,bcel.jar 是由 BCEL 的构建脚本生成的 Jar 文件。(通过让它依赖于 "jar" 目标,我们确保在对库运行 FindBugs 之前,库已经完全编译完毕。)FindBugs 的输出将以 XML 格式保存到名为 bcel-fb.xml 的文件中。辅助 Jar 文件 Regex.jar 被添加到辅助类路径中,因为主 BCEL 库引用了它。这里还指定了源路径,以便保存的缺陷数据能够准确地引用 BCEL 的源代码。
3. 执行任务
下面是从命令行调用 Ant 并使用上面定义的 findbugs 目标的示例。
[daveho@noir]$ ant findbugs
Buildfile: build.xml
init:
compile:
examples:
jar:
findbugs:
[findbugs] Running FindBugs...
[findbugs] Bugs were found
[findbugs] Output saved to bcel-fb.xml
BUILD SUCCESSFUL
Total time: 35 seconds由于我们将缺陷结果保存在了一个 XML 文件中,因此可以使用 FindBugs™ 图形界面来查看这些结果;参见第 4 章,运行 FindBugs™。
4. 参数
本节介绍使用 FindBugs 任务时可以指定的参数。
class
一个可选的嵌套元素,用于指定要分析哪些类。class 元素必须指定一个 location 属性,用以指明要分析的归档文件(jar、zip 等)、目录或类文件。在单个 findbugs 元素下可以指定多个 class 子元素。
除了指定 class 元素之外(或代替它),FindBugs 任务还可以包含一个或多个 fileset 元素,用来指定要分析的文件。例如,您可以使用 fileset 指定分析某个目录下的所有 jar 文件。
auxClasspath
一个可选的嵌套元素,用于指定一个类路径(Jar 文件或目录),其中包含被分析的库或应用程序所使用、但您不希望对其加以分析的类。其指定方式与 Java 任务中 Ant 的 classpath 元素相同。
sourcePath
一个可选的嵌套元素,用于指定源文件目录路径,其中包含编译所分析 Java 代码时使用的源文件。指定了源路径后,生成的 XML 缺陷输出将包含完整的源信息,从而可以在图形界面中进行后续查看。
home
一个必需属性。必须设置为 FindBugs 安装所在的目录名称。
quietErrors
一个可选的布尔属性。如果为 true,FindBugs 输出中将抑制严重分析错误和缺失类的报告。默认值为 false。
reportLevel
一个可选属性。用于指定报告问题的置信度/优先级阈值。如果设置为 "low",则不使用置信度来过滤缺陷;如果设置为 "medium"(默认值),则会屏蔽低置信度的问题;如果设置为 "high",则只报告高置信度的缺陷。
output
可选属性。用于指定输出格式。如果设置为 "xml"(默认值),输出为 XML 格式;如果设置为 "xml:withMessages",输出为附加了可读消息的 XML 格式。(如果您打算使用 XSL 样式表生成报告,则应使用此格式。)如果设置为 "html",输出为 HTML 格式(默认样式表为 default.xsl);如果设置为 "text",输出为专用文本格式;如果设置为 "emacs",输出为 Emacs 错误消息格式;如果设置为 "xdocs",输出为用于 Apache Maven 的 xdoc XML。
stylesheet
可选属性。用于指定当输出设置为 html 时生成 HTML 输出所使用的样式表。FindBugs 发行版中包含的样式表有 default.xsl、fancy.xsl、fancy-hist.xsl、plain.xsl 和 summary.xsl。如果未提供 stylesheet 属性,默认值为 default.xsl。
sort
sort 可选属性。如果 output 属性设置为 "text",则 sort 属性指定所报告的缺陷是否按类进行排序。默认值为 true。
outputFile
可选属性。如果指定该属性,则用于命名保存 FindBugs 输出的输出文件。默认情况下,输出由 Ant 直接显示。
debug
可选的布尔属性。如果设置为 true,FindBugs 会打印诊断信息,说明正在分析哪些类以及正在运行哪些缺陷模式检测器。默认值为 false。
effort
设置分析强度级别。指定的值应为 min、default 或 max 之一。有关设置分析级别的更多信息,请参见第 3 章,“命令行选项”。
conserveSpace
等同于 effort="min"。
workHard
等同于 effort="max"。
visitors
可选属性。指定一个以逗号分隔的缺陷检测器列表,表示应当运行哪些缺陷检测器。缺陷检测器通过其类名指定,不带任何包名限定。默认情况下,会运行所有未被默认禁用的检测器。
omitVisitors
可选属性。指定一个以逗号分隔的缺陷检测器列表。它与 visitors 属性类似,不同之处在于它指定的是将不会运行的检测器。
chooseVisitors
可选属性。指定一个以逗号分隔的缺陷检测器列表,每个检测器前带有 "+" 或 "-" 前缀,用于有选择地启用或禁用它们。
excludeFilter
可选属性。指定一个过滤器文件名,用于指明哪些缺陷不应当被报告。参见第 8 章,过滤器文件。
includeFilter
可选属性。指定一个过滤器文件名,用于指明应当报告哪些缺陷。参见第 8 章,过滤器文件。
projectFile
可选属性。指定项目文件的名称。项目文件由 FindBugs 图形界面创建,其中指定了类、辅助类路径条目以及源代码目录。通过指定项目,您无需指定任何 class 元素,也无需指定 auxClasspath 或 sourcePath 属性。有关如何创建项目,请参见第 4 章,运行 FindBugs™。
jvmargs
可选属性。指定应当传递给运行 FindBugs 的 Java 虚拟机的参数。如果您正在分析一个非常大的程序,可能需要使用此属性来指定标志,以增加 JVM 可使用的内存量。
systemProperty
可选的嵌套元素。如果指定,用于定义一个系统属性。name 属性指定系统属性的名称,value 属性指定系统属性的值。
timeout
可选属性。指定执行 FindBugs 的 Java 进程在被判定为挂起并终止之前允许运行的时间(毫秒)。默认值为 600,000 毫秒,即十分钟。请注意,对于非常大的程序,FindBugs 可能需要超过十分钟才能完成分析。
failOnError
可选的布尔属性。指定在运行 FindBugs 出现错误时是否中止构建过程。默认值为 "false"。
errorProperty
可选属性,指定一个属性的名称。如果在运行 FindBugs 时发生错误,该属性将被设置为 "true"。
warningsProperty
可选属性,指定一个属性的名称。如果 FindBugs 对被分析的程序报告了任何警告,该属性将被设置为 "true"。
userPreferencesFile
可选属性。设置要使用的用户首选项文件的路径,该文件可能会覆盖上述部分选项。(将 userPreferencesFile 作为第一个参数意味着后续选项将覆盖它;作为最后一个参数意味着它将覆盖之前的一些选项。)该选项的目的是为了在命令行执行时复用 FindBugs 的 Eclipse 项目设置。
nested
可选属性,用于启用或禁用对待分析文件和目录列表中发现的嵌套 jar 和 zip 文件的扫描。默认情况下,嵌套 jar/zip 文件的扫描是启用的。
setExitCode
可选的布尔属性。指定是否将退出码返回给主 ant 任务。默认值为 "true"。
评论
登录后参与评论
KnowForge![\[Note\]](https://findbugs.sourceforge.net/manual/note.png)