SpotBugs(是FindBugs的继任者)安装、使用

SpotBugs介绍

SpotBugs和FindBugs的关系

SpotBugs是FindBugs的继任者,从SpotBugs停止的地方继续。
备注:FindBugs项目已经停止了,从2015年发布3.0.1版本以后再没有新的版本。

SpotBugs通过静态分析寻找java代码中的bug,通过发现bug模式来发现疑似问题。
它是一款免费软件,是FindBugs的一个分支。

SpotBugs参考资源

文档资源

https://spotbugs.readthedocs.io/en/latest/index.html
在这里插入图片描述

https://spotbugs.github.io/
在这里插入图片描述

代码库

https://github.com/spotbugs/spotbugs

在这里插入图片描述

SpotBugs对JRE (或 JDK) 版本的要求

SpotBugs是用JDK8版本构建的,所以运行需要JRE (或 JDK) 1.8.0及以后的版本。
SpotBugs可以扫描JDK8及更新的版本编译生成的字节码(即class文件)。

SpotBugs报告的标准bug模式

SpotBugs 可以检查400多种bug模式,分了10个大的类别:
https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html

在这里插入图片描述

SpotBugs检测器(Detectors)

https://spotbugs.readthedocs.io/en/latest/detectors.html#

Standard detectors默认是打开的,而Disabled detectors默认是关闭的。
在这里插入图片描述

安装SpotBugs Eclipse插件、用SpotBugs Eclipse插件运行SpotBugs

安装SpotBugs Eclipse插件

要在Eclipse中安装SpotBugs Plugin,需要 Eclipse Neon (4.6) 及以后版本。
我们用Eclipse Marketplace来安装,下面是安装步骤:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击Restart Now,重新进入Eclipse。

从菜单Window->Preferences进入,在Java下面出现SpotBugs项,说明安装成功了:
在这里插入图片描述

SpotBugs配置

从菜单Window->Preferences进入,在Java下面找到SpotBugs项:
在这里插入图片描述

Reporter Configuraton

选择报告的类别

在Reporter Configuraton页面,可以选择报告的bug类别:
在这里插入图片描述

选择analysis effort

https://spotbugs.readthedocs.io/en/latest/effort.html
effort的值是调节了SpotBugs的内部flag,通过降低预测来降低计算成本。

在这里插入图片描述

Filter files

在Filter files页面可以配置包含filter文件、不包含filter文件。其中filter文件的介绍请参见:
https://spotbugs.readthedocs.io/en/latest/filter.html
在这里插入图片描述

Detector configuration

在Detector configuration页面,可以勾选或者不勾选某个/某些检测器:
在这里插入图片描述

在上面选中某一个检测器,下面会显示该检测器的详细信息:
在这里插入图片描述

检测器的信息跟SpotBugs官网中的detector对应:
在这里插入图片描述

启用项目特有的SpotBugs配置

在项目上右击,在弹出菜单中选择Properties:
在这里插入图片描述

找到SpotBugs:
在这里插入图片描述

如果要启用项目特有的配置,就在Enable project specific settings复选框打钩:
在这里插入图片描述

在java项目上设置自动运行SpotBugs

在项目上右击,在弹出菜单中选择Properties。在属性设置界面选中左侧的SpotBugs。
如果要自动运行,就在Run automatically复选框打钩,这样每次修改了项目中的类,SpotBug就会自动运行:
在这里插入图片描述

在java项目上立即运行SpotBugs

右击java项目,在弹出菜单中选择SpotBugs->Find Bugs,就会立即扫描:
在这里插入图片描述

在下面的Problems页出现扫描结果:
在这里插入图片描述

双击击某个违反项,就会跳到代码处:
在这里插入图片描述

将SpotBugs扫描结果保存为XML文件

右击java项目,在弹出菜单中选择SpotBugs->Save XML:
在这里插入图片描述

选择要导出的路径、输入文件名:
在这里插入图片描述

文件导出成功:
在这里插入图片描述

打开该文件看看内容片段(文件内容远比在Eclipse Problems窗口中显示的信息丰富):
在这里插入图片描述
在这里插入图片描述

安装SpotBugs Maven插件、用SpotBugs Maven插件运行SpotBugs

安装SpotBugs Maven插件

https://spotbugs.readthedocs.io/en/latest/maven.html

在maven工程的pom.xml文件中build小节、reporting小节增加关于SpotBugs Maven插件的配置信息:

  <build><pluginManagement><plugin><groupId>com.github.spotbugs</groupId><artifactId>spotbugs-maven-plugin</artifactId><version>4.7.3.5</version></plugin></plugins></pluginManagement><plugins><plugin><groupId>com.github.spotbugs</groupId><artifactId>spotbugs-maven-plugin</artifactId><configuration><htmlOutput>true</htmlOutput></configuration></plugin></plugins></build><reporting><plugins><plugin><groupId>com.github.spotbugs</groupId><artifactId>spotbugs-maven-plugin</artifactId><configuration><htmlOutput>true</htmlOutput></configuration></plugin></plugins></reporting>

