使用doxygen与graphviz绘制项目的函数调用图

本文介绍了如何在Mac环境下利用免费且跨平台的工具Doxygen和Graphviz来替代SourceInsight,生成函数调用关系图。首先,需要安装Graphviz和Doxygen,然后通过Doxygen的配置向导设置项目信息,包括选择程序语言、配置输出格式等。完成配置后,运行Doxygen进行源码分析,最后生成并查看函数调用图。虽然示例以Windows为例,但方法同样适用于Mac系统。
摘要由CSDN通过智能技术生成

前言

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

原文参考:绘制函数调用图(call graph)(4):doxygen + graphviz_许振坪的博客-CSDN博客_函数调用图

1 介绍

doxygen 是跨平台的工具,官网:Doxygen: Doxygen

支持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

官网:Graphviz

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

2.2 安装doxygen

官网:Doxygen: Doxygen

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

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

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

2.3 源码分析

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

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

2)选择程序语言

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

3)配置 Expert > Project 页面

4)配置 Expert > Build页面

5)配置 Expert > Dot页面

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

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

6)分析源码

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

7)查看分析结果

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

8)查看doxygen分析后的结果

点开文件列表

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

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

年少时的棉花糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值