元经纪 - 元宇宙与人工智能领域相关产品与服务一站式采购平台

400-6166692

SpotBugs:针对Java代码的静态分析工具

分类:开源 时间:2023-06-21 07:15 浏览:1127
概述
SpotBugs是一个静态代码分析工具,可用于检测Java代码中的常见缺陷和错误。它可以检测出可能导致性能问题、安全漏洞、不良代码实践等问题,并提供修复建议。
内容

概述

SpotBugs是一个静态代码分析工具,可用于检测Java代码中的常见缺陷和错误。它可以检测出可能导致性能问题、安全漏洞、不良代码实践等问题,并提供修复建议。 SpotBugs的使用概念主要包括以下几个方面: 1. Bug Patterns:SpotBugs内置了大量的缺陷模式,每个模式都对应一种常见的代码缺陷或错误。用户可以根据需要选择合适的模式进行分析。 2. Bug Instance:当SpotBugs检测到一个缺陷时,会生成一个Bug Instance。Bug Instance包含了缺陷的具体信息,如代码位置、类型、级别等。用户可以浏览Bug Instance列表,查看和处理缺陷。 3. Reports:SpotBugs可以生成多种类型的报告,如XML、HTML、PDF等。报告包含了检测结果的汇总和详细信息,可以帮助用户更好地理解代码质量问题。 4. Filters:用户可以使用过滤器来控制SpotBugs的分析范围。过滤器可以根据包名、类名、方法名等条件来过滤代码,以忽略不需要分析的部分。 5. Annotations:SpotBugs支持使用注解来指定某些代码片段不应被分析,如SuppressWarnings注解可以抑制某些警告信息。 总之,使用SpotBugs需要掌握以上的概念,并了解如何根据实际需要配置和使用SpotBugs。同时,需要注意SpotBugs只是一种工具,不能完全代替人工代码审查和测试。

SpotBugs 是使用Gradle构建的。获得它的推荐方法是简单地运行

[hidecontent type="logged" desc="隐藏内容:登录后可查看"]

gradlew(或gradlew.bat)包装器,它将自动下载并根据需要运行正确的版本(使用 中的设置gradle/wrapper/gradle-wrapper.properties)。

要查看构建选项列表,请运行gradle tasks(或gradlew tasks)。该build任务将执行完整的构建和测试。

要为 Eclipse 构建 SpotBugs 插件,您需要创建文件,其中包含一个指向 Eclipse 安装根目录的eclipsePlugin/local.properties属性(请参见示例),然后运行构建。仅准备 Eclipse 环境,运行. 另请参阅详细步骤eclipseRoot.dir.travis.yml./gradlew eclipse

示例用法Ant

安装 Ant 任务

要安装 Ant 任务,只需复制$SPOTBUGS_HOME/lib/spotbugs-ant.jar到 Ant 安装的 lib 子目录中。

笔记

强烈建议您将 Ant 任务与它随附的 SpotBugs 版本一起使用。我们不保证 Ant 任务 Jar 文件可以与任何版本的 SpotBugs 一起工作,而不是与它一起包含的版本。

修改build.xml

要将 SpotBugs 合并到 build.xml(Ant 的构建脚本)中,您首先需要添加一个任务定义。这应该如下所示:
<taskdef
    resource="edu/umd/cs/findbugs/anttask/tasks.properties"
    classpath="path/to/spotbugs-ant.jar" />
任务定义指定当在 中看到 spotbugs 元素时build.xml,它应该使用指定的类来执行任务。 添加任务定义后,您可以定义一个使用 spotbugs 任务的目标。这是一个可以添加到build.xmlApache BCEL 库的示例。
<property name="spotbugs.home" value="/export/home/daveho/work/spotbugs" />

<target name="spotbugs" depends="jar">
  <spotbugs home="${spotbugs.home}"
            output="xml"
            outputFile="bcel-sb.xml" >
    <auxClasspath path="${basedir}/lib/Regex.jar" />
    <sourcePath path="${basedir}/src/java" />
    <class location="${basedir}/bin/bcel.jar" />
  </spotbugs>
</target>
spotbugs 元素必须将 home 属性设置为安装 SpotBugs 的目录;换句话说,$SPOTBUGS_HOME。请参阅安装。 此目标将在 上执行 SpotBugs bcel.jar,这是由 BCEL 的构建脚本生成的 Jar 文件。(通过使其依赖于“jar”目标,我们确保库在运行 SpotBugs 之前已完全编译。)SpotBugs 的输出将以 XML 格式保存到名为bcel-sb.xml. 辅助 Jar 文件 Regex.jar 添加到辅助类路径,因为它被主 BCEL 库引用。指定了源路径,以便保存的错误数据将具有对 BCEL 源代码的准确引用。

执行任务

下面是使用上面定义的 spotbugs 目标从命令行调用 Ant 的示例。
[daveho@noir]$ ant spotbugs
Buildfile: build.xml

init:

compile:

examples:

jar:

spotbugs:
 [spotbugs] Running SpotBugs...
 [spotbugs] Bugs were found
 [spotbugs] Output saved to bcel-sb.xml

BUILD SUCCESSFUL
Total time: 35 seconds
在这种情况下,因为我们将错误结果保存在一个 XML 文件中,所以我们可以使用 SpotBugs GUI 查看结果;请参阅运行 SpotBugs

参数

本节介绍使用 FindBugs 任务时可能指定的参数。
班级

一个可选的嵌套元素,指定要分析的类。class 元素必须指定一个位置属性,该属性命名要分析的存档文件(jar、zip 等)、目录或类文件。可以将多个类元素指定为单个 spotbugs 元素的子元素。

除了指定类元素之外,或者不指定类元素,SpotBugs 任务还可以包含一个或多个指定要分析的文件的文件集元素。例如,您可以使用文件集来指定应该分析目录中的所有 jar 文件。

