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

使用SpotBugs 进行代码检查相关推荐

  1. webstrom代码检查

    如上图,webstorm代码出现波浪线代码检查提示的问题如何解决: 1 打开 2 搜索libraies 3 将没有选中的库选中 4 如果没有响应的库点击右边的download下载 5点击ok搞定

  2. java 命名代码检查-注解处理器

    命名代码检查 根据 <Java 语言规范( 第 3 版 ) > 中第6.8节的要求, Java 程序命名应当符合下列格式的书写规范: 类 ( 或接口 ) : 符合驼式命名法, 首字母大写. ...

  3. JavaScript代码检查工具——JSLintMate

    JSLintMate是一款快速.简洁.易于使用JSLint(Douglas Crockford强大的JS代码检查工具)或者JSHint来检查JavaScript代码的扩展工具. JSLintMate是 ...

  4. jenkins+findbugs+checkstyle+PMD静态代码检查(二)

    可以根据自己的需求选中对应的插件进行配置(不一定非要同时配置三个插件) jenkins:持续集成的工具 fundbugs:检测代码静态错误的插件  例如:定义了没有用到的对象,string类型的比较使 ...

  5. Kotlin代码检查在美团的探索与实践

    背景 Kotlin有着诸多的特性,比如空指针安全.方法扩展.支持函数式编程.丰富的语法糖等.这些特性使得Kotlin的代码比Java简洁优雅许多,提高了代码的可读性和可维护性,节省了开发时间,提高了开 ...

  6. CSS代码检查工具stylelint

    前面的话 CSS不能算是严格意义的编程语言,但是在前端体系中却不能小觑. CSS 是以描述为主的样式表,如果描述得混乱.没有规则,对于其他开发者一定是一个定时炸弹,特别是有强迫症的人群.CSS 看似简 ...

  7. ABAP代码检查的注意事项有哪些

    ABAP代码检查关注点:标准检查工具.命名规则与代码规范.代码逻辑及语法.程序性能等 标准工具检查 SCI检查结果没有ERROR,Waring控制在每2000行代码不超过5个 SLIN检查结果没有ER ...

  8. SonarQube4.4+Jenkins进行代码检查实例之三-单元测试分析

    作者:张克强    作者微博:张克强-敏捷307 在 <SonarQube4.4+Jenkins进行代码检查实例之一> 中介绍了不编译只检查的方式. 在<SonarQube4.4+J ...

  9. SonarQube4.4+Jenkins进行代码检查实例之二

    在 <SonarQube4.4+Jenkins进行代码检查实例之一> 中介绍了不编译只检查的方式. 但是有些代码检查需要使用字节码,比如Findbugs的检查依赖于字节码,实例一中只提取源 ...

  10. SonarQube4.4+Jenkins进行代码检查实例之一

    在最新的< 关于代码审查的几点建议>中再次提到了代码分析: 6.尽量使用静态代码分析工具以提高审查效率. 笔者之前也谈到过多次代码分析.代码检查,见: 关于代码评审的微博讨论汇集  #敏捷 ...

最新文章

  1. 基础知识--:before伪元素和:after伪元素
  2. 解决MongoDB 日志文件过大,清理后还占用很大磁盘空间的问题
  3. SAP UI5 初学者教程之四:XML 视图初探试读版
  4. 修改NavigationBar的分根线颜色
  5. 《塔木德智慧全书》(之四)
  6. CocoaPods通过网络代理执行资源更新
  7. 探索 Word 2007 开发(四):上传图片
  8. 8.Java 面试题整理(J2EE,MVC方面)
  9. 重新分区_电脑磁盘分区指南!一分钟就学会
  10. iphoneX的适配问题
  11. linux空格转义,如何在bash循环列表中转义空格?
  12. 【深度语义匹配模型 】原理篇一:表示型
  13. spark配置lzo
  14. 这一刻只想好好做个平凡的人
  15. 安装Python第三方库的基本方法
  16. 历年美赛赛题和特等奖论文集合,文中直接获取!!!
  17. MATLAB三维绘图(三)绘制等值线图
  18. 在Vue中搭建前端监控日志
  19. 智能家居到智慧家庭-由远程操作设备到家庭智慧服务
  20. Python将字符串转换成dataframe

热门文章

  1. 境外诈骗,最新来自senegal的邮件诈骗
  2. 搭建DM两节点mpp集群
  3. mysql utl_file_Oracle中utl_file包的使用
  4. Docker镜像的制作、上传、拉取和部署(利用阿里云)
  5. 世界上最伟大最邪恶的软件发明
  6. 中秋闲来无事,自己写个2048玩玩
  7. 《Python编程:从入门到实践》最高温度, 最低温度可视化
  8. pwn基础之ctfwiki-栈溢出-基本ROP-ret2text
  9. android p适配三星s86,感受三星S8屏幕震撼 先过APP适配这道坎
  10. 自制RS232转485通信模块