繁体   English   中英

为什么我违反了SonarQube java规则“Zero不应该成为可能的分母”

[英]Why I violate SonarQube java rule “Zero should not be a possible denominator”

以下代码

double total = 0.0;
//do something for total, anyway
return total < 10E-6 ? 0 : (1.0 / total);

然后声纳指示我“确定”总数“在进行此划分之前不能为零”。 但如果总数为零,则甚至不会达到1.0 /总数。 这是一个声纳臭虫,还是我的错?

这不是一个bug,而是SonarQube用于检查代码的方法的固有限制(静态代码分析):SonarQube通常不能评估表达式(想象一下条件是否依赖于用户输入),因此无法知道“else”分支将被执行或不执行。

所有它看到的是你将total初始化为0.0 ,并且你以后可能会调用试图除以total代码,而它仍然为零(它知道你没有为其分配任何其他东西,或者找到一个它保持为零的分支) 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM