我想知道是否可以使clang分析器直接在位码(*.bc
)文件上工作?在this post之后是关于只能识别整数变量的整数变量的识别值0
或1
,我已经开始研究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源文件?任何帮助都非常感谢,谢谢!
答案 0 :(得分:3)
clang静态分析器可用于clang AST。它不能使用位码作为输入-对分析仪来说是低级的。