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

场景:
前几天收到了一封邮件,生成环境出现了“/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 


另外还有两款工具也可以帮助我们检查代码质量: Sonarqube PMD ,有兴趣的可以百度一下。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值