直接在位码文件上使用Clang Static Analyzer

时间:2018-11-29 11:50:01

标签: c llvm bitcode clang-static-analyzer

我想知道是否可以使clang分析器直接在位码(*.bc)文件上工作?this post之后是关于只能识别整数变量的整数变量的识别值01,我已经开始研究c分析器,它给了我很好的结果。 例如,当我将以下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)))语句 对于每个整数变量,然后输入生成的位码文件 到c分析器。问题是,我似乎找不到它是否可以处理 位码文件还是C源文件?任何帮助都非常感谢,谢谢!

1 个答案:

答案 0 :(得分:3)

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