查看原文
其他

IntelliJ IDEA插件之FindBugs使用教程。

前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。

来源:http://bit.ly/2QbjJjx

首先我下载的版本是 FindBugs-IDEA-1.0.1 ,我在安装过程中的问题如下:


在编辑器里面始终下载不下来,每次都是一半的时候就失败啦。最后就去网上下载zip文件本地安装。


下面就是下载安装使用一条龙服务详情


先是在这个编辑器里面怎么安装这个插件的示范。也许你网络很顺畅呢,就OK拉。




我是等到花儿都谢啦,也没有下载成功。无奈之下,只能走第二种方法咯。


你可以自己去下载最新的,下载链接页面的网址:

https://plugins.jetbrains.com/plugin/3847-findbugs-idea




这个是安装完之后,重启之后的截图,看到他就在下面啦。可以使用啦。



下面是实际在项目里面使用的情况



简单说明如下:


自己鼠标移动到右边的所有图表,看看每个图标都是什么意思。我就大概说一下。


第一竖列的红色图标是分析当前的这个文件。


下面是分析是某一个类,鼠标所在的那个类

再往下是某个包,某个模块,整个项目,所有修改过的文件,等等吧,看意思都知道大概是啥意思。


第二数列呢,则是控制分析结果的展示情况,自己点点试试就好


下面就整个实际找到的代码的问题。我单独分析我的某个service文件,看代码里面的问题。如下图所示:




看他的意思就是说我代码里面把这个声明为静态属性,但是这个SimpleDateFormat是线程不安全的


在多线程使用的时候,可能就会有意想不到的问题。所以,他就找到个问题啦。

然后,咱就改咯。



这么改完,之后,再分析以下 这个service文件。看看什么情况,但是在这之前,可能你有疑惑,怎么把代码里面这些黄色的提示给关掉。



点这个差号就 可以啦,代码就恢复成原来的样子啦。


下面看再次分析的结果。



然后就看到,代码就没有任何提示了,这样的代码只是说,减少bug的发生概率。但是不是绝对的。起码减少部分测试团队的时间。


也不是说让你上来,直接就是对整个项目分析以下。这也不是你能干的,但是,可以这么要求自己,自己写完一个功能模块啥的,也就几个文件,每次提交代码之前,你对自己的代码进行一次分析,把能改的改了,这样,长此以往,进步那是大大的。当然,代码质量也是极好的。


但是,好习惯是最难养成的,一旦养成了,那就获益匪浅。


下面是我摘自其他地方的对上面分析出来不同类别的问题的简单描述。


1->Bad pratice编程的坏习惯 


主要是命名问题,比如类名最好以大写开头,字符串不要使用等号不等号进行比较,可能会有异常最好用try-catch包裹的代码,方法有返回值但被忽略等等,这些如果不想改可以直接忽略.


2->Malicious code vulnerability 恶意代码漏洞 


听起来很吓人呀,主要是一些属性直接使用public让别的类来获取,建议改为private并为其提供get/set方法. 


还有一些public的静态字段,可能会被别的包获取之类的. 


这些也需要根据项目具体情况来,个人意见,在有的不重要类,有时直接公开使用属性,可能更为便捷.如果你认为这些不需要修改,完全可以忽略.


3->Dodgy code 糟糕的代码 


比如一个double/float被强制转换成int/long可能会导致精度损失,一些接近零的浮点数会被直接截断,事实上我们应该保留. 


这里顺便提一点,这两天看了《app研发录》,在规范代码,尽量规避错误这方面我也有了一些收获. 


在类型转换的时候,我们应该为类型转换提供一个安全的转换方法,因为我们永远不会知道,我们的app在用户手里会发生什么,所以我们要尽可能的去减少这种发生错误的可能.


比如使用switch的时候没有提供default。


多余的空检查,就是不可能为空的值,增加了不为空判断,这是没有必要的。属于代码冗余


不安全的类型转换等等。

 

这项太多了,就不一一列举了。


4->performance 性能 


主要是一些无用的代码,比如声明了没有用到的属性等等


5->correctness 代码的正确性 


这一项应该算是最重要的了 。


主要是没有对变量进行不为空判定,在特殊情况可能发生空指针异常。


你平时在使用这款插件吗?欢迎在留言区写下你的体验心得。


热文推荐
使用IntelliJ IDEA进行Java代码调试的技巧
面试官:你工作三年了,还是不懂String!
推荐:mac上svn常用命令及好用的工具。
同时,分享一份Java面试资料给大家,覆盖了算法题目、常见面试题、JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。


获取方式:点“在看”,关注公众号并回复 面试 领取。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存