辅助类路径
一个可选的嵌套元素,它指定一个类路径(Jar 文件或目录),其中包含被分析的库或应用程序使用但您不想分析的类。它的指定方式与 Ant 的 Java 任务的类路径元素相同。
源路径
一个可选的嵌套元素,它指定包含用于编译正在分析的 Java 代码的源文件的源目录路径。通过指定源路径,任何生成的 XML 错误输出都将具有完整的源信息,以便稍后在 GUI 中查看。
必需的属性。它必须设置为安装 SpotBugs 的目录的名称。
安静的错误
一个可选的布尔属性。如果为真,严重分析错误和缺失类的报告将在 SpotBugs 输出中被抑制。默认为假。
报告级别
可选属性。它指定报告问题的置信度/优先级阈值。如果设置为low,则不使用置信度来过滤错误。如果设置为medium(默认值),低置信度问题将被抑制。如果设置为high,则仅报告高置信度错误。
输出
可选属性。它指定输出格式。如果设置为xml(默认值),则输出为 XML 格式。如果设置为“xml:withMessages”,则输出为 XML 格式并增加了人类可读的消息。(如果您计划使用 XSL 样式表生成报告,则应使用此格式。)如果设置为“html”,则输出为 HTML 格式(默认样式表为 default.xsl)。如果设置为text,则输出为临时文本格式。如果设置为emacs,则输出为 Emacs 错误消息格式。如果设置为xdocs,则输出为用于 Apache Maven 的 xdoc XML。
样式表
可选属性。当输出设置为 html 时,它指定用于生成 html 输出的样式表。FindBugs 发行版中包含的样式表包括 default.xsl、fancy.xsl、fancy-hist.xsl、plain.xsl 和 summary.xsl。如果未提供样式表属性,则默认值为 default.xsl。
种类
可选属性。如果 output 属性设置为text,则 sort 属性指定报告的错误是否按类排序。默认为true
输出文件
可选属性。如果指定,命名将保存 FindBugs 输出的输出文件。默认情况下,输出由 Ant 直接显示。
调试
可选的布尔属性。如果设置为true,SpotBugs 会打印有关正在分析哪些类以及正在运行哪些错误模式检测器的诊断信息。默认为false
努力
设置分析工作级别。指定的值应该是mindefault或之一max。请参阅命令行选项 <running.html#command-line-options>:了解有关设置分析级别的更多信息。
节约空间
的同义词effort="min"
努力工作
的同义词effort="max"
访客
可选属性。它指定应该运行的错误检测器的逗号分隔列表。错误检测器由它们的类名指定,没有任何包限定。默认情况下,所有默认情况下未禁用的检测器都会运行。
省略访问者
可选属性。它指定一个以逗号分隔的错误检测器列表。它类似于 visitors 属性,只是它指定了不会运行的检测器。
选择访客
可选属性。它指定一个以逗号分隔的错误检测器列表,前缀为“+”或“-”以有选择地启用/禁用它们。
排除过滤器
可选属性。它指定过滤器的文件名,该过滤器指定要从报告中排除的错误。请参阅过滤器文件
排除路径
一个可选的嵌套元素。它指定一个包含过滤器的路径,过滤器指定要排除在报告之外的错误。请参阅过滤器文件
包括过滤器
可选属性。它指定过滤器的文件名,过滤器指定报告哪些错误。请参阅过滤器文件
包含路径
一个可选的嵌套元素。它指定一个包含过滤器的路径,过滤器指定报告哪些错误。请参阅过滤器文件
项目文件
可选属性。它指定项目文件的名称。项目文件由 FindBugs GUI 创建,并指定类、辅助类路径条目和源目录。通过命名项目,您不需要指定任何类元素,也不需要指定auxClasspathsourcePath属性。有关如何创建项目的信息,请参阅运行 SpotBugs 。
jvmargs
可选属性。它指定应传递给用于运行 SpotBugs 的 Java 虚拟机的任何参数。如果您正在分析一个非常大的程序,您可能需要使用此属性来指定标志以增加 JVM 可能使用的内存量。
系统属性
可选的嵌套元素。如果指定,则定义系统属性。name 属性指定系统属性的名称,value 属性指定系统属性的值。
暂停
可选属性。它指定执行 SpotBugs 的 Java 进程在假定挂起和终止之前可以运行的时间量(以毫秒为单位)。默认值为 600,000 毫秒,即十分钟。请注意,对于非常大的程序,SpotBugs 可能需要十多分钟才能完成其分析。
失败错误
可选的布尔属性。如果运行 SpotBugs 出错,是否中止构建过程。默认为false.
错误属性
可选属性,它指定true在运行 SpotBugs 时发生错误时将设置为的属性的名称。
warnings属性
true可选属性,它指定属性的名称,如果 SpotBugs 在分析的程序上报告任何警告,将设置该属性。
用户偏好文件
可选属性。设置要使用的用户首选项文件的路径,这可能会覆盖上面的某些选项。指定userPreferencesFile为第一个参数将意味着后面的一些选项将覆盖它们,因为最后一个参数将意味着它们将覆盖之前的一些选项)。此选项背后的基本原理是重用 SpotBugs Eclipse 项目设置来执行命令行。
嵌套
启用或禁用扫描在要分析的文件和目录列表中找到的嵌套 jar 和 zip 文件的可选属性。默认情况下,扫描嵌套的 jar/zip 文件是启用的。
设置退出代码
可选的布尔属性。退出代码是否会返回到主蚂蚁作业。默认为true.

使用 SpotBugs

SpotBugs 可以独立使用,还可以多种集成使用,包括:

[/hidecontent]

 
微信客服
返回顶部