Использование Clang для получения реального определения функции в другом TranslationUnit - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь проанализировать программу на C, используя Clang Static Analyzer. Я собрал файлы AST с помощью драйвера clang. Но как я могу получить реальное определение функции среди разных файлов AST (разные TranslationUnit)?

Например:

functions.h

int func1(int a);
int func2(int a, int b);

functions.c

#include "functions.h"

int func1(int a) {
    return a;
}
int func2(int a, int b) {
    return a + b;
}

main.c

#include "functions.h"

int main() {
    int num1 = func1(2);
    int num2 = func2(3, 4);
    int sum = num1 + num2;
}

Файл ast main.ast содержит два FunctionDecls func1 и func2 (поскольку он был предварительно обработан), но я не могу получить реальное определение (тело функции) этих двух функций, потому что они не являются в main.ast.

Как я могу получить определение этих двух функций (тело функции)?

...