![](/img/trans.png)
[英]SonarQube Java Analyser, rule S2183, why should I remove this useless shift?
[英]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.