直接在 bitcode 文件上使用 Clang Static Analyzer

Using Clang Static Analyzer directly on bitcode files

我想知道是否可以让 clang 分析器直接在 bitcode (*.bc) 文件上工作? 下面 this post 关于整数变量的识别只能有值 01,我已经开始探索 clang 分析器,它给了我很好的结果。 例如,当我使用以下 C 代码时:

$ scan-build clang -O3 ./main.c

发现除以零确实不行:

int should_expand(char *s)
{
    int tmp = 0;
    int ret = 0;
    char *p;

    for (p = s; p && *p; p++)
    {
        if (*p == '\')     { p++;     }
        else if (*p == '&') { ret = 1; }
    }
    if (!((0 <= ret) && (ret <= 1)))
    {
        int j = 0;
        ret = 5 / j;
    }
    return ret;
}
int main(int argc, char **argv)
{
    if (should_expand(argv[1]))
    {
        return -1;
    }
    return 0;
}

我想我应该插入一个 if (!((0 <= _) && (_ <= 1))) 语句 对于每个整数变量,然后提供生成的位码文件 到 clang 分析器。问题是,我似乎无法找到它是否可以处理 位码文件还是 c 源文件?非常感谢任何帮助,谢谢!

clang 静态分析器适用于 clang AST。它不能使用位码作为输入——它对分析器来说是低级的。