对于以下代码
double total = 0.0;
//do something for total, anyway
return total < 10E-6 ? 0 : (1.0 / total);
Run Code Online (Sandbox Code Playgroud)
然后声纳指示我“在进行此除法之前确保“总计”不能为零。”。但如果total为零,它甚至达不到1.0/total。这是声纳错误还是我的错?
这不是一个错误,而是 SonarQube 用于检查代码(静态代码分析)的方法的固有限制:SonarQube 通常无法评估表达式(想象一下条件是否取决于用户输入),因此它无法知道“else”分支是否存在是否会被执行。
它所看到的只是您初始化total
为0.0
,并且您稍后可能会在它仍然为零时调用尝试除以的代码total
(它知道您没有向其中分配任何其他内容,或者找到了一个保持零的分支)。
归档时间: |
|
查看次数: |
1523 次 |
最近记录: |