下面的行怎么能生成总是评估为假的声纳qube问题?

时间:2016-03-30 11:46:02

标签: java null sonarqube conditional sonarqube-5.0

我有以下代码行,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);
        }

    }

2 个答案:

答案 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,则返回布尔值

的QuickFix:

更改逻辑测试:

 if (params.isEmpty() || params == null) {