1

klocwork を使用してバグ分析を行っているときに、警告が表示されNull pointer dereference of 'nextLineDn' where null is returned from a methodます。

どうやら他の静的分析ツールfindbugも同じ警告を出します。

しかし、明らかに、使用する前に null/empty をチェックしています。

      int noOfLines = device.getLines().size();     
        if( lineNo != 0 && noOfLines > lineNo ) // if next line exists      
        {   
            nextLineDn = device.getDn(lineNo+1);    
            if(!Util.isNullOrEmpty(nextLineDn)) 
            {       
                return (nextLineDn.contains("@")) ? nextLineDn.split("@")[0] : nextLineDn;  
            }       
        }

class Util:

public static boolean isNullOrEmpty(String str) {
    return (str == null || str.isEmpty());
}

誰かが私にこれについて何か考えを与えることができますか? 同じ条件で非常に多くの警告が表示されます。警告を削除するために他に何ができるかわかりません。

4

1 に答える 1

1

Klocwork Insight は静的ソース コード分析ツールであるため、実際に null チェックを実行している Util クラスに isNullOrEmpty() という名前のメソッドがあることをさらに解読できない場合があります。そのため、IDE に警告が表示されています。

静的分析ツールは、潜在的な欠陥を事前に見つけようとします。したがって、ここで Klocwork は : device.getDn()null を返す可能性があります。使用には注意してnextLineDnください。

しかし、 のようなコードを入れると(nextLineDn!=null)、そこに警告が表示されないのではないかと思います。(試してお知らせください)

于 2015-10-01T05:37:56.783 に答える