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

时间:2010-10-01 20:36:03

标签: doxygen

我在DOxygen论坛上发布了一个question,并在此发布,以便更好地回复。

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

Caller,Callee
FunctionX, FunctionY
...

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

提前致谢!

1 个答案:

答案 0 :(得分:4)

基于我在我创建的人为例子中所看到的,

  • 如果我的regex-foo是正确的,请解析名称类似于^_(.+)\d+(c|cpp|h|hpp)\.xml$的文件。
  • 查找所有<memberdef kind="function">。它具有唯一的id属性。我相信XPath是//memberdef[@kind='function']
  • 在该元素中,找到所有<references>
  • 对于其中每个代码,refid属性唯一引用正在调用的相应id的{​​{1}}属性。
  • 每个<memberdef>中的文字节点对应于正在调用的相应<references>的{​​{1}}。

这似乎是表达调用图的一种很好,直接的方式。您应该可以毫无困难地使用XSLT或任何其他理智的XML解析套件来获得所需的结果。