有没有一种方法可以使用libtooling在多个翻译单元之间交叉引用符号?

时间:2019-07-24 17:00:23

标签: c++ clang libclang libtooling

我有一个Lib和多个应用程序。我想收集有关从Apps向Lib的API进行函数调用的使用情况统计信息。 基本上我当前的流程是:

  • 为所有功能/方法解析库
  • 以格式化的方式输出信息
  • 使用该输出从应用收集统计信息。

我目前正在使用以USR形式提供cross-referencing的libclang API,因此我正在建立函数索引并在解析应用程序时使用它。问题在于该API受到限制,这就是为什么我要转向Libtooling。

我已经看过libtooling的API,但是找不到类似的东西。因此,我的问题是使用Libtooling实现“交叉引用”的最佳方法是什么。

一个例子是:

> lib.h

 class Foo {
 public:
       void bar();
 };


> app.cpp

#include "lib.h"

int main(void) {
    Foo f;
    f.bar();
    return 0;
}

预期的输出将是一个json文件:

{
  "name": "bar",
  "location": { "file": "lib.h", "line": 5},
  "references": [{"file": "app.cpp", "line": 8}]
}

0 个答案:

没有答案
相关问题