2016-03-30 8 views
1

У меня есть следующие строки кода и sonarqube говорит,Как нижняя строка может генерировать информацию о сонар-qube, которая всегда оценивает значение 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

Если params равно null, вы получите исключение NullPointerException. Сначала вы должны сначала проверить значение null, а затем isEmpty() с помощью или операции (||) – JDDelgado

+0

Ничто не является как '' '' и 'null'. Таким образом, условие никогда не может считаться истинным. –

ответ

4
if (params.isEmpty() && params == null) 

Если вы успешно выполнили params.isEmpty без метания NullPointerException, то params обязательно ненулевым.

Я думаю, что, возможно, вы имели в виду:

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

Это условие:

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

приносит вам мертвого кода, так как они никогда не могут быть оба истинны.

это причина, почему sonarqube жалуется.

Почему:

Строка # IsEmpty() метод, который возвращает логическое значение, если строка не является нулевой, на который ссылается

QuickFix:

Изменить логический тест для:

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