Я хотел бы знать , можно ли заставить анализатор 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 исходными файлами?любая помощь очень ценится, спасибо!