我正在使用clang静态分析仪4.0.0.对于以下示例
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;
}
Run Code Online (Sandbox Code Playgroud)
Clang静态分析仪仅报告两个问题1和3,并跳过问题2.
如果我改变了这样的问题顺序
int fun(){
int *pt = nullptr;
int a = *pt; // 1) null pointer dereference. // Reported by clang …Run Code Online (Sandbox Code Playgroud) 考虑以下代码
int function()
{
unknownType variable;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码片段中,“unknownType”在编译时没有被解析,所以 clang 会将默认类型作为 int 放入 AST 并将声明标记为无效。
现在的问题是在遍历 AST 时,如何获取名称“unknownType”。使用现有API获取类型名称将给出int,其来源范围也是无效的。
有人遇到过这样的问题吗?请帮忙?
谢谢,赫曼特