2016-03-30 7 views
1

私はコードとsonarqubeの下のラインを持っているどのようにして、下の行は常にfalseに評価されるソナーの問題を生成できますか?

を「それは常に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

何も '' 'と' 'ヌルです。したがって、条件は真と評価することはできません。 –

答えて

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

あなたが成功しNullPointerExceptionを投げずにparams.isEmptyを実行した場合、その後、paramsは必ずしも非nullです。

私は多分あなたが意味を考える:

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

この条件:彼らは本当の両方になることはありませんので、

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

は、デッドコードにあなたをもたらしています。

これは、のsonarqubeが不平を言っている理由です。

理由:

変更するための論理テスト:

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

文字列#のisEmpty()は、文字列が

クイックフィックスを参照NULLでない場合はブール値を返すメソッドであります

関連する問題