Использование Clang Static Analyzer непосредственно для файлов с битовым кодом - PullRequest
0 голосов
/ 29 ноября 2018

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

1 Ответ

0 голосов
/ 30 ноября 2018

clang статический анализатор работает на clang AST.Он не может использовать битовый код в качестве входных данных - он низкоуровневый для анализатора.

...