- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
本文将向您介绍 SpotBugs 实用程序项目,它可以帮助您发现代码中可能变成运行时错误的 Java“BUG模式”。
首先,让我们看看 SpotBugs 是如何工作的。此工具使用定义了一组错误模式,将使用检测器在您的代码中进行扫描。反过来,每个 Bug 模式都有不同的 Categories。
默认情况下,SpotBugs 在您的代码中搜索 allBug 模式 并包括 allCategories。但是,您可以选择过滤一组错误模式、项目中的类/方法选择以及特定类别的错误模式。
例如,您可以选择仅扫描特定的错误模式,如下所示,其中异常被捕获而不是抛出
try {
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
另一方面,您可以选择仅扫描属于 PERFORMANCE 类别的错误模式。
您可以使用 Detectors 检测错误模式。检测器列表可在此处获得:https://spotbugs.readthedocs.io/en/latest/detectors.html
为了安装 SpotBugs,您有多种选择:您可以从 GitHub 下载最新版本:https://github.com/spotbugs/spotbugs/
当您从源代码安装项目时,您将能够从命令行调用 SpotBugs。例如:
java -jar $SPOTBUGS_HOME/lib/spotbugs.jar options...
另一方面,您也可以将 SpotBugs 作为 Maven / Gradle / Ant 或 Eclipse 插件运行。
在本文的下一部分中,我们将展示如何在 Maven 项目中使用 SpotBugs。
为了在 Maven 项目中使用此工具,您只需将其 Maven 插件添加到 pom.xml 的报告部分:
<reporting>
<plugins>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>4.7.1.1</version>
</plugin>
</plugins>
</reporting>
报告插件将在 Maven 站点目标中运行。因此,您可以按如下方式运行它:
mvn compile site
然后,验证您的 Maven 日志中是否正在生成 SpotBugs 报告:
[INFO] Generating "SpotBugs" report --- spotbugs-maven-plugin:4.7.1.1:spotbugs
最后,您会在项目的 target/site 文件夹下找到 spotbugs.htmlreport:
[francesco@fedora tamutils]$ tree target/site
target/site
├── css
├── dependencies.html
├── dependency-info.html
├── index.html
├── plugin-management.html
├── plugins.html
├── project-info.html
├── project-reports.html
├── spotbugs.html
└── summary.html
打开 SpotBugs HTML 页面以检查您的项目的报告:
HTML 报告包含按类别分组的报告中包含的类列表。
在我们的基本示例中,SpotBugs 将扫描所有类别中所有可能的错误模式。要将过滤器引入这些选项,您可以使用 XML 过滤器文件。例如,以下插件配置为您的项目引入了包含过滤器和排除过滤器:
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>4.7.1.1</version>
<configuration>
<includeFilterFile>myfilter-include.xml</includeFilterFile>
<excludeFilterFile>myfilter-exclude.xml</excludeFilterFile>
</configuration>
</plugin>
例如,以下 myfilter-include.xml 定义了一个错误模式(“OS_OPEN_STREAM”:方法可能无法关闭流),该模式适用于类 com.foobar.MyClass 在其方法 writedataToFile 中:
<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
<Match>
<Class name="com.foobar.MyClass" />
<Method name="writeDataToFile" />
<Bug pattern="OS_OPEN_STREAM" />
</Match>
</FindBugsFilter>
另一方面,以下 XML 过滤器文件将 PERFORMANCE 类别中的所有错误模式定义为匹配过滤器:
<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
<Match>
<Bug category="PERFORMANCE" />
</Match>
</FindBugsFilter>
最后,我们将提到如何将该工具安装为 Eclipse Plugin。你可以通过两种方式做到这一点:
重新启动 Eclipse 后,您将能够在您的项目中激活 SpotBugs 选项。您需要做的就是右键单击您的项目。然后,选择选项,例如 Find Bugs:
SpotBugs 将执行,问题标记(显示在源窗口中,也显示在 Eclipse 问题视图中)将指向代码中可能存在错误模式实例的位置。
由于 spotbugs 插件,在创建 aws-sdk-v2 jar 时构建失败。 重现错误的步骤:克隆最新版本的 aws-sdk-java-v2在终端中,转到目录并运行 mvn clean insta
我有这样的代码: public static MyObject forId(long myObjectId, Connection cxn) throws SQLException { try
我在 Eclipse IDE 中使用 Spotbugs 插件。我可以在整个项目上运行 Spotbugs,这给我的印象是该工具需要构建项目才能呈现其分析报告。 但是文档说它是一个静态分析工具。 所以,我
我正在尝试像下面这样使用 spotbugs-maven-plugin ... com.github.spotbugs spotbugs-maven-plugin
我有一个多项目 Gradle 设置,如下所示: RootProject | ---- ProjectA | ---- ProjectB | ---- P
我一直在努力添加 SpotBugs到我目前正在处理的android项目。我设法让它工作,但我对它的设置方式并不过分兴奋。目前,配置位于我的 app/build.gradle 文件中,这使得该文件不易管
我使用 SpotBugs Maven Plugin进行静态分析,我想从检查中排除一个目录。查看 spotbugs:check goal documentation , 似乎不可能配置插件是这样的方式。
SpotBugs 是 Findbugs 的继任者,通过静态分析来查找 Java 代码中的 bug。 下面我们主要是介绍 SpotBugs 在 idea 中的安装和使用 安装 Idea
本文将向您介绍 SpotBugs 实用程序项目,它可以帮助您发现代码中可能变成运行时错误的 Java“BUG模式”。 SpotBugs 入门 首先,让我们看看 SpotBugs 是如何工作的。此工具使
我有一个遗留的 maven 项目,想集成 FindBugs 继任者 SpotBugs 来创建所有问题的报告,但如果存在 High 仅限优先问题(目前)。 仅在特定阈值或不失败的情况下创建报告很容易。但
这是我的pom.xml: 4.0.0 de.stackoverflow.test HelloWorld 1.0-SNAPSHOT jar
我是一名构建工程师,我的开发团队在 Jdeveloper IDE 中开发代码。有没有办法直接将spotbugs集成到Jdeveloper中并找到bug? 最佳答案 对于 JDeveloper 12c,
我正在研究在 Java 中动态注入(inject) groovy 脚本。因此,在执行这些脚本之前,我想使用 SpotBugs 确保它们没有潜在的错误。 (静态代码分析器)。这是伪代码: Here it
如何为 Android 设置 SpotBugs? 我尝试关注 official documentation和 gradle plugin 的那个,但针对 Android 的设置不完整且令人困惑,并且无
简而言之:是否有用于 FindBugs/SpotBugs 过滤器文件的官方 DTD 或 XML 模式? 详细信息:在 FindBugs/SpotBugs 中,可以定义过滤文件,它们是 XML 文件。我
我正在尝试将 Maven Spotbugs 插件集成到我项目的 pom.xml 文件中,并使其在运行“mvn site”命令后在“项目报告”部分生成报告。我能够得到其他报告,例如 PMD、CPD 和
我正在努力解决以下问题:我想设置我的 ant 来编译 Java 源代码。一切正常,但我还想使用 Spotbugs/findpugs 分析工具。 所以手册中写道: 老实说,我不知道他们想从我这里得到
我想在我的android项目中使用spotbugs,但它失败并出现异常。运行任务:gradle->module->other->spotbugs 我有一个异常(exception): FAILURE:
对不起,我又挣扎了。所以taskdef工作正常,但我无法实际使用spotbugs。 所以我想检查代码 ant -Dpackage=einstieg 错误 并
我现在正在使用 FindBugs。我听说 FindBugs 现在已经过时了。 SpotBugs 是 FindBugs 的继承者。我想在我的 Jenkins 中安装 SpotBugs 插件。 我在可用插
我是一名优秀的程序员,十分优秀!