等待一会儿,插件及其依赖的SpotBugs版本下载到maven本地仓库了:
在这里插入图片描述
在这里插入图片描述

goals

spotbugs:spotbugs

https://spotbugs.github.io/spotbugs-maven-plugin/spotbugs-mojo.html

用SpotBugs分析目标工程,其中很多参数可以调节、控制分析。
备注:该goal本身没有将java文件编译为class文件的动作。

示例:
先调用mvn compile进行编译,然后调用mvn spotbugs:spotbugs进行分析:

在这里插入图片描述
在这里插入图片描述

到maven工程的target目录下查看输出内容:
在这里插入图片描述
打开spotbugs.html查看输出结果:
在这里插入图片描述
在这里插入图片描述

spotbugs:check

https://spotbugs.github.io/spotbugs-maven-plugin/check-mojo.html

用SpotBugs分析目标工程,如果发现问题,就停止构建。

示例:
先调用mvn compile进行编译,然后调用mvn spotbugs:check:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

到maven工程的target目录下查看输出内容:
在这里插入图片描述

spotbugs:gui

https://spotbugs.github.io/spotbugs-maven-plugin/gui-mojo.html

调用 SpotBugs GUI(图形用户界面)显示分析结果。
备注:要先用其它的goal生成分析结果,再调用此goal显示分析结果。

示例:
先调用mvn compile进行编译,然后调用mvn spotbugs:spotbugs进行扫描分析、最后调用mvn spotbugs:gui拉起SpotBugs的图形用户界面显示分析结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在图形用户界面选中某一个bug,会显示详细信息:
在这里插入图片描述

spotbugs:help

显示帮助信息。

示例:
执行spotbugs:help:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/127517.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript 运行时比较: Node.js、 Deno 和 Bun

文章目录 为什么选择正确的 JavaScript 运行时很重要介绍 JavaScript 运行时Node.jsDenoBun 比较 JavaScript 运行时性能社区稳定性安全附加功能 小结 JavaScript 运行时可帮助您构建高级的、服务器驱动的 JavaScript 项目&#xff0c;这些项目不依赖于用户的浏览器来运行。 有…

Linux 安装配置使用 FTP 服务

学习场景&#xff1a;使用摄像机做区域报警&#xff0c;预警后将预警图片传输到 FTP 服务上&#xff0c;所以搭一个环境测试一下&#xff0c;这里我使用的是树莓派 4B&#xff0c;官方 32 位系统&#xff0c;其他 Linux 系统应该通用 下面说两个 FTP 应用 一、vsftpd vsftpd 是…

基于python实现贪心算法、蛮力法、动态规划法解决分数背包问题和0-1背包问题(附完整源码下载)

背包问题算法设计 问题要求在一个物品集合中选择合适的物品放入背包&#xff0c;在放入背包中的物品总重量不超过背包容量的前提下&#xff0c;希望放入背包的物品总价值最大。根据是否允许部分物品放入背包的要求&#xff0c;背包问题可以分为【分数背包问题】和【0-1背包问题…

形态图像处理

形态图像处理 预备知识 反射、平移结构元 腐蚀和膨胀 腐蚀 将 B 平移&#xff0c;当其原点位于 z 时&#xff0c;其包含在 A 中&#xff0c;则 z 为一个有效的位置&#xff0c;所有有效的z构成了腐蚀之后的结果腐蚀缩小或细化了二值图像中的物体可以将腐蚀看作形态学滤波操…

Solidity 小白教程:12. 事件

Solidity 小白教程&#xff1a;12. 事件 这一讲&#xff0c;我们用转账 ERC20 代币为例来介绍solidity中的事件&#xff08;event&#xff09;。 事件 Solidity中的事件&#xff08;event&#xff09;是EVM上日志的抽象&#xff0c;它具有两个特点&#xff1a; 响应&#x…

探索云计算和大数据分析的崛起:API行业的机遇与挑战【电商大数据与电商API接入】

I. 引言 随着云计算和大数据分析技术的快速发展&#xff0c;企业和个人对数据分析和处理的需求不断增加。在这个信息爆炸的时代&#xff0c;数据已成为企业决策和战略规划的重要基础。云计算提供了强大的计算和存储能力&#xff0c;使得大规模数据的处理和分析变得更加容易和高…

科技成果鉴定测试报告一般包含哪些测试内容?

软件测评报告 一、科技成果评价是需要做第三方软件测评报告&#xff0c;一般是证明技术指标点是否完善&#xff0c;覆盖主要申报内容&#xff0c;应用软件项目科技成果鉴定测试内容&#xff1a; &#xff08;一&#xff09;是否完成合同或计划任务书要求的指标&#xff1b; …

List常见面试问题

List的特点有哪些&#xff1f; Java中的List是一种存放有序的、可以重复的数据的集合&#xff0c;它允许重复元素的存在。List中的元素都有对应的一个序列号(索引)记录着元素的位置&#xff0c;因此可以通过这个序列号来访问元素。 ‍ Java中集合有哪些&#xff1f; Java中…

