一款工具助你减少java代码bug

来源:互联网 发布:知之愈明 则行之愈笃 编辑:程序博客网 时间:2024/05/21 11:03
场景:
前几天收到了一封邮件,生成环境出现了“/by zero”错误,这个错误一位同事足足经过两天的排查才找到了原因,能否在上线前就尽量规避一些错误呢?

那个问题产生的原因如下:
if(Math.abs(rowRecord.getBenefitmoney())==(Math.abs(rowRecord.getAmortmoney()==null?0d:rowRecord.getAmortmoney())-Math.abs(rowRecord.getRenewalmoney()==null?0d:rowRecord.getRenewalmoney()))){
            return true;
}
简单来说是:两个double型类型相加减精度问题,比如 1.3+2.3=3.59999999996 而不是3.6

对于此问题我们通过findbugs工具可以在上线前检查出来,看如下结果:


我通过findbugs工具查了一下代码的其他部分,发现默认的级别有350多个bug,大部分还是可信的bug,把检查级别调整到最严格状态竟然测出了3000多个bug.
有些很隐蔽的bug我们平时写的时候没有注意,但通过工具可以帮我们及时发现出来,避免到了上线阶段才困扰我们。
看一些例子吧:
1、double类型的数用了equals与字符串比较。


2、&&前后逻辑有问题


3、可能存在空指针问题的代码


4、仔细看看这几行代码


第2311行是不是忘了为isSuccess赋值,
是不是应该写成这样isSuccess = this.contractperiodDao.deleteAllRows(perbillCertifEntity

附件中是findbugs工具的eclipse插件,感兴趣的同学可以看下哦,希望这款工具能给你的代码提升质量,避免上线后花很多时间排查错误。
findbugs插件2.x能在eclipse3.6x以下使用,但findbugs3.x不能再eclipse3.6x以下使用,如果插件安装不上请检查eclipse版本.
myeclipse7.X 对应的是 eclipse 3.4X
myeclipse8.X 对应的是 eclipse 3.5X
myeclipse9.X 对应的是 eclipse 3.6X 

findbugs下载地址:
http://sourceforge.net/projects/findbugs/files


另外还有两款工具也可以帮助我们检查代码质量:Sonarqube、PMD,有兴趣的可以百度一下。
1 0