Java NullPointerException可能作为';价值';声纳警报在这里可以为空吗
我有一个这样的代码,当我在声纳下运行它时,它总是在这行Java NullPointerException可能作为';价值';声纳警报在这里可以为空吗,java,sonarqube,Java,Sonarqube,我有一个这样的代码,当我在声纳下运行它时,它总是在这行value.contains(“true”) 下面是它给我的消息:NullPointerException可能会被抛出,因为“value”在这里可以为null 我已经在检查上面的空检查值,为什么它在里面抱怨呢?我做错什么了吗 更新: 在安迪的建议之后。我重写了如下内容: String value = getValue("/data/" + set, property); if (value!=null) { return Boolean.
value.contains(“true”)
下面是它给我的消息:NullPointerException可能会被抛出,因为“value”在这里可以为null
我已经在检查上面的空检查值,为什么它在里面抱怨呢?我做错什么了吗
更新:
在安迪的建议之后。我重写了如下内容:
String value = getValue("/data/" + set, property);
if (value!=null) {
return Boolean.parseBoolean(value);
}
return false;
很可能sonar不理解
字符串的语义。isNullOrEmpty
如果将条件写为:
if (value != null) {
如果在空字符串上调用contains
,实际上并不重要
此外,这:
if (value.contains("true")) {
return true;
} else {
return false;
}
更容易写成
return value.contains("true");
总的来说,您可以这样写:
return value != null && value.contains("true");
编辑更新:如果您使用的是
Boolean.parseBoolean
,您甚至不需要空检查parseBoolean
返回空输入的false
String value = getValue("/data/" + set, property);
return Boolean.parseBoolean(value);
很可能sonar不理解
字符串的语义。isNullOrEmpty
如果将条件写为:
if (value != null) {
如果在空字符串上调用contains
,实际上并不重要
此外,这:
if (value.contains("true")) {
return true;
} else {
return false;
}
更容易写成
return value.contains("true");
总的来说,您可以这样写:
return value != null && value.contains("true");
编辑更新:如果您使用的是
Boolean.parseBoolean
,您甚至不需要空检查parseBoolean
返回空输入的false
String value = getValue("/data/" + set, property);
return Boolean.parseBoolean(value);
你很好。使用您的判断。如果您使用的是
Boolean.parseBoolean
,您甚至不需要空检查parseBoolean
为空输入返回false
。Boolean.parseBoolean将不起作用。它期望值为true(忽略大小写),但在原始代码中,值包含true。若值为true,则不需要进行空检查。您只需执行“true”即可。equalsIgnoreCase(value)我将忽略它,并使用您答案中的@AndyTurner,否则我将相应地更改代码。SonarJava应该完全能够理解isNullOrEmpty
。能否指定方法的完全限定名和库的版本(如果有)?还有Java analyzer的版本,你很好。使用您的判断。如果您使用的是Boolean.parseBoolean
,您甚至不需要空检查parseBoolean
为空输入返回false
。Boolean.parseBoolean将不起作用。它期望值为true(忽略大小写),但在原始代码中,值包含true。若值为true,则不需要进行空检查。您只需执行“true”即可。equalsIgnoreCase(value)我将忽略它,并使用您答案中的@AndyTurner,否则我将相应地更改代码。SonarJava应该完全能够理解isNullOrEmpty
。能否指定方法的完全限定名和库的版本(如果有)?还有SonarJava analyzer.com的版本。谢谢你修正我愚蠢的if-else语句,明白了。谢谢你修正我愚蠢的if-else语句。