当我对python代码进行覆盖率扫描(静态代码分析)时,检测到REVERSE_INULL和FORWARD_NULL错误。谁能说出REVERSE_INULL和FORWARD_NULL有什么区别?为什么检测到这些错误。
答案 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的部门)。