小编Hem*_*ant的帖子

clang静态分析仪跳过一些检查

我正在使用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)

c++ frontend clang-static-analyzer llvm-clang

6
推荐指数
1
解决办法
585
查看次数

如何在clang AST中获取无效/未解析类型的实际名称

考虑以下代码

int function()
{
  unknownType variable;
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码片段中,“unknownType”在编译时没有被解析,所以 clang 会将默认类型作为 int 放入 AST 并将声明标记为无效。

现在的问题是在遍历 AST 时,如何获取名称“unknownType”。使用现有API获取类型名称将给出int,其来源范围也是无效的。

有人遇到过这样的问题吗?请帮忙?

谢谢,赫曼特

c++ parsing abstract-syntax-tree llvm-clang libtooling

5
推荐指数
0
解决办法
237
查看次数