当我对 python 代码(静态代码分析)运行覆盖率扫描时,检测到 REVERSE_INULL 和 FORWARD_NULL 错误。谁能说出 REVERSE_INULL 和 FORWARD_NULL 之间有什么区别?为什么检测到这些错误。
2593 次
1 回答
7
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 的部门)。
于 2019-01-10T16:40:43.783 回答