Clang静态分析器除零警告判定疑问:真阳性还是假阳性?
问题解答
这个警告属于真阳性,原因如下:
- 代码中明确存在除以零的操作:变量
c被初始化为0,随后执行了int d = b/c;,这是确定的整数除以零行为。 - 静态分析工具(
clang --analyze)通过代码路径分析,提前发现了这个必然触发的运行时错误,给出的警告完全符合代码实际问题。 - 普通编译(
clang test.c)未给出警告,是因为默认编译模式下没有启用深度静态分析,编译器只做基础语法和简单检查,不会追踪变量的具体值和执行路径。 - 程序运行时触发
Floating point exception(core dumped)错误,正是代码中除以零操作导致的运行时崩溃,验证了静态分析警告的准确性。
简单来说,静态分析工具精准捕捉到了代码中确实存在的、会导致运行崩溃的除以零问题,所以这个警告是真阳性。
内容的提问来源于stack exchange,提问作者ljs0626jh
相关产品推荐
相关产品推荐

