我想为 .cpp 文件中的特定函数生成调用图。我通过使用 AST Matcher 获得函数的 decl。然后,我将 decl 传递给 addToCallGraph 函数;
clang::CallGraph CG;
CG.addToCallGraph(std::move(function_decl));
之后,我尝试打印调用图:
std::string str;
llvm::raw_string_ostream os(str);
CG.print(os);
std::cout<<os.str()<<std::endl;
但是,我发现结果并不完整。例如调用关系是A()->B();B()->C() 结果是:
Function: < root > calls: A B
Function: A calls: B
Function: B calls:
B 和 C 之间的关系尚未显示。
我的问题是,
1) addToCallGraph 是否完成了所有调用图的生成过程?
2)我们如何检查A,B和C之间的所有关系?
提前致谢!