为什么我违反SonarQube Java规则“零不应成为分母”

时间:2018-06-22 06:18:38

标签: java sonarqube

获取以下代码

String str = "like row lounge dude top e";

String replaced = str.replaceAll("(?<!\\b)e\\b", "");

System.out.println("Replaced: " + replaced);

然后声纳指示我“在进行该除法之前,请确保“总计”不能为零。”但是,如果合计为零,则甚至不会达到1.0 /合计。这是声纳虫还是我的错?

1 个答案:

答案 0 :(得分:3)

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

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