Windows下使用doxygen阅读和分析C/C++代码

转自:http://blog.sina.com.cn/s/blog_63d902570100gwk6.html

虽然使用各种IDE或者Source Insight 可以方便地在windows下阅读和分析C/C++代码,但是一步步Go to Definetion 实在令人痛苦。Doxygen能够生成函数调用关系图,所有的函数调用关系可以一目了然,另外他还能统计文档中所有的类,成员变量,成员函数等。总的来说,Doxygen不但能从局部把握代码,还能从全局审视代码,后者是一般IDE和Source Insight 不能做到的。所以,使用doxygen阅读分析代码可以达到事半功倍的效果。

doxygen的安装很简单,到官方网站下载doxygen的windows安装程序即可。除了安装doxygen外,还需要安装graphviz,因为doxygen需要使用graphviz的dot.exe生成调用图。graphviz在它的官方网站上也可以下载到安装程序。不过我下载的安装程序在安装时老是报cab文件错误。最后我下载了graphviz的release文件,即安装程序下面的zip压缩文件,下载完成后解压缩即可。

安装完doxygen后即可进行适当的配置,然后运行doxyfile生成文档。基本的配置前人早有说明,不再赘述。需要注意的是:

1.要勾选Dot选项卡下面的HAVE_DOT、CALL_GRAPH 、CALLER_GRAPH 选项。并在DOT_PATH下面填入dot.exe的路径,也就是graphviz安装目录下的bin文件夹。

2.勾选Wizard->Project选项卡下面的Scan recursively!

3.勾选Build选项卡下面的EXTRACT_ALL、EXTRACT_PRIVATE、EXTRACT_STATIC、EXTRACT_LOCAL_CLASSES、EXTRACT_LOCAL_METHODS选项

4.如果程序里面有中文,将Project选项卡下的DOXYFILE_ENCODING和Input选项卡下面的INPUT_ENCODING改为GBK

5.可以勾掉LATEX输出,这样节省编译时间

Doxygen是一款开源软件,可用于从已经存在的VC工程中提炼出软件文档(HTML等格式),包括文件说明、类说明、属性方法说明、类关系等内容。一般常将Doxygen和graphviz两款软件一起安装,后者是一款绘图软件,可在前者生成的软件文档中增加图表。Doxygen的细节可以上网搜索。这里贴一下个人体会,可帮助感兴趣的朋友迅速上手这个软件:

1,安装DOXYGEN和graphviz后,可以在“DOXYGEN安装目录in”下用命令行方式运行doxygen.exe -g 生成一个名为Doxyfile的配置文件。

2,将文件Doxyfile复制到想生成文档的VC工程目录下。 
修改该文件中的如下选项: 
PROJECT_NAME = 填上项目名称 
OUTPUT_LANGUAGE = 改为Chinese 
GENERATE_LATEX = 改为NO 
EXTRACT_ALL = 改为YES 
HAVE_DOT = 改为YES 
DOT_IMAGE_FORMAT = 该为JPG 
DOT_PATH = 填上"C:/Program Files/ATT/Graphviz/bin/" 
DOTFILE_DIRS = 填上"c:/Program Files/ATT/Graphviz/bin/"

3,对VC工程进行如下修改 
(1)在stdAfx.h中增加预定义,以支持DOT画图。 
#ifndef _DIAGRAMS_A_H 
#define _DIAGRAMS_A_H 
#endif 
(2)在重要的类、方法、属性前面增加注释,以支持DOXYGEN分析。 
/// @brief 最主要的业务实现类 
/// 
/// 所有的算法内容基本都在这个类中实现。 
/// 
/// @author lipp

或者放在语句后面 
char sFilename[400]; ///< LOG文件名

并在重要文件前增加注释 
/// @file xxx.cpp 
/// 被其他程序调用的,实现了算法的DLL主程序。 
/// 包括各个方法输出接口。

4,运行DOXYGEN.exe。LOAD以上的Doxyfile文件。点击START。这时会生成一个新的HTML目录在VC工程目录中。

5,使用IE打开新生成的HTML目录中的INDEX.htm文件。

时间: 2024-08-24 21:32:20

Windows下使用doxygen阅读和分析C/C++代码的相关文章

【已解决】Windows下 MySQL大小写敏感 解决方案及分析

