2017-12-06 9 views
0

SonarQubeを使用して静的コード解析を行っています。 私たちは、だから我々はまだSonarQubeを示すヌルチェックSonarQubeがヌルチェック用のJavaインライン式を理解できない

try { 
//business logic 

}(Exception e){ 
    throw new MyException("Found issue for event " + evt != null ? 
     evt.getDeatil() : null); 
} 

のための小さなインラインコードを導入しているこのバグを削除するには、次のコードでSonarQube

NullPointerException might be thrown as 'evt' is nullable here 

によって

try { 
//business logic 

}(Exception e){ 
    throw new MyException("Found issue for event " + evt.getDeatil()); 
} 

を見つけ、次のバグに直面していますコード変更後の違反バグ

誰でも私たちがここに欠けているものを見つけるのを助けてくれますか?

+0

あなたSonarQubeサーバーにインストールSonarJavaのバージョンは何ですか? – benzonico

+0

SonarJavaのバージョンは3.Xです –

答えて

2

あなたは行にエラーがあります:

throw new MyException("Found issue for event " + evt != null ? evt.getDeatil() : null); 

問題がoperators precedenceです。 +は、ので、あなたのコードがに等しい?:前に評価されています

String message = "Found issue for event " + evt; 
throw new MyException(message != null ? evt.getDeatil() : null); 

NullPointerExceptionがまだ発生する可能性があります。追加の新しい問題を導入しました - の式:

message != null 

は常にtrueに評価されます。あなたは中括弧を追加する必要があり、それを修正するために

throw new MyException("Found issue for event " + (evt != null ? evt.getDeatil() : null)); 
関連する問題