【问题标题】:Doxygen - How to generate a textual call relationship result without generating the graphDoxygen - 如何在不生成图表的情况下生成文本调用关系结果
【发布时间】:2018-10-15 09:27:30
【问题描述】:

我正在使用 Doxygen 来获取 c/c++ 项目的整个函数调用图。我设置了HAVE_DOT = YESCALL_GRAPH = YES。它可以帮助获得正确的结果,但对于大型项目,使用 dot 生成 PNG 将花费大量时间。我想获得一个没有 PNG 的文本结果以避免耗时。但我不知道如何配置。在不生成 PNG 的情况下获取 .DOT 文件将是完美的。

【问题讨论】:

    标签: c++ c doxygen


    【解决方案1】:

    对于图形表示,doxygen 具有 CALL_GRAPHCALLER_GRAPH 以及 HAVE_DOT 配置设置。

    对于文本表示,有设置:REFERENCED_BY_RELATIONREFERENCES_RELATION,这些设置会产生每个函数的结果。

    来自 OP 的评论:

    但这只是帮助我了解函数中调用了哪些实体。一世 无法获取项目的整个调用图。

    我想要的是在不生成 PNG 的情况下在文本图中获取函数调用图,例如 .DOT。

    这不是 doxygen 直接支持的。完成某事有一个卑鄙的技巧:

    • HAVE_DOT 设置为YES
    • CALL_GRAPH 设置为NO
    • 添加到您想要关系的函数:\callgraph
    • 卑鄙的把戏:
      • DOT_CLEANUP 设置为NO
      • DOT_PATH 设置为dot 可执行文件不驻留的路径
      • DOT_GRAPH_MAX_NODES 设置为适当的值
      • MAX_DOT_GRAPH_DEPTH 设置为适当的值

    这将产生一个dot 文件(在例如 html 目录中),其中包含所请求的关系。

    【讨论】:

    • 我已经尝试设置REFERENCES_RELATION = YES。但这只是帮助我了解函数中调用了哪些实体。我无法获得项目的整个调用图。
    • REFER... 确实只是在函数基础上执行此操作(因此直接调用/由关系调用,1 深)。这个额外的“全图”部分在问题中不清楚,请将此信息添加到问题中。
    【解决方案2】:

    您可以查看以下手册: http://www.doxygen.nl/manual/diagrams.html

    设置CALL_GRAPH = NO 可能会起作用,因为它不会创建图形表示。

    看看手册中\hidecallgraph\callgraph的用法。

    【讨论】:

    • 根据我的解释,OP 想要“我想要获得文本结果”,而不仅仅是抑制图形,尽管可以使用 \hidecall... 来禁用单个图形。
    • 我的完整解释是 OP 希望“在没有 PNG 的情况下获得文本结果”,因为生成 PNG 非常耗时,并且要求避免它。所以禁用它可以是一种选择。虽然@albert answer 也指向文本表示。
    • 禁用CALL_GRAPH 时没有文本表示,图形的正常文本表示在.dot 文件中,在这种情况下不会生成此文件。 REFER... 设置在 HTML, LaTeX`, ... 输出中生成文本表示。
    • 我想要的是在文本图中获取函数调用图,例如 .DOT,而不生成 PNG。
    猜你喜欢
    • 2014-07-04
    • 1970-01-01
    • 2012-04-15
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2012-12-15
    相关资源
    最近更新 更多