Windows下 MySQL大小写敏感配置 [email protected] http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-3-27 最近在window系统下 操作Linux系统下创建的数据库,发现有些不对劲,比较了半天才发现是大小写敏感的问题造成的.网上搜索了一下,解决了这个问题,做个简明扼要的记录. 按照网上的说明: WINDOWS: 编辑MySQL安装目录下的my.ini 文件,在[mysqld]节下 添加 lower_case_table_n

c++ 网络编程(四)TCP/IP LINUX/windows下 socket 基于I/O复用的服务器端代码 解决多进程服务端创建进程资源浪费问题

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9613861.html 好了,继上一篇说到多进程服务端也是有缺点的,每创建一个进程就代表大量的运算与内存空间占用,相互进程数据交换也很麻烦. 本章的I/O模型就是可以解决这个问题的其中一种模型...废话不多说进入主题-- I/O复用技术主要就是select函数的使用. 一.I/O复用预备知识--select()函数用法与作用 select()用来确定一个或多个套接字的状态(更为本质一点来讲是文

git 在windows下的应用(一) - 本地仓库代码管理

访问https://gitforwindows.org/? 下载一个安装包,一路next下去 git config --global user.name "Pcdog" git config --global user.email "[email protected]" cd d: mkdir git 创建一个目录 初始化 git init .git目录中会生成database 我把当前日期生成1.txt 并且提交到git date>1.txt git 1.t

【第五篇】androidEventbus源代码阅读和分析之unregister代码分析

代码里面注销eventbus一般我们会在onDestory里面这么写: 1 EventBus.getDefault().unregister(this); 然后走到unregister里面去看看: 1 /** 2 * @param subscriber 3 */ 4 public void unregister(Object subscriber) { 5 if (subscriber == null) { 6 return; 7 } 8 synchronized (this) { 9 mMet

git 在windows下的应用(二) - 远程仓库代码管理

克隆远程git 目录 https://github.com/pcdogyu/git4windows.git 克隆下来了 生成1.txt scan stage signoff commit 2次提交记录 推送到远程地址 完成了 还没来得及去网页呢,就收到系统提示邮件 网页查看1.txt已经提交上去了 对于将远程版本库上的修改同步到本地,Git提供了2种命令来完成此功能,分别是fetch和pull.先来讲讲fetch: git fetch https://github.com/pcdogyu/git

git在windows下切换(checkout)分支拉取(pull)最新代码

:: git-pull-all.bat @ECHO OFF SETLOCAL ENABLEEXTENSIONS SET MYGIT="C:\Program Files\Git\bin\git.exe" FOR /D %%X IN (*) DO ( IF EXIST "%%X\.git\" ( CD /D "%%X" ECHO ===== git pull %%X %MYGIT% checkout test %MYGIT% pull --recur

windows下安装awstats来分析apache的访问日志

一.啰嗦两句 之前在Windows下用Apache时,也曾经配置过Awstats,然后换了工作,改用Linux+nginx,渐渐把Apache忘记了.又换了工作,又得用Apache,这回版本更新到2.4了,配置稍微有点不同,其他文章再列出了.网站上线了好几个月,因为一直没有什么流量且自己忙于各种琐屑的工作,一直没给Apache加上Awstats进行日志分析.最近网站几次搞活动,懂不懂就访问缓慢,于是意识到,该加上日志分析工具了.今天趁着周末,重新来配置Awstats,感觉有点陌生.查了各种资料,

[转] Doxygen + Graphviz windows下安装配置(图解)

查看一些开源代码经常被一些函数的调用关系给绕进去,经过网上查阅资料,发现了这个好用的方法,拿出来和大家分享下安装和应用的过程. 本人常用windows系统,所以主要讲解下windows下相关的内容 要使用doxygen生成漂亮的调用关系图,那就必须安装下图形生成工具graphviz软件,要通过html生成chm文档,那就要用htmlhelp软件了,我想已经说明了三者的关系了,哦,至于doxygen做什么,生成html文档或其他格式的文档软件撒 首先下载三个软件,均下载windows下的安装包,

Windows下return,exit和ExitProcess的区别和分析

通常,我们为了使自己的程序结束,会在主函数中使用return或调用exit().在windows下还有ExitProcess()和TerminateProcess()等函数. 本文的目的是比较以上几种结束程序的方式的区别,并分析其原理. 首先我们用一个例子来说明几种结束方式的区别. 测试代码如下:#include#include#include class Test{public: Test (int i) {m_i=i; printf ("construct %d\n", m_i);