• doxygen+graphviz轻松绘制函数调用图(call graph)


    前言

    之前的工作环境习惯了使用source insight查看函数分析代码,切换到mac下后改用vscode,发现缺少函数调用关系图生成。跨平台的understand可以很好的解决,但是公司没有购买,因此需要寻找一个免费、跨平台的替代工具。doxygen + graphviz是不错的选择。

    原文参考:https://blog.csdn.net/benkaoya/article/details/79763668

    1 介绍

    doxygen 是跨平台的工具,官网:http://www.doxygen.nl/

    支持Linux、Windows、Mac OS X系统(本文将以Windows版本为例)。

    支持C语言在内的多种语言的分析,生成的帮助文档格式可以是CHM、RTF、PostScript、PDF、HTML和Unixman page等。

    我使用doxygen的主要目的是生成函数调用关系图,但它能做的远不止于此,它是一款优秀的文档自动生成工具。它可以将代码中的注释转换成帮助文档(注释格式要符合 doxygen 要求才行,FFmpeg API Documentation 就是用doxygen自动生成的),它也可以通过静态分析代码,生成「头文件引用关系图」、「函数调用关系图」、「继承图」以及「协作图」来可视化文档之间的关系。

    有了这样的工具,在发布程序版本的同时,发布帮助文档也将变得简单、高效,配合持续集成系统(如Jenkins),自动构建系统,帮助文档可以跟随代码一起实时、轻松的发布版本。

    本文主要介绍如何使用 doxygen 生成函数调用关系图,其他功能(如将代码的注释生成帮助文档)不在本文讨论范围内,这是一个入门级的教程。

    2 安装

    2.1 安装 graphviz

    官网:http://www.graphviz.org/

    doxygen 自身没办法生成关系图,需要依赖 graphviz 才行,得先安装 graphviz。根据自身系统选择安装的版本。

    2.2 安装doxygen

    官网:http://www.doxygen.nl/

    根据自身系统选择安装的版本。

    安装目录下有几个我们需要关心的:

    • 帮助手册:有两种版本,doxygen_manual.chm和html版
    • 配置文件向导:doxywizard.exe,通过这个向导可以快捷地生成配置文件,doxygen.exe 再根据配置文件分析源码,输出各种图和文档

    2.3 源码分析

    1)运行 doxywizard.exe,配置 Wizard > Project 页面

    点击 Wizard 选项卡,如下图所示:

    clipboard

    2)选择程序语言

    根据实际情况选择,我这里选择C

    clipboard

    3)配置 Expert > Project 页面

    clipboard

    3)配置 Expert > Build页面

    clipboard

    4)配置 Expert > Dot页面

    clipboard

    至此,配置完毕,可以通过 File > Save 菜单将上面所有配置导出(保存)到配置文件,以免丢失配置,配置文件默认保存在 Step1 设置的工作目录下。

    当然你也可以通过 File > Open 菜单导入(打开)一个现有的配置文件。可以打开配置文件看看,里面参数非常多,doxywizard 图形化的便捷性也就体现在这里。

    5)分析源码

    Run 选项卡,点击 Run doxygen 按钮,幕后就会根据刚才的配置执行 doxygen.exe 命令:

    clipboard

    6)查看分析结果

    等分析完毕,最后点击 Show HTML output 按钮就会启动浏览器显示分析结果,如下图所示:

    clipboard

    7)查看doxygen分析后的结果

    点开文件列表

    clipboard

    头文件包含关系图与函数调用关系图如下,从图中可以发现,doxygen不会显示调用的系统API。

    clipboardclipboard

  • 相关阅读:
    Springboot2.0之HikariCP 连接池
    Spring Kafka中关于Kafka的配置参数
    Spring @Async异步线程池 导致OOM报错的原因
    JDK 8 函数式编程入门
    Spring自定义argumentResolver参数解析器
    Kafka消费异常处理
    Java项目生成可执行jar包、exe文件以及在Windows下的安装文件
    Mysql索引研究总结
    windows安装zookeeper
    JVM中的堆和栈
  • 原文地址:https://www.cnblogs.com/realjimmy/p/12892179.html
Copyright © 2020-2023  润新知