从DOxygen XML输出中提取函数调用列表

Kev*_* P. 6 doxygen

我在DOxygen论坛上发布了一个问题,并在此发布它以获得更好的响应.

我有一个约2,900个功能的中等大小的C项目.我正在使用DOxygen 1.5.9,它成功生成了函数的调用图.有没有办法将其提取出来进行进一步分析?一个简单的配对列表就足够了,例如

Caller,Callee
FunctionX, FunctionY
...
Run Code Online (Sandbox Code Playgroud)

我对XSLT很满意,但我必须说DOxygen XML输出很复杂.有没有人以前这样做过,可以提供一些如何解析XML文件的指导?

提前致谢!

Rei*_*ien 4

根据我在创建的人为示例中看到的内容,

  • ^_(.+)\d+(c|cpp|h|hpp)\.xml$如果我的 regex-foo 正确的话,解析名称类似于 的文件。
  • 找到所有<memberdef kind="function">。它有一个独特的id属性。我相信这个的 XPath 是//memberdef[@kind='function'].
  • 在该元素中,找到所有<references>.
  • 对于每个标签,refid属性唯一指的是正在调用的id对应标签的属性。<memberdef>
  • 每个中的文本节点<references>对应于正在调用的<name>相应节点。<memberdef>

这似乎是表达调用图的一种很好、直接的方式。使用 XSLT 或任何其他合理的 XML 解析套件来获得所需的结果应该不会有任何问题。