【问题标题】:Extracting function call list from DOxygen XML Output从 Doxygen XML 输出中提取函数调用列表
【发布时间】:2010-10-01 20:36:03
【问题描述】:

我在 DOxygen 论坛上发布了一个 question 并在此处发布它以获得更好的响应。

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

Caller,Callee
FunctionX, FunctionY
...

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

提前致谢!

【问题讨论】:

  • 您想专门使用 XSLT,还是为任何其他语言(如 C 或 C#)编写代码?此外,如果您想收到更准确的建议,您应该在此处发布 Doxygen XML 输出示例。
  • 不必使用XSLT;我可以用别的东西。问题不在于如何解析 XML——我知道该怎么做。它更基本 - DOxygen 如何组织其(许多)XML 输出文件,以及如何从它们建立调用者 - 被调用者关系。

标签: doxygen


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多