Ubuntu tmux 默认安装 快捷键

安装 sudo apt install tmux 启动tmux tmux 注意下方已显示[0] 0:bash 左右分屏 依次输入两组快捷键&#xff1a;Ctrlb, Shift5 即:% 上下分屏 依次输入两组快捷键&#xff1a;Ctrlb, Shift 即:" 切换窗口&#xff08;注意&#xff1a;鼠标点击没有切换效果&#x…

【LeetCode算法系列题解】第61~65题

CONTENTS LeetCode 61. 旋转链表&#xff08;中等&#xff09;LeetCode 62. 不同路径&#xff08;中等&#xff09;LeetCode 63. 不同路径 II&#xff08;中等&#xff09;LeetCode 64. 最小路径和&#xff08;中等&#xff09;LeetCode 65. 有效数字&#xff08;困难&#xff…

Neo-reGeorg隧道搭建

目录 Neo-regeorg前言 环境搭建 具体使用 kail安装Neo-reGeorg kail内生成webshell并设置密码 kail与win10连接 windows server内打开服务 kail虚拟机访问windows server以及所在的内网 Neo-regeorg前言 regeorg为reDuh的升级版&#xff0c;主要功能就是把内网服务器的…

IJ中PHP环境的搭建和使用教程

目录 目录 前言 思维导图 1&#xff0c;PHP环境下载 1.下载链接 2.进行安装 3,自定义路径 4.进行相关的一些库的选择下载 2&#xff0c;进行IJ中PHP环境的配置 2.1,下载PHP插件 2.2,下载过程中的注意事项 3&#xff0c;为什么这么做呢? 3.1,原因 3.2,进行代码…

从0开始的ios自动化测试

最近由于工作内容调整&#xff0c;需要开始弄ios自动化了。网上信息有点杂乱&#xff0c;这边我就按我的实际情况&#xff0c;顺便记录下来&#xff0c;看是否能帮到有需要的人。 环境准备 安装tidevice pip3 install -U “tidevice[openssl]”它的作用是&#xff0c;帮你绕…

企业架构LNMP学习笔记28

企业架构LNMP高可用负载均衡服务器之Nginx&#xff1a; 1&#xff09;能够描述负载均衡的作用&#xff1b;loadbalance LB。 2&#xff09;能够了解负载均衡常见的实现方式&#xff1b; 3&#xff09;能够使用nginx实现负载均衡&#xff1b; 4&#xff09;能够描述nginx的常…

上海控安携汽车网络安全新研产品出席AUTOSEMO“恒以致远,共创共赢”主题研讨会

8月31日&#xff0c;AUTOSEMO“恒以致远&#xff0c;共创共赢”主题研讨会在天津成功召开。本次大会由中国汽车工业协会软件分会中国汽车基础软件生态标委会&#xff08;简称&#xff1a;AUTOSEMO&#xff09;与天津市西青区人民政府联合主办。现场汇聚了100余位来自产学研政企…

如何进行SEO优化数据分析?(掌握正确的数据分析方法,让您的网站更上一层楼!)

在互联网时代&#xff0c;SEO优化已经成为了每一个网站运营者必备的技能。而在SEO优化中&#xff0c;数据分析更是至关重要的一环。在本文中&#xff0c;我们将会详细介绍如何正确的进行SEO优化数据分析&#xff0c;让您的网站更上一层楼&#xff01; 数据分析的重要性 数据分…

网络原理(二)TCP的可靠传输

网络原理&#xff08;一&#xff09;目录 网络原理应用层传输层先说UDP&#xff08;不可靠传输&#xff09;重点说明&#xff34;&#xff23;&#xff30;&#xff08;可靠传输&#xff09;一、确认应答二、超时重传三、链接管理建立连接断开链接 四、滑动窗口五、流量控制&am…

rocky(centos) 安装redis,并设置开机自启动

一、下载并安装 1、官网下载Redis 并安装 Download | RedisRedisYou can download the last Redis source files here. For additional options, see the Redis downloads section below.Stable (7.2)Redis 7.2 …https://redis.io/download/ 2、上传下载好的redis压缩包到 /…

k8s 搭建基于session模式的flink集群

1.flink集群搭建 不废话直接上代码&#xff0c;都是基于官网的&#xff0c;在此记录一下 Kubernetes | Apache Flink flink-configuration-configmap.yaml apiVersion: v1 kind: ConfigMap metadata:name: flink-configlabels:app: flink data:flink-conf.yaml: |jobmanager…

【Vue篇】Vue 项目下载、介绍(详细版)

如何创建一个vue项目&#xff1f;首先要有环境&#xff0c;如下&#xff1a; nodejs vue-cli如果有以上的工具就直接跳过安装教程 【Vue篇】mac上Vue 开发环境搭建、运行Vue项目&#xff08;保姆级&#xff09; 创建vue项目 选择一个位置&#xff0c;你要存放项目的路径&…