我在sonarqube收到类似Avoid Literals In If Condition
的错误,无法找到合适的解决方案。
SingleWrapper singleWrapper=null;
:
:
singleWrapper=createWrapper();
:
private void wrap(){
if(singleWrapper != null){ //Here i am getting error.
//do Something
}
}
我知道这个问题似乎重复了一个,但事实并非如此,因为之前曾要求String
。
谢谢你的帮助。
答案 0 :(得分:4)
这是因为您的静态代码分析工具将null
检测为硬编码文字,严格地说,这是真的。
建议的行为是声明一个像
这样的常量对象final static Object NULL = null;
并像
一样使用它if(singleWrapper != NULL)
但我还没有遇到开发人员这样做。在这种情况下,我认为你没事,你可以忽略代码检查警告。那是我的2美分。
答案 1 :(得分:0)
PMD规则的描述如下:
避免在条件语句中使用硬编码文字,将它们声明为静态变量或私有成员。
虽然在大多数情况下它是相关的(你不想拥有任意硬编码字符串或数字文字),在这种情况下(IMHO)有点过于热心,因为检查null是如此广泛使用它应该被这条规则忽略。
由于此规则来自PMD(不是SQ内部引擎),您可以要求上游修复 - 或者只是将其从您的配置文件中删除,如果它真的让您感到烦恼。
请注意,此规则是Controversial Rules集的一部分。