最近要做​​Java​​​静态扫描的部分工作,之前是在​​Jenkins​​​上使用​​findbugs​​​插件完成的,但是由于现在​​Jenkins​​​权限收回和​​Java​​代码权限的放开(我也搞不懂这两者的关联性),目前打算在本地完成静态代码扫描工作。

选来选取还是选择在​​Intellij​​中用插件来完成,印象中有一个FindBugs-IDEA的插件,网上搜到的资料好多也是推荐这个插件,但是从​​Intellij​​插件库里面并没有找到,而找到了一个QAPlug - FindBugs的插件,看样子是完成了同样的功能。

但是这两个插件面临同样的问题:没有跟进​​Intellij​​的更新,支持的版本上限比较旧了,这里我查到的FindBugs-IDEA的官方信息最后一次更新是在2016年10月17日,显然,这个不能用了,这也是为什么我在​​Intellij​​​的插件库中搜索关键词​​findbugs​​​和​​BUG​​不显示改插件的原因。

QAPlug - FindBugs这个插件最近一次维护的时间是2018年4月23日,所以他支持的版本上限兼容性更改以支持IntelliJ IDEA 2018.1.1,之后的版本是不支持的,手头使用新版的​​Intellij​​的同学基本要放弃这个了。

  • 以上两个插件官方信息来看并没有近期的升级维护计划。

由此我又找到了SpotBugs,以下是官方的资料截取:

​IntelliJ SpotBugs​​​插件提供静态字节代码分析,以从​​IntelliJ IDEA​​​中查找​​Java​​​代码中的错误。​​SpotBugs​​​是​​Java​​​的缺陷检测工具,它使用静态分析来查找400多种错误模式,例如空指针取消引用,无限递归循环,对​​Java​​​库的错误使用和死锁。​​SpotBugs​​可以识别大型应用程序中的数百个严重缺陷(通常每1000-2000行非注释源语句中大约有1个缺陷)。

使用方法就不再赘述,和其他插件的下载安装方法一致,这里简单截取一个​​BUG​​的截图,大家感受一下。

Intellij静态代码扫描插件SpotBugs_单元测试

学好英文实在太重要了

Intellij静态代码扫描插件SpotBugs_java_02

在源码的左侧栏中会显示不同颜色的小虫子,区分不同等级的​​BUG​​,据我目前自测的情况,大部分都是规范,实际操作起来需要先去解决错误信息,再去解决可疑问题,因为可疑的实在太多了。

本次扫描一共检测了155个​​classes​​文件,找到了143BUG

  • 本文提及的三个插件的​​Intellij​​地址:

plugins.jetbrains.com/plugin/1401…

plugins.jetbrains.com/plugin/4597…

plugins.jetbrains.com/plugin/3847…

  • 整个体验下来,​​spotbugs​​​检测出来的​​BUG​​​是非常准确的,相比​​findbugs​​要优秀很多,已经在团队中推广。

公众号FunTester,原创分享爱好者,腾讯云、开源中国和掘金社区首页推荐,知乎八级强者,欢迎关注、交流,禁止第三方擅自转载