我有以下代码行,sonarqube说,
“更改此条件,使其不会始终评估为false”
。
以下是该行。
if (params.isEmpty() && params == null) {
throw new ServiceSDKException("Parameters cannot be empty or null!");
}
以下是您需要的整个方法。
public void init(String params) throws ServiceSDKException {
if (params.isEmpty() && params == null) {
throw new ServiceSDKException("Parameters cannot be empty or null!");
}
String[] configParams = params.split(",");
options.setMqttURL(configParams[0]);
options.setMqttClientID(configParams[1]);
try {
options.setWillMessage("v1/items/mqtt/0/event/will"
, "Last will"
, 2, true);
new File("./db").mkdir();
edgeNode = EdgeNodeFactory.createMQTTChannel("./db", options,
subscriptionTask, 500, 500);
isClientConnected = true;
} catch (EdgeNodeException e) {
isClientConnected = false;
throw new ServiceSDKException("EdgeNodeException occurred", e);
}
}
答案 0 :(得分:4)
if (params.isEmpty() && params == null)
如果您在没有抛出params.isEmpty
的情况下成功执行NullPointerException
,那么params
必定为非空。
我想也许你的意思是:
if (params == null || params.isEmpty())
答案 1 :(得分:0)
这个条件:
if (params.isEmpty() && params == null) {
带给你一个死密码,因为它们永远不会是真的。
这就是 sonarqube 抱怨的原因。
String#isEmpty()是一个方法,如果String未引用null,则返回布尔值
更改逻辑测试:
if (params.isEmpty() || params == null) {