Я хотел знать, можно ли заставить анализатор clang работать непосредственно с файлами битового кода (*.bc
)? После этот пост об идентификации целочисленных переменных, которые могут иметь только значения 0
или 1
, я начал изучать анализатор 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? любая помощь очень ценится, спасибо!