addToCallGraph可以为我做一切生成调用图吗?

时间:2017-04-25 22:26:25

标签: clang libtooling

我想为.cpp文件中的特定函数生成调用图。 我通过使用AST Matcher获得函数的decl。然后,我将decl传递给addToCallGraph函数;

// Ajax...
dataType: "json",
success: function(result) {
  if (result.length > 0) {
    var productTableHTML = '<table>';
    $.each(response, function (key,value) {
      productTableHTML += 
        '<tr><td>' + key + '</td><td>' + value + '</td></tr>';     
    });
    productTableHTML += '</table>';
    $("#products_table").html( productTableHTML );
  }
}

之后,我尝试打印调用图:

clang::CallGraph CG;    
CG.addToCallGraph(std::move(function_decl));

然而,我发现结果并不完整。 例如,呼叫关系是A() - &gt; B(); B() - &GT; C() 结果是:

  std::string str;
  llvm::raw_string_ostream os(str);
  CG.print(os);
  std::cout<<os.str()<<std::endl;

B和C之间的关系尚未显示。

我的问题是,

1)addToCallGraph是否完成了所有调用图生成过程?

2)我们如何检查A,B和C之间的所有关系?

提前致谢!

0 个答案:

没有答案