覆盖率扫描(静态代码分析)中 REVERSE_INULL 和 FORWARD_NULL 错误有什么区别?

0 coverity-prevent coverity

当我对 python 代码(静态代码分析)运行覆盖扫描时,检测到 REVERSE_INULL 和 FORWARD_NULL 错误。谁能说出 REVERSE_INULL 和 FORWARD_NULL 之间的区别?为什么会检测到这些错误。

Pau*_*oyd 6

REVERSE_INULL 意味着您有一个取消引用,然后是空类型检查。

在伪代码中

x := null
...
x.deref
...
if x is null
    # handle null-type x
Run Code Online (Sandbox Code Playgroud)

解决方法是在取消引用之前进行空类型检查。

FORWARD_NULL只是有一个空值变量被取消引用的路径。另一个伪代码示例

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

x.deref
Run Code Online (Sandbox Code Playgroud)

在这里,您必须确保始终处理空值。

所以最终我会说它REVERSE_INULL执行相同的空取消引用检查,FORWARD_NULL但它会在取消引用后额外检测一个检查。

(标准免责声明 - 我曾经为 Synopsys 工作,但不是生产 Coverity 的部门)。