2010-10-01 108 views
6

我在DOxygen论坛上发布了一个question,并且在这里发布它以获得更好的响应。从DOxygen XML输出中提取函数调用列表

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

Caller,Callee 
FunctionX, FunctionY 
... 

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

在此先感谢!

+0

你想专门使用XSLT吗?还是你正在编写任何其他语言如C或C#?另外,如果您希望得到更准确的建议,则应在此处发布Doxygen XML输出的示例。 – Reinderien 2010-10-01 20:43:20

+0

不需要使用XSLT;我可以使用别的东西。问题不在于如何解析XML - 我知道如何解决这个问题。它更基本 - DOxygen如何组织其(多个)XML输出文件,以及如何从它们建立主叫方 - 被叫方关系。 – 2010-10-02 19:27:19

回答

4

基于我在我创建了人为的例子看,

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

这似乎是一个很好,直接的方式来表示调用图。使用XSLT或任何其他理智的XML解析套件来获得所需结果应该没有问题。