19

私はソナーを使用していますが、コードを平和にするために、この種の違反があります。

 Correctness - Possible null pointer dereference  

findbugs のこのルールについて知っている人はいますか? よく検索しましたが、このルールを説明する適切なサンプル コード (Java のコード) を見つけることができませんでした。残念ながら、findbugs サイトには、このルールに関するサンプル コードや適切な説明がありませんでした。

この違反が表示されるのはなぜですか?

4

5 に答える 5

19

サンプルコードはこのようなものです。

String s = null ;
if (today is monday){
    s = "Monday" ;
else if (today is tuesday){
    s = "Tuesday" ;
}
System.out.println(s.length()); //Will throw a null pointer if today is not monday or tuesday.
于 2013-10-03T20:05:05.947 に答える
18

ここに書いてある

NP: Possible null pointer dereference (NP_NULL_ON_SOME_PATH)

実行された場合に null 値が逆参照されることを保証するステートメントの分岐があり、コードの実行時に NullPointerException が生成されます。もちろん、問題は、分岐またはステートメントが実行不可能であり、ヌル ポインター例外が実行できないことである可能性があります。それを決定することは、FindBugs の能力を超えています。

いくつかのコードを投稿した場合は、回答が簡単になります。

編集多くのドキュメントはありませんが、ここに1つのがあります! お役に立てれば!

于 2012-09-03T05:14:43.780 に答える
3

わかった

これは 2 つの簡単な例です: 最初の例は次のようになります:

1. Error
     ArrayList a = null;
     a.add(j, PointSet.get(j));
     // now i'm trying to add to the ArrayList 
     // because i'm giving it null it gives me the "Possible null pointer dereference"

2. No Error
     ArrayList a = new ArrayList<>();
     a.add(j, PointSet.get(j));
     // adding elements to the ArrayList
     // no problem

単純 ?

于 2014-09-22T22:21:56.647 に答える