В чем разница между ошибками REVERSE_INULL и FORWARD_NULL при сканировании скрытности (статический анализ кода)?

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

1 ответ

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).

Другие вопросы по тегам