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.hqwc.cn/news/105994.html

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

相关文章

UNIX网络编程卷一 学习笔记 第三十章 客户/服务器程序设计范式

开发一个Unix服务器程序时&#xff0c;我们本书做过的进程控制&#xff1a; 1.迭代服务器&#xff08;iterative server&#xff09;&#xff0c;它的适用情形极为有限&#xff0c;因为这样的服务器在完成对当前客户的服务前无法处理已等待服务的新客户。 2.并发服务器&#x…

阿里云2核4G服务器5M带宽5年费用价格明细表

阿里云2核4G服务器5M带宽可以选择轻量应用服务器或云服务器ECS&#xff0c;轻量2核4G4M带宽服务器297元一年&#xff0c;2核4G云服务器ECS可以选择计算型c7、c6或通用算力型u1实例等&#xff0c;买5年可以享受3折优惠&#xff0c;阿腾云分享阿里云服务器2核4G5M带宽五年费用表&…

Stable Diffusion WebUI内存不够爆CUDA Out of memory怎么办?

在我们运行SD的时候,我们经常会爆CUDA Out of memory。 我们应该怎么办呢? 这是因为我们的显存或者内存不够了。 如果你是用cpu来跑图的则表示内存不够,这个时候就需要换个大点的内存了。 如果你是用gpu来跑图的就说明你显存不够用咯,这时候咋办呢? 下面我将一一述说…

电容笔值不值得买?开学季比较好用的电容笔

眼看着新学期即将到来&#xff0c;到底应该选择什么样的电容笔&#xff1f;一款原装的苹果Pencil&#xff0c;就卖到了将近一千块&#xff0c;这对于很多人来说&#xff0c;都是一个十分昂贵的价格。事实上&#xff0c;由于平替电容笔的价格非常便宜&#xff0c;只要一二百元就…

时序分解 | MATLAB实现ICEEMDAN+SE改进的自适应经验模态分解+样本熵重构分量

时序分解 | MATLAB实现ICEEMDANSE改进的自适应经验模态分解样本熵重构分量 目录 时序分解 | MATLAB实现ICEEMDANSE改进的自适应经验模态分解样本熵重构分量效果一览基本介绍程序设计参考资料 效果一览 基本介绍 ICEEMDANSE改进的自适应经验模态分解样本熵重构分量 包括频谱图 避…

【Spring Cloud系统】- 轻量级高可用工具Keepalive详解

【Spring Cloud系统】- 轻量级高可用工具Keepalive详解 文章目录 【Spring Cloud系统】- 轻量级高可用工具Keepalive详解一、概述二、Keepalive分类2.1 TCP的keepalive2.2 HTTP的keep-alive2.3 TCP的 KeepAlive 和 HTTP的 Keep-Alive区别 三、nginx的keepalive配置3.1 nginx保持…

Cesium 根据鼠标点击生成点击点的坐标信息

Cesium 根据鼠标点击生成点击点的坐标信息 一、需求二、分析1. 创建鼠标点击事件2. 点击生成坐标但不是经纬度&#xff0c;而是笛卡尔坐标系下的坐标&#xff0c;这个时候需要做一次转换3. 完整代码 三、数据保存 一、需求 在日常开发中 &#xff0c;会遇到根据鼠标点击生成对应…

【PyQT5教程】-02-UI组件

1.按钮 QtWidgets模块提供了多种按钮类&#xff0c;让你可以轻松地创建各种类型的按钮 1.1 QPushButton&#xff08;普通按钮&#xff09; QPushButton是PyQt5中最常见的按钮类型之一&#xff0c;用于触发动作或执行操作。通过信号与槽机制&#xff0c;你可以将按钮的点击事…

计算机操作系统

计算机操作系统 1.进程管理 1.1 基础概念 进程&线程 进程是操作系统资源分配的基本单位。一个进程运行时&#xff0c;会获取必要的CPU、内存地址空间&#xff0c;以及运行时必要的IO设备。 线程则是执行调度的最小单位。一个进程会由一个线程或者多个线程执行调度任务。…

5分钟生成10条短视频,AI重构电商营销

点击关注 文&#xff5c;姚 悦&#xff0c;编&#xff5c;王一粟 “我们将正式告别过去单一渠道投放的时代&#xff0c;走向一站式跨渠道品效联合经营的全新时代。”9月6日&#xff0c;在2023年其最重要的营销峰会上&#xff0c;淘天集团阿里妈妈市场部总经理穆尔说道。 当天…

在自定义数据集上实现OpenAI CLIP

在2021年1月&#xff0c;OpenAI宣布了两个新模型:DALL-E和CLIP&#xff0c;它们都是以某种方式连接文本和图像的多模态模型。CLIP全称是Contrastive Language–Image Pre-training&#xff0c;一种基于对比文本-图像对的预训练方法。为什么要介绍CLIP呢&#xff1f;因为现在大火…

【Word】页眉编辑小技巧

页眉编辑小技巧 1 奇偶页不同2 仅设置正文有页眉3 页眉设置信息为章节内容参考 1 奇偶页不同 2 仅设置正文有页眉 1、定位到目录页之后&#xff0c;点击“布局——分隔符——分节符中的下一页”&#xff0c;在目录页和正文之间插入一个分节符&#xff0c;使得目录页和正文成为…