我有以下代码块,fortify 警告关于取消引用空指针(警告出现在代码的突出显示部分)。
这是误报吗?它正在检查发生警告的位置是否为空。
更新:添加了更多代码。我们预先检查以确保 displayAttribute 不为空。难道是因为 IsNotNull() 是一种扩展方法?
警告是它displayAttribute
本身可能null
不是Name
。如果是,那么该Name
属性的访问将导致NullReferenceException
. 鉴于在警告下方进行了displayAttribute
明确检查,null
因此警告似乎是有效的
编辑
看起来您正在使用扩展方法来验证该属性不是null
. 以这种方式使用扩展方法似乎相当违反直觉。分析引擎似乎同意我的看法,因为它无法推断这就是您在这里所做的。
所以是的,你可以忽略这里的警告,但为什么要这样做?为什么不做一个正常的displayAttribute != null
检查,这样开发人员和分析引擎都可以更容易地推断出你的代码实际上在做什么呢?