声纳:不应该取消引用空指针

时间:2017-10-05 16:07:14

标签: java sonarqube

其他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
        }
    }

我可以通过将else更改为else if (B != null && B.length == 1)来解决此问题,但这样做会给我带来警告“条件(B != null && B.length == 1)始终为真”。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您的代码没问题。

当B为空时,只有当A的长度为1时,控制才到达主if块内部。但是当A的长度为1时,控制从不到达else块。

PS:我也试过android studio中使用Lint并且没有警告的代码。