1

我有以下代码块,fortify 警告关于取消引用空指针(警告出现在代码的突出显示部分)。

在此处输入图像描述

这是误报吗?它正在检查发生警告的位置是否为空。

更新:添加了更多代码。我们预先检查以确保 displayAttribute 不为空。难道是因为 IsNotNull() 是一种扩展方法?

在此处输入图像描述

4

1 回答 1

4

警告是它displayAttribute本身可能null不是Name。如果是,那么该Name属性的访问将导致NullReferenceException. 鉴于在警告下方进行了displayAttribute明确检查,null因此警告似乎是有效的

编辑

看起来您正在使用扩展方法来验证该属性不是null. 以这种方式使用扩展方法似乎相当违反直觉。分析引擎似乎同意我的看法,因为它无法推断这就是您在这里所做的。

所以是的,你可以忽略这里的警告,但为什么要这样做?为什么不做一个正常的displayAttribute != null检查,这样开发人员和分析引擎都可以更容易地推断出你的代码实际上在做什么呢?

于 2014-01-09T14:27:24.383 回答