Укрепить разыменование нулевого указателя

У меня есть следующий блок кода, в котором fortify предупреждает о разыменовывании нулевого указателя (предупреждение возникает в выделенном разделе кода).

введите здесь описание изображения

Это ложное срабатывание? Он проверяет, является ли оно нулевым прямо там, где появляется предупреждение.

Обновление: добавлено немного кода. Мы проверяем заранее, чтобы убедиться, что displayAttribute не равен нулю. Может быть потому, что IsNotNull() является методом расширения?

введите здесь описание изображения


person Corey Witherow    schedule 09.01.2014    source источник


Ответы (1)


Предупреждение состоит в том, что displayAttribute может быть null, а не Name. Если это так, то доступ к свойству Name вызовет ошибку NullReferenceException. Учитывая, что displayAttribute явно проверяется на null чуть ниже предупреждения, кажется, что предупреждение действительно

ИЗМЕНИТЬ

Похоже, вы используете метод расширения для проверки того, что атрибут не null. Кажется довольно нелогичным использовать метод расширения таким образом. Механизм анализа, похоже, согласен со мной, поскольку не может сделать вывод, что вы здесь делаете именно это.

Так что да, вы можете игнорировать предупреждение здесь, но зачем это делать? Почему бы просто не выполнить обычную displayAttribute != null проверку, чтобы и разработчикам, и механизмам анализа было проще понять, что на самом деле делает ваш код?

person JaredPar    schedule 09.01.2014
comment
Обновил скриншот. Мы проверяем, чтобы displayAttribute не был нулевым. Извините, что не включил это раньше. - person Corey Witherow; 09.01.2014
comment
Я полностью согласен с вами по поводу метода расширения. На самом деле я его не создавал, просто исправлял проблемы с безопасностью. Мне тоже не было смысла так делать. Спасибо за ответ. - person Corey Witherow; 09.01.2014