我在My Project上运行Coverity静态分析器工具,它有一些flex / bison生成的cpp文件。 Coverity报告其中一个flex文件时发出警告。
CID 340350 (#1 of 1): Dereference before null check (REVERSE_INULL)
check_after_deref: Null-checking **yyg->yy_buffer_stack**
表明它可能为空,但已在所有导致检查的路径上取消引用。
Flexity生成的文件的代码段,其中Coverity报告了问题:
if (YY_CURRENT_BUFFER) {
DNParser_load_buffer_state(yyscanner );
yyg->yy_did_buffer_switch_on_eof = 1;
}
}
答案 0 :(得分:1)
有两种可能性 - 要么它可以是NULL,在这种情况下会有一个错误,因为指针在进行检查之前已经被解除引用,或者检查是过于防御性的编码而没有任何意义。
由于它是生成的代码,我倾向于忽略缺陷,除非你认为它实际上可以是NULL。