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的安装,网上有各种的教程资料,但一些已经过时,按照网上的教程,花费了大量时间,都没能安装成功.于是,通过查阅官方安装教程以及综合 ...
随机推荐
- 磁盘修复 mount: wrong fs type running e2fsck
当服务器或PC机器的硬盘在使用一段时间后,会出现无法使用正常进行使用: 1. 当将文件系统挂载到指定的目录的时候,会出现mount 失败,如下图: [root@template ~]# mount / ...
- Java生鲜电商平台-高可用微服务系统如何设计?
Java生鲜电商平台-高可用微服务系统如何设计? 说明:Java生鲜电商平台高可用架构往往有以下的要求: 高可用.这类的系统往往需要保持一定的 SLA,7*24 时不间断运行不代表完全不挂,而是有一定 ...
- activiti web流程设计器 工作流的 整合视频教程 SSM和独立部署
本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...
- jsp + js + 前端弹出框
在项目中,前端页面我们时常需要各种各样的弹出框: 1.alert对话框:显示含有给定消息的"JavaScript Alert"对话框 代码: var a = "Hello ...
- JEB 无源码调试 以dvm smali字节码方式,Demo尝试
关于调试器看不到进程,无法attach的问题,网上也有很多教程,基本是修改ro.debugable =1 ,ro.secure = 0 让adbd有root权限 attach到其他进程,涉及到要修改 ...
- oracle数据库system表空间增长过大的问题
网上些解决方法,就是关闭审计,之前也有同事推荐这样,下面就是关闭审计的步骤. VALUE=DB即审计开启,改成FALSE即可. SQL> show parameter audit_trail; ...
- 史上最全Oracle数据泵常用命令
本文转自https://blog.csdn.net/Enmotech/article/details/102848825 墨墨导读:expdp和impdp是oracle数据库之间移动数据的工具,本文简 ...
- ubuntu vscode 写一个C++程序
博客转载:https://blog.csdn.net/weixin_43374723/article/details/84064644 Visual studio code是微软发布的一个运行于 Ma ...
- 3万字长文概述:通俗易懂告诉你什么是.NET?什么是.NET Framework?什么是.NET Core?
[转载]通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? 什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的 ...
- [译]Vulkan教程(27)Image
[译]Vulkan教程(27)Image Images Introduction 入门 The geometry has been colored using per-vertex colors so ...