В чем разница между ошибками REVERSE_INULL и FORWARD_NULL при сканировании скрытности (статический анализ кода)? - PullRequest
0 голосов
/ 24 декабря 2018

при запуске сканирования покрытия на коде python (статический анализ кода) обнаруживаются ошибки REVERSE_INULL и FORWARD_NULL.Кто-нибудь может сказать, в чем разница между REVERSE_INULL и FORWARD_NULL?почему эти ошибки обнаружены.

1 Ответ

0 голосов
/ 10 января 2019

REVERSE_INULL означает, что у вас есть разыменование, сопровождаемое проверкой нулевого типа.

В псевдокоде

x := null
...
x.deref
...
if x is null
    # handle null-type x

Исправление будет состоять в том, чтобы поставить проверку нулевого типа передразыменование.

FORWARD_NULL - это просто место, где есть путь для разыменования переменной с нулевым значением.Другой пример псевдокода

x := null
...
if x is null
    print warning
    # but x is still null

x.deref

Здесь вы должны убедиться, что нулевое значение всегда обрабатывается.

Таким образом, в конечном итоге я бы сказал, что REVERSE_INULL выполняет ту же проверку нулевого разыменованиякак FORWARD_NULL, но он дополнительно обнаруживает проверку после разыменования.

(стандартный отказ от ответственности - я работаю для Synopsys, но не для подразделения, создающего Coverity).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...