使用SpotBugs/FindBugs进行代码检查
原po:https://blog.csdn.net/zhangb00/article/details/8407070
SpotBugs 介绍
SpotBugs是Findbugs的继任者(Findbugs已经于2016年后不再维护,see https://mailman.cs.umd.edu/pipermail/findbugs-discuss/2016-November/004321.html),用于对代码进行静态分析,查找相关的漏洞。
目前SpotBugs 3.1.3 自带检测器,其中有90余种Bad practice,155余种Correctness,9种Experimental, 2种 Internationalization,17种Malicious code vulnerability,46种Multithreaded correctness,4种 Bogus random noise,37种Performance,11种 Security,87种Dodgy。
Bad practice 不佳实践:常见代码错误,用于静态代码检查时进行缺陷模式匹配(如重写equals但没重写hashCode,或相反情况等)
Correctness 可能导致错误的代码(如空指针引用、无限循环等)
Experimental 实验性
Internationalization 国际化相关问题(如错误的字符串转换等)
Malicious code vulnerability 可能受到的恶意攻击(如访问权限修饰符的定义等)
Multithreaded correctness 多线程的正确性(如多线程编程时常见的同步,线程调度问题等)
BogusMultithreaded correctness 多线程的正确性(如多线程编程时常见的同步,线程调度问题等)
Performance 运行时性能问题(如由变量定义,方法调用导致的代码低效问题等)
Security 安全问题(如HTTP,SQL,DB等)
Dodgy code 导致自身错误的代码(如未确认的强制转换、冗余的空值检查等)
注: SpotBugs 需要当前的JDK环境为 1.8以上,但可以对1.0~1.9的代码来进行检查。
SpotBugs 插件
SpotBugs 还有对应的额外插件,用于扩展对应的规则,探测出更多的代码问题。
fb-contrib
目前最新为7.4.3,增加了大致130+条规则;其中因 FindBugs分叉,SpotBugs需要使用-sb版本。
官网 : https://github.com/mebigfatguy/fb-contrib
find-sec-bugs
目前最新为 1.8.0,针对安全(Security)增加了大致70+条规则
官网: https://github.com/find-sec-bugs/find-sec-bugs
SpotBugs 使用
Maven
maven 插件方式使用 spotbugs及相关插件
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<plugins>
<plugin>
<groupId>com.h3xstream.findsecbugs</groupId>
<artifactId>findsecbugs-plugin</artifactId>
<version>LATEST</version>
</plugin>
<plugin>
<groupId>com.mebigfatguy.fb-contrib</groupId>
<artifactId>fb-contrib</artifactId>
<version>7.4.3.sb</version>
</plugin>
</plugins>
</configuration>
</plugin>
IDE环境
Eclipse
请在对应的marketplace 搜索或install new software来进行spotbugs的安装,正式版本的安装路径 https://spotbugs.github.io/eclipse/
安装插件后,可以在对应的Preferences 进行更多SpotBugs plugin安装,参考如下图:
可以通过以下网址获取最新的插件jar
https://mvnrepository.com/artifact/com.mebigfatguy.fb-contrib/fb-contrib
https://mvnrepository.com/artifact/com.h3xstream.findsecbugs/findsecbugs-plugin
完成安装后,可以对java工程或者对应的类,右键进行 SpotBugs ->Find Bugs
JetBrain IDEA
目前没有SpotBugs插件,原FindBugs插件作者、IDEA还在讨论商标问题,请先使用 原有FindBugs代替。
https://github.com/andrepdo/findbugs-idea/issues/265
https://youtrack.jetbrains.com/issue/IDEA-201846
其他
其他更多内容可以参考SpotBugs 官方文档
https://spotbugs.readthedocs.io/en/latest/installing.html
---------------------
作者:zhangb00
来源:CSDN
原文:https://blog.csdn.net/zhangb00/article/details/84070706
版权声明:本文为博主原创文章,转载请附上博文链接!
使用SpotBugs/FindBugs进行代码检查的更多相关文章
- Android(Java)利用findbugs进行代码静态检查
主要介绍利用java静态代码检查工具findbugs进行代码检查,包括其作用.安装.使用.高级功能(远程review和bug同步). 虽然Android提供了Test Project工程以及instr ...
- jenkins+findbugs+checkstyle+PMD静态代码检查(二)
可以根据自己的需求选中对应的插件进行配置(不一定非要同时配置三个插件) jenkins:持续集成的工具 fundbugs:检测代码静态错误的插件 例如:定义了没有用到的对象,string类型的比较使 ...
- FindBugs:Java 静态代码检查
在使用 Jenkins 构建 Java Web 项目时候,有一项叫做静态代码检查,是用内置的 findBugs 插件,对程序源代码进行检查,以分析程序行为的技术,应用于程序的正确性检查. 安全缺陷检测 ...
- [原创]Java静态代码检查工具介绍
[原创]Java静态代码检查工具介绍 一 什么是静态代码检查? 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法.结构.过程.接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数 ...
- Android 代码检查工具SonarQube
http://blog.csdn.net/rain_butterfly/article/details/42170601 代码检查工具能帮我们检查一些隐藏的bug,代码检查工具中sonar是比较好的一 ...
- Android ------ 美团的Lint代码检查实践
概述 Lint是Google提供的Android静态代码检查工具,可以扫描并发现代码中潜在的问题,提醒开发人员及早修正,提高代码质量.除了Android原生提供的几百个Lint规则,还可以开发自定义L ...
- Jenkins之Sonar 代码检查
一.简介 SonarQube 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等 ...
- 移动开发:美团外卖Android Lint代码检查实践
概述 Lint是Google提供的Android静态代码检查工具,可以扫描并发现代码中潜在的问题,提醒开发人员及早修正,提高代码质量.除了Android原生提供的几百个Lint规则,还可以开发自定义L ...
- Jenkins代码检查
目录 一.静态代码分析 二.规范检查 PMD进行检查 分析器区别 三.持续代码质量检测 Maven与SonarQube集成 Jenkins与SonarQube集成 代码扫描 SonarQube集成p3 ...
随机推荐
- windows MYSQL 安装及修改root密码
官网下载zip包,我下载的是64位的: 下载地址:https://dev.mysql.com/downloads/mysql/ 下载zip的包: 下载后解压:(解压在哪个盘都可以的) 我放在了这里 E ...
- BASE64和图片之间的互相转换
package com.test.demo; import java.io.FileInputStream; import java.io.FileOutputStream; import java. ...
- HTML、CSS知识点,面试开发都会需要--No.5 文章段落
No.5 文章段落 1.文字属性 文字属性包含font-*和text-*两类. 2.基于font的属性 (1)font-family:字体属性,多个字体之前用逗号隔开.如果第一个字体没找到,则依次找后 ...
- STM32手记
20k的ram,64k的Flash 2.3.7: 复位,内部8MHz工作. 外部时钟出错时,自动切换到内部RC时钟,可设置该中断,PLL同样能监测. 高速时钟最大72M,低速时钟,最大36M. 2.3 ...
- Laravel-2
● php发邮件 参考:https://blog.csdn.net/sinat_37390744/article/details/54667794 ● ajax提交表单时防止csrf攻击 1. 在网页 ...
- redis问题与解决思路
问题现象: 集群状态 1主 2从,主没有开启bgsave,从开启bgsave.现象所有redis可以访问,进行操作.主不断开始bgsave 1从停止bgsave. 主日志报错# Connection ...
- 16.0-uC/OS-III同步
同步 uC/OS-III中用于同步的两种机制:信号量和事件标志组 . 1.信号量 信号量最初用于控制共享资源的访问.信号量可用于ISR与任务间.任务与任务间的同步. “ N”表示信号量可以被累计.初始 ...
- DNSmasq介绍
DNSmasq介绍 转载自:http://www.cnblogs.com/demonxian3/p/7472300.html#top 云主机的mac地址由物理机的dnsmasq随机分配,如果要修改ma ...
- python进阶之 网络编程
1.tcp和udp协议的区别 TCP协议 面向连接\可靠\慢\对传递的数据的长短没有要求 两台机器之间要想传递信息必须先建立连接 之后在有了连接的基础上,进行信息的传递 可靠 : 数据不会丢失 不会重 ...
- 二、认识Xcode(第一个工程:Hello world)
到一个未知的世界去冒险,怎么可以不熟悉自己的武器装备呢?况且我们现在也就Xcode这一样装备,攻击防御全靠它,要是关键时刻使不出技能,那不gg了? 所以接下来我们会大致介绍Xcode的常用界面,并在最 ...