gpt4 book ai didi

java - 为什么我违反了 SonarQube java 规则 "Zero should not be a possible denominator"

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:35 25 4
gpt4 key购买 nike

以下代码

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

然后 Sonar 指示我“在进行此除法之前确保“总计”不能为零。”。但是如果total为0,它甚至达不到1.0/total。这是 Sonar 错误还是我的错?

最佳答案

这不是错误,而是 SonarQube 用于检查代码(静态代码分析)的方法的固有局限性:SonarQube 通常无法评估表达式(假设条件取决于用户输入),因此它无法知道“else”分支是否执行。

它所看到的只是将 total 初始化为 0.0,稍后您可能调用尝试除以 的代码total 而它仍然为零(它知道您没有向其中分配任何其他内容,或者找到了一个它仍然为零的分支)。

关于java - 为什么我违反了 SonarQube java 规则 "Zero should not be a possible denominator",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50981780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com