用doxygen+graphviz生成函数调用流程图

一、问题的产生

当分析一个很复杂的项目源代码时,如何有效的分析函数间的调用关系呢?从网上搜索到了如下方法:使用doxygen和graphviz来自动分析函数间的调用关系。

二、工具简介

doxygen:

Doxygen is the de facto standard tool for generating documentation from annotated C++ sources, but it also supports other popular programming languages such as C, Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to some extent D.

是一种从标记过的C++源代码生成文档的标准工具,也支持C,Objective-C,C#,PHP,Java,Python,IDL,Fortran,VHDL,Tcl等。

graphviz:

Graphviz is open source graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. It has important applications in networking, bioinformatics,  software engineering, database and web design, machine learning, and in visual interfaces for other technical domains.

是一种开源的将结构化信息展示成抽象图和网络的工具,用于网络,生物信息,软件工程,数据库和网站设计,机器学习以及其他技术领域的可视性接口。

三、生成函数调用图

1、下载并安装以下两种工具

doxygen:(http://www.stack.nl/~dimitri/doxygen/index.html

graphviz:(http://www.graphviz.org/

注意下载时,选择的是windows版本,还是mac版本。

如果安装过程中弹出“打不开 XXX,因为它来自身份不明的开发者”请进入如下网址寻找解决办法:

http://jingyan.baidu.com/article/f71d60377960651ab741d140.html

2、运行DoxyWizard,弹出Doxygen配置界面

选择Scan recursively则递归分析源代码目录中的子目录内的源代码。

由于使用到了Graphviz,所以要设置Dot选项,勾选HAVE_DOT,并设置DOT_PATH为Graphviz的bin目录。(注意:MAC的Graphviz的bin目录不在安装包内,一般是在/usr/local/bin/,实在找不到就到终端用ls一层一层的查找)

 

另外,若Doxygen出现中文乱码问题:

设置如下:

Expert选项卡-> Project:

DOXYFILE_ENCODING:UTF-8

OUTPUT_LANGUAGE:Chinese

Expert选项卡-> InPut:

INPUT_ENCODING:GB2312

这样生就可以正确生成含有中文的文档了。

 

文章出处:

1、http://www.jianshu.com/p/f67ec1879fca

2、http://blog.csdn.net/play_fun_tech/article/details/22145943



作者:_Lily
链接:https://www.jianshu.com/p/fe4b6b95dca5
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值