使用doxygen和graphviz来产生源代码函数调用图

一、问题的产生

最近需要分析一个很老的工程的源代码,源代码的内容复杂,而且找不到比较熟悉此代码的人。我这里首先要分析下函数间的调用关系,于是从网上搜索到了如下方法:使用doxygen和graphviz来自动分析函数间的调用关系。

二、工具简介


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:( http://www.graphviz.org/

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)打开DoxyWizard,弹出Doxygen配置界面。
2)如下图,标出了主要需要设置的选项


Step1:设置doxygen的工作目录,这里主要是生成doxygen运行的目录
Step2:选项设置,wizard和expert选项可以同时设置。
wizard选项卡中,选择Project Name作为工程名称,将来会显示在文档的标题中;选择Source code directory,设置源代码所在目录,Destination directory设置文档的生成目录;选择Scan recursively则递归分析源代码目录中的子目录内的源代码。

3)由于我需要从没有任何标记的源代码中分析出函数调用关系,所以还需要设置expert选项卡


如图,勾选Build选项中的与函数有关的选项,EXTRACT_ALL必须勾选



如图,由于使用到了Graphviz,所以要设置Dot选项,勾选HAVE_DOT,并设置DOT_PATH为Graphviz的bin目录。勾选CALL_GRAPH和CALLER_GRAPH,生成函数调用关系图。

4)最后选择Run选项卡,点击Run doxygen,生成文档文件。
5)打开文档文件,在函数的分析中即可看到函数调用图。


四、小结

利用这两个工具可以为分析代码做一个初步的准备,也可以为已标记好的代码生成比较完备的文档。
  • 11
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值