SonarQube在我的代码中引发了主要的违规
Silly math should not be performed.说明说
Certain math operations are just silly and should not be performed
because their results are predictable.In particular,
anyValue
% 1 is silly because it will always return 0.
在我的情况下,anyValue是一个双倍.这对我来说是as intended.以下是实际代码:
double v = Double.parseDouble(Utils.formatDouble(Double.valueOf(value.getValue()),accuracy.intValue())); boolean negative = v < 0; v = Math.abs(v); long deg = (long) Math.floor(v); v = (v % 1) * 60;
分析仪假设我的变量是一个int(这是他们的错误)?还是我还缺少别的东西?
解决方法
这确实是一个错误,所以非常感谢报告.
问题在这里代码:https://github.com/SonarSource/sonar-java/blob/3.9/java-checks/src/main/java/org/sonar/java/checks/ConstantMathCheck.java#L117
其中绝对没有检查%操作符的左操作数的类型.
我刚刚提交了以下错误来处理:https://jira.sonarsource.com/browse/SONARJAVA-1457