SpringCloud工作笔记075---SpotBugs介绍--优化java代码的质量
技术交流QQ群【JAVA,.NET,BigData,AI】:170933152
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>
12345678910111213141516171819
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
版权声明:本文为博主原创文章,转载请附上博文链接!
SpringCloud工作笔记075---SpotBugs介绍--优化java代码的质量相关推荐
- SpringCloud工作笔记052---各种数据库在java中的连接配置_以及连接驱动
JAVA技术交流QQ群:170933152 # Properties file with JDBC-related settings. ########## # HSQLDB # ########## ...
- java+set+split_阿里资深工程师教你如何优化 Java 代码!
原标题:阿里资深工程师教你如何优化 Java 代码! 作者 | 王超 责编 | 伍杏玲 明代王阳明先生在<传习录>谈为学之道时说: 私欲日生,如地上尘,一日不扫,便又有一层.着实用功,便见 ...
- asp java 变量_ASP_用stack变量优化Java代码, java程序包含了大量的对象 - phpStudy...
用stack变量优化Java代码 java程序包含了大量的对象,我们需要了解它们是从哪里被访问的,变量存储于何处对程序的性能有显著的影响--尤其是某些需要被频繁访问的变量. 我们写一个Java类,在其 ...
- SpringCloud工作笔记076--- CheckStyle插件提高java代码质量
技术交流QQ群[JAVA,.NET,BigData,AI]:170933152 这个是eclipse中的,在idea中也有这个插件,需要的时候去看看装上吧. 国外的客户一般比较严谨,这些工作,甚至自己 ...
- SpringCloud工作笔记074---Idea2018 1.6发现不支持@Slf4j,@Getter ,@Setter注解
技术交流QQ群[JAVA,.NET,BigData,AI]:170933152 最近发现这个问题了,好麻烦.... 1 Lombok背景介绍 官方介绍如下: Project Lombok makes ...
- JVM优化Java代码时都做了什么?
专栏的前几篇文章了解了JVM的内存模型,GC调优的思路,让我们对于Java底层有了一定的了解,那么采用这种思路去提高JVM的性能,减少JVM额外消耗的同时,JVM究竟做了哪些工作,使我们的Java代码 ...
- java项目怎样提高性能_从代码的角度谈如何优化JAVA代码以提高性能【初、中级程序员必看】...
最近复习Java基础感触颇深,同样是几行代码,别人写的运行效率就很大,自己写的就不是那么随意,这就牵扯到代码的性能优化问题,这个问题在初级阶段往往没有引起太多的重视,导致后来的工作中就没有往优化这个角 ...
- 蓝牙配对模式 java_【Android】蓝牙开发—— 经典蓝牙配对介绍(Java代码实现演示)附Demo源码...
目录 前言 一.连接&配对方法介绍 二.演示:第一次连接蓝牙设备 & 直接与蓝牙设备建立配对 三.总结 四.补充 五.Demo案例源码地址: 前言 前面两篇文章[Android]蓝 ...
- 【Android】蓝牙开发—— 经典蓝牙配对介绍(Java代码实现演示)附Demo源码
目录 前言 一.连接&配对方法介绍 二.演示:第一次连接蓝牙设备 & 直接与蓝牙设备建立配对 三.总结 四.补充 五.Demo案例源码地址: 前言 前面两篇文章[Android]蓝 ...
最新文章
- B站上线!DeepMind加UCL强强联手推出深度学习与强化学习进阶课程(附视频)
- 三代测序(SMRT Sequencing)
- 【BZOJ】4032: [HEOI2015]最短不公共子串(LibreOJ #2123)
- helloworld 1 2結合版 (有意思)
- 利用 RDA5807的RSSI测量RF强度
- Python中下划线---完全解读
- 【Phpstorm】Property accessed via magic method
- 论文笔记之:Deep Attention Recurrent Q-Network
- 嗅觉计算机应用,sensonic计算机嗅觉分析仪
- WritableComparable排序的使用案例
- ListView原理分析之重要方法介绍
- 微PE制作U盘启动盘教程
- Illustrator CC从入门到精通 精装版-李发展-专题视频课程
- nginx配置CSP策略和Nonce随机数方案
- 透明OLED显示器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 战国七雄中最强大的国家(除秦外)——赵国_我是亲民_新浪博客
- CAN总线终端电阻的作用
- 【线段树】2019雅礼集训 sequence
- 再见2007,寄语2008
- Freeswitch一些高级功能-配置中文语音提示等