zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    IDEA中快速排除maven依赖
    Maven构建war项目添加版本号
    运行shell脚本报/bin/bash^M: bad interpreter错误排查方法
    Shell杀tomcat进程
    根据URL下载文件
    关闭Centos的自动更新
    CentOS下建立本地YUM源并自动更新
    为Linux服务器伪装上Windows系统假象
    ServerInfo.INI解密
    请教给终端推销域名的邮件该怎么写?
  • 原文地址:https://www.cnblogs.com/realjimmy/p/12892179.html
Copyright © 2011-2022 走看看