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

时间:2018-12-24 12:06:19

标签: coverity coverity-prevent

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

1 个答案:

答案 0 :(得分: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的部门)。