我正在使用Clang静态分析器4.0.0。
对于以下示例:
然后,clang静态分析器报告1和3并跳过2。
我正在使用以下命令运行clang静态分析器:
clang-check.exe -analyze D:\testsrc\anothercpp.cpp 这是非常不一致的行为。不管问题的顺序如何,其中一个问题会被跳过。 此外,我只使用clang 5.0.1检查了这种情况得到了相同的结果。
有人知道为什么静态分析器会出现这种情况吗?
提前谢谢。
-Hemant
int fun(){
int aa = 1,bb = 0;
int cc = aa/bb; // 1) devide by zero. // Reported by clang
int *pt = nullptr;
int a = *pt; // 2) null pointer dereference. // NOT Reported by clang
int b;
int c = a + b; // 3) Unused initialization. // Reported by clang
return cc;
}
Clang静态分析器仅报告了问题1和3,并跳过了问题2。
但如果我改变问题的顺序,就像这样
int fun(){
int *pt = nullptr;
int a = *pt; // 1) null pointer dereference. // Reported by clang
int aa = 1,bb = 0;
int cc = aa/bb; // 2) devide by zero. // NOT Reported by clang
int b;
int c = a + b; // 3) Unused initialization. // Reported by clang
return cc;
}
然后,clang静态分析器报告1和3并跳过2。
我正在使用以下命令运行clang静态分析器:
clang-check.exe -analyze D:\testsrc\anothercpp.cpp 这是非常不一致的行为。不管问题的顺序如何,其中一个问题会被跳过。 此外,我只使用clang 5.0.1检查了这种情况得到了相同的结果。
有人知道为什么静态分析器会出现这种情况吗?
提前谢谢。
-Hemant