Spotbugs介绍
SpotBugs是Findbugs的继任者(Findbugs已经不再维护),用于对Java代码进行静态分析,查找相关的漏洞,SpotBugs比Findbugs拥有更多的校验规则。静态分析会检查Java字节码(.class文件)是否存在错误模式(错误模式是一种经常容易出错的代码表达式/习惯用法,其中主要包括:错误使用编程语言的某些特性、误用的API方法、在维护期间修改代码时误解变量、错别字,使用错误的运算符)
SpotBugs要求jdk最低版本是1.8
spotbugs可以独立运行,也可以与下面的工具一起集成使用,在这里我们重点关注与Maven集成
Ant
Maven
Gradle
Eclipse
Sonarqube
IntelliJ IDEA
更多关于Spotbugs的信息可以参考文章:
使用神器Spotbugs,轻松入门静态代码分析-CSDN博客
spotbugs-maven-plugin
SpotBugs-Maven-Plugin是一个用于在Maven项目中集成SpotBugs的工具。使用SpotBugs-Maven-Plugin的步骤通常包括在项目的pom.xml
文件中进行配置,指定SpotBugs的版本和其他相关设置。配置完成后,可以通过Maven命令运行SpotBugs分析,生成报告,从而查看代码中可能存在的问题和建议的修复措施。github的链接如下:
https://github.com/spotbugs/spotbugs-maven-plugin/
不同版本的jdk 与spotbugs-maven-plugin集成时,会遇到不兼容问题,在这里给大家两个经过测试的版本信息
jdk1.8.0_151+maven3.6.3+spotbugs-maven-plugin 4.5.3.0 是可以稳定运行的(经过测试);
jdk11.0.12+maven3.9.6+spotbugs-maven-plugin 4.8.6.0 是可以稳定运行的(经过测试);
pom.xml配置信息
<build>
<plugins>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>4.5.3.0</version>
<configuration>
<includeFilterFile>myfilter-include.xml</includeFilterFile>
</configuration>
</plugin>
</plugins>
</build>
myfilter-include.xml中的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
<Match>
<Bug category="PERFORMANCE" />
</Match>
</FindBugsFilter>
其他常用的 <configuration>配置信息如下:
<failOnError>true</failOnError> <!-- 出现错误时构建失败 -->
<threshold>high</threshold> <!-- 使用预定义的错误等级 -->
<effort>max</effort> <!-- 使用预定义的检查努力等级 -->
<reportLevel>Low</reportLevel> <!-- 自定义报告级别 -->
<includeTests>true</includeTests> <!-- 包括测试代码的检查 -->
<excludeFilterFile>${project.basedir}/spotbugs-exclude.xml</excludeFilterFile> <!-- 排除特定的问题 -->
更多参数使用可以查看文章
https://spotbugs.github.io/spotbugs-maven-plugin/check-mojo.html
生成html报告
使用mvn构建会生成spotbugsXml.xml,解读起来不是很有好,我们可以进行相关配置生成html测试报告,配置信息如下:
<configuration>
<outputDirectory>${project.build.directory}/spotbugs-reports</outputDirectory>
<xmlOutput>true</xmlOutput> <!-- 确保XML输出被启用,因为HTML输出依赖于它 -->
<htmlOutput>true</htmlOutput> <!-- 启用HTML输出 -->
</configuration>
mvn构建运行spotbugs
mvn clean install -U spotbugs:spotbugs
常用参数
-
spotbugs:spotbugs 用于执行 SpotBugs 静态代码分析,并生成一个包含检测到的错误的报告。默认情况下,它不会使构建失败,但会生成一个报告供开发者查看。
-
spotbugs:check 执行静态代码分析,如果有错误将提示build失败,它非常适合集成到持续集成(CI)流程中,以确保代码质量。如下图所示:
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!