本专栏第一篇文章「专栏开篇」列出了专栏的完整目录,按目录顺序阅读,有助于你的理解。
doxygen 也可以生成函数调用关系图,但 doxygen 能做的远不止于此,它是一款优秀的文档自动生成工具。它可以将代码中的注释转换成帮助文档(注释格式要符合 doxygen 要求才行,FFmpeg API Documentation 就是用doxygen自动生成的),它也可以通过静态分析代码,生成「头文件引用关系图」、「函数调用关系图」、「继承图」以及「协作图」来可视化文档之间的关系。
官网:http://www.doxygen.nl/
根据官网介绍,截止书稿,它能支持的语言有:C, C++, Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL等。生成的帮助文档格式可以是CHM、RTF、PostScript、PDF、HTML和Unixman page等。
有了这样的工具,在发布程序版本的同时,发布帮助文档也将变得简单、高效,配合持续集成系统(如Jenkins),自动构建系统,帮助文档可以跟随代码一起实时、轻松的发布版本。
doxygen 是跨平台的工具,支持Linux、Windows、Mac OS X系统,本文将以Windows版本为例,简要介绍如何使用 doxygen 生成函数调用关系图,其他功能(如将代码的注释生成帮助文档)不在本文讨论范围内,这是一个入门级的教程。
跟前面文章介绍的cflow、codeviz一样,doxygen 自身没办法生成关系图,需要依赖 graphviz 才行,所以还得安装 graphviz 先。
官网:http://www.graphviz.org/
下载:https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.msi
在官网上很容易找到 Windows 平台的 Stable 最新版本,如下图所示,我下载的版本是「graphviz-2.38.msi」,安装过程一直“Next”即可。
官网:http://www.doxygen.nl/
下载:ftp://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.14-setup.exe
在官网上很容易找到最新版本的安装文件,我下载的版本是「doxygen-1.8.14-setup.exe」,安装过程也是傻瓜式的“Next”。
截取 doxygen 安装目录树(只是部分),如下所示:
doxygen
├── bin
│ ├── doxygen.exe <-- 最核心的可执行文件
│ └── doxywizard.exe <-- 配置文件向导
└── doxygen_manual.chm <-- 离线帮助手册
其中 doxygen_manual.chm 是离线帮助手册(要深入研究 doxygen 的,认真研读这个手册就对了), doxywizard.exe 是配置文件向导,通过这个向导可以快捷地生成配置文件,doxygen.exe 再根据配置文件分析源码,输出各种图和文档。以下这张图更能直观的表达出 doxywizard.exe 和 doxygen.exe 之间的关系:
/* whoami.c - a simple implementation of whoami utility */
#include
#include
#include
#include
int who_am_i(void)
{
struct passwd *pw;
char *user = NULL;
pw = getpwuid (geteuid ());
if (pw)
user = pw->pw_name;
else if ((user = getenv ("USER")) == NULL)
{
fprintf (stderr, "I don't know!\n");
return 1;
}
printf ("%s\n", user);
return 0;
}
int main(int argc, char **argv)
{
if (argc > 1)
{
fprintf (stderr, "usage: whoami\n");
return 1;
}
return who_am_i ();
}
Doxywizard是配置和运行doxygen的GUI前端,启动 doxywizard.exe 向导可以快捷的创建配置文件。
Step1:运行 doxywizard.exe,点击 Wizard 选项卡,配置 Wizard > Project 页面,如下图所示:
Step2:点击 Expert 选项卡,配置 Expert > Project 页面:
上一章节已经配置好了参数,接下来就可以开始分析源码了。切换到 doxywizard.exe 向导的 Run 选项卡,点击 Run doxygen 按钮,幕后就会根据刚才的配置执行 doxygen.exe 命令:
比起doxygen,之前两篇文章所体验的cflow、codeviz简直弱爆了,doxygen安装过程简单,使用便捷,容易上手,用户体验较好。