2017-10-05 60 views
1

在其他SO帖子中指出錯誤肯定(1 & 2),其中nulls涉及功能和過程。聲納:空指針不應被取消

我覺得我的情況並不複雜。

// A and B are both Double[] 

    if (A.length == 1 || (B != null && B.length == 1)) { 
     Double vol; 
     if (A.length == 1) { 
      vol = A[0]; 
     } else { 
      vol = B[0]; // Sonar Blocker: Null pointers should not be deferenced 
     } 
    } 

我可以通過改變elseelse if (B != null && B.length == 1),但這樣做已經修正了這個如此獎勵我警告「狀態(B != null && B.length == 1)總是真」。

我在這裏錯過了什麼嗎?

+0

您正在使用哪個版本的SonarQube?你有哪個版本的SonarJava插件? –

+0

@Tibor SonarQube版本5.6.6,IntelliJ SonarLint插件3.0.0.2041 – sam

回答

1

您的代碼沒問題。

當B爲空時,只有當A的長度爲1時,控制才進入main if區塊。但是,當A的長度爲1時,控制永遠不會到達else區塊。 PS:我也嘗試了Android工作室中使用Lint的代碼,並沒有收到任何警告。