为什么在 SonarQube 中将“”+ int 标记为 Java
Why is ""+ int flagged for Java in SonarQube
在 Java 中,我可以通过 "" + intValue 将整数转换为字符串。
Sonarqube 和 sonarlint 将其标记为不当。
为什么这样不合适。据我所知 Integer.toString(intValue) 更冗长并且做同样的事情。
我可以想象如果不是“”就标记它,但是对象 x 在 x + intValue 中使用,其中 x 被初始化为整数。 运行 用 Java 脚本代码变成类似的东西。
关于它为什么不好,Java 自动优化 String
连接以使用 StringBuilder
代替。这意味着通过这样做
"" + d
你真的在做
new StringBuilder().append(d).toString();
如果你这样做
d + ""
你最终编译
new StringBuilder(String.valueOf(d)).toString();
相对于仅调用
,这是相当大的资源浪费
String.valueOf(d);
在 Java 中,我可以通过 "" + intValue 将整数转换为字符串。 Sonarqube 和 sonarlint 将其标记为不当。
为什么这样不合适。据我所知 Integer.toString(intValue) 更冗长并且做同样的事情。
我可以想象如果不是“”就标记它,但是对象 x 在 x + intValue 中使用,其中 x 被初始化为整数。 运行 用 Java 脚本代码变成类似的东西。
关于它为什么不好,Java 自动优化 String
连接以使用 StringBuilder
代替。这意味着通过这样做
"" + d
你真的在做
new StringBuilder().append(d).toString();
如果你这样做
d + ""
你最终编译
new StringBuilder(String.valueOf(d)).toString();
相对于仅调用
,这是相当大的资源浪费String.valueOf(d);