Ubuntu下doxygen+graphviz使用概录
关键词:doxygen、Doxyfile、doxywizard、dot、graphviz等等。
使用doxygen从源码注释生成帮助文档或者SDK,输出格式有多种比如htmp、Latex等等。
如果想可视化头文件关系、函数调用关系,可以生成dot格式的布局方式;然后使用graphviz的dot工具生成可视化关系图。
这里面主要包括三部分:在代码中添加doxygen规则注释;生成doxygen配置文档doxyfile;graphviz的dot布局可视化配置。
使用doxygen的优点:
1. 注释紧跟代码,一条命令生成响应SDK,快捷、及时更新,容易维护。
2. 加上dot之后,函数关系、类关系等更加明确,有利于理解代码。
3. 输出格式丰富,适合各种形式发布。
4. 不同Doxyfile输出不同内容,适合对内对外发布。
0. 工具安装
需要安装doxygen、doxywizard、graphviz:
sudo apt install doxygen
sudo apt install doxygen-gui
sudo apt install graphviz graphviz-doc
1. doxygen介绍
关于doxygen的介绍在Doxygen Manual中有详细的说明,包括user manual、reference manual和information for developers三部分。
下图是doxygen信息流框图,按照文件doxyfile的配置,doxygen从sources中解析注释,输出结果,结果可以使XML、Latex、HTML、PDF等等。

2. 配置doxygen
doxygen的使用方法通过doxygen -h可以获取。
快速创建配置文件doxyfile的方式:
doxygen -s -g doxyfile--------------简化版的doxyfile,没有很多注释信息。
doxygen -g doxyfile
上面的创建方式比较简单,但是配置比较复杂。
doxygen-gui提供了doxywizard可视化配置工具。
doxywizard-----------------新建一个Doxyfile,并进行配置。
doxywizard Doxyfile--------从已有配置文件Doxyfile读取配置。
第一步,设置doxygen工作目录。
第二步,包括三部分分别是Wizard概要设置,Expert对功能进行专家模式设置,Run开始执行doxygen生成帮助文档。

如果要用好doxygen,就需要对Expert详细了解。

参考文档:《Doxywizard usage》
3. 如何给代码加doxygen注释
在《Documenting the code》中详细介绍了给不同语言添加注释的方法。
常用的功能包括个文件添加注释和函数添加注释。
比如文件注释:
/**
* @file usb_hidraw_api.c
* @author xxx
* @brief 操作hidraw设备接口open/close/read/write.
*/
显示结果如下:

添加函数注释:
/**
@brief 从hidraw设备读取数据。
@param fd hidraw设备句柄。
@param r_buf 读取函数缓存指针。
@param len 读取大小。
@return 0: 读取成功。\n
-1: 读取失败。
*/
int usb_read(int fd,char *r_buf,int len)
{
int ret;
char tmp_buf[];
if(r_buf == NULL) {
perror("usb_read::pointer error!");
return -;
} ret = read(fd, tmp_buf, len+);
if(ret < ) {
//printf("read data error %d\n",ret);
return -;
}
memcpy(r_buf,&tmp_buf[],len);
return ;
}
结果如下:

更多增强功能参考官网文档。
4. 使用graphviz的dot功能
使用graphviz的dot功能,可以生成详细的函数调用关系图、include关系图等,提高阅读效率。
通过Run的Show configuration可以查看配置信息:

下面看看对dot的配置:
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
MSCGEN_PATH =
DIA_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES----------------------------打开dot功能。
DOT_NUM_THREADS =
DOT_FONTNAME = Helvetica----------------------设置dot功能的字体和大小。
DOT_FONTSIZE =
DOT_FONTPATH =
CLASS_GRAPH = YES----------------------------类等关系图。
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
UML_LOOK = NO
UML_LIMIT_NUM_FIELDS =
TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = YES----------------------------include关系图。
INCLUDED_BY_GRAPH = YES
CALL_GRAPH = YES----------------------------调用和被调用关系图。
CALLER_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png----------------------------dot输出的图像格式。
INTERACTIVE_SVG = NO
DOT_PATH = /usr/bin/dot-------------------一定要指定的系统中dot路径。
DOTFILE_DIRS =
MSCFILE_DIRS =
DIAFILE_DIRS =
PLANTUML_JAR_PATH =
PLANTUML_INCLUDE_PATH =
DOT_GRAPH_MAX_NODES =
MAX_DOT_GRAPH_DEPTH =
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
生成的函数调用关系图:

include关系图:

Ubuntu下doxygen+graphviz使用概录的更多相关文章
- Ubuntu下三个实用的录屏软件
Ubuntu下三个实用的录屏软件 Kazam 优点: 易安装 可选择区域录制,也可全屏录制 有录屏和截图功能 安装: sudo apt-get install kazam 展示: Simple Scr ...
- 用Doxygen+Graphviz生成函数调用流程图(转)
源文链接: http://wildpointer.net/2012/04/14/doxygen_graphviz/ 上面这张图是用Doxygen+Graphviz从netcat的源代码生成的函数调用关 ...
- ubuntu 下安装 texlive 并设置 ctex 中文套装
1 安装 texlive2013 1.1 下载 texlive2013 下载地址:http://ftp.ctex.org/mirrors/CTAN/systems/texlive/Images/tex ...
- Ubuntu下录制和制作Gif图片--实战版
1.背景 ubuntu下,写文章的时候,经常用到Gif图片,这个自己怎么制作呢? 网上查了一下资料,大致的流程就是:安装 录屏软件(kazam) 和 视频 转 Jpeg 的工具(mplayer) ,使 ...
- 使用Doxygen + graphviz生成Unity 3d的UGUI类图
下载软件 1) Graphviz,下载地址:http://download.csdn.net/detail/u010953266/8591169 为什么不用官网?一是下载速度慢,二是下载到本地的文件貌 ...
- ubuntu下安装 Sublime Text 3 及 PlantUML 绘图插件
ubuntu下只想做C++的程序代码编写,最开始选择了codeblock,主要目的是安装简单,集成度高,还可以调试,但是用的时候老是无故退出,改了半天的代码就这样丢失,挺苦恼的,可能跟自己装的系统比较 ...
- ubuntu下中文乱码解决方案(全)
转自 http://www.cnblogs.com/end/archive/2011/04/19/2021507.html 1.ibus输入法 Ubuntu 系统安装后已经自带了ibus输入法,在 ...
- linux下常用的截图、录屏工具
录屏: 在linux下常用的录屏工具有5种,可以baidu或者google下喔,我选用的是recordMydesktop,使用非常方便,用时注意先把每秒桢数调高,否则效果必然很差. 在ubuntu下可 ...
- ubuntu下Open vSwitch安装
ubuntu下Open vSwitch安装 有关Open vSwitch的安装,网上有各种的教程资料,但一些已经过时,按照网上的教程,花费了大量时间,都没能安装成功.于是,通过查阅官方安装教程以及综合 ...
随机推荐
- vue中Enter触发登录事件和javascript中Enter触发点击事件
created(){ window.addEventListener('keydown', this.handleKeyDown, true)//开启监听键盘按下事件 } 在methods中当keyC ...
- SecureCRT远程连接The remote system refused the connection问题
今天用SecureCRT远程连接Linux(Centos 7)时,连不上,报错The remote system refused the connection.于是就百度,首先查看sshd服务有没有启 ...
- 一步一步搭建 Oracle Data Guard
前言 为什么要写前言,因为我要吐槽一下.作为一个Java后端,搭建Oracle Data Guard真的是一件,嗯,既不专业也不擅长的事情,然而,为什么还是要我来弄? 因为DBA出差了,我们这边急着要 ...
- Spring Boot 2.2.2.RELEASE 版本中文参考文档【3.1】
使用Spring Boot 本节将详细介绍如何使用Spring Boot.它涵盖了诸如构建系统,自动配置以及如何运行应用程序之类的主题.我们还将介绍一些Spring Boot最佳实践.尽管Spring ...
- JavaWeb入门——在Windows环境下安装Tomcat服务器
JavaWeb入门——在Windows环境下安装Tomcat服务器 摘要:本文主要学习如何在Windows环境中下载并安装Tomcat服务器. 下载 获取安装包 推荐去官网上下载Tomcat: htt ...
- RESTful 架构风格
在移动互联网的大潮下,『微服务』的概念也越来越被大家接受并应用于实践,日益增多的web service逐渐统一于RESTful 架构风格,如果开发者对RESTful 架构风格不甚了解,则开发出的所谓R ...
- 【iOS13问题】修改状态栏的颜色(亲测,有效)
- (UIStatusBarStyle)preferredStatusBarStyle { if (@available(iOS 13.0, *)) { return UIStatusBarStyle ...
- C++中的try throw catch 异常处理
今天在开发过程中调用一个库函数结果库函数有throw操作,当前代码没有对throw进行捕获操作,导致进程在main 函数中捕获到异常导致进程crash.所以借此记录下c++关于try,throw,ca ...
- Python3操作MySQL基于PyMySQL封装的类
Python3操作MySQL基于PyMySQL封装的类 在未使用操作数据库的框架开发项目的时候,我们需要自己处理数据库连接问题,今天在做一个Python的演示项目,写一个操作MySQL数据库的类, ...
- oracle 11gR2 RAC 停库和启库
grid设置环境变量后可以在任意目录下执行,如root没设置的话需要带绝对路径export ORACLE_HOME=/u01/app/11.2.0/gridexport PATH=$ORACLE_HO ...