关键词: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使用概录的更多相关文章

  1. Ubuntu下三个实用的录屏软件

    Ubuntu下三个实用的录屏软件 Kazam 优点: 易安装 可选择区域录制,也可全屏录制 有录屏和截图功能 安装: sudo apt-get install kazam 展示: Simple Scr ...

  2. 用Doxygen+Graphviz生成函数调用流程图(转)

    源文链接: http://wildpointer.net/2012/04/14/doxygen_graphviz/ 上面这张图是用Doxygen+Graphviz从netcat的源代码生成的函数调用关 ...

  3. ubuntu 下安装 texlive 并设置 ctex 中文套装

    1 安装 texlive2013 1.1 下载 texlive2013 下载地址:http://ftp.ctex.org/mirrors/CTAN/systems/texlive/Images/tex ...

  4. Ubuntu下录制和制作Gif图片--实战版

    1.背景 ubuntu下,写文章的时候,经常用到Gif图片,这个自己怎么制作呢? 网上查了一下资料,大致的流程就是:安装 录屏软件(kazam) 和 视频 转 Jpeg 的工具(mplayer) ,使 ...

  5. 使用Doxygen + graphviz生成Unity 3d的UGUI类图

    下载软件 1) Graphviz,下载地址:http://download.csdn.net/detail/u010953266/8591169 为什么不用官网?一是下载速度慢,二是下载到本地的文件貌 ...

  6. ubuntu下安装 Sublime Text 3 及 PlantUML 绘图插件

    ubuntu下只想做C++的程序代码编写,最开始选择了codeblock,主要目的是安装简单,集成度高,还可以调试,但是用的时候老是无故退出,改了半天的代码就这样丢失,挺苦恼的,可能跟自己装的系统比较 ...

  7. ubuntu下中文乱码解决方案(全)

    转自 http://www.cnblogs.com/end/archive/2011/04/19/2021507.html   1.ibus输入法 Ubuntu 系统安装后已经自带了ibus输入法,在 ...

  8. linux下常用的截图、录屏工具

    录屏: 在linux下常用的录屏工具有5种,可以baidu或者google下喔,我选用的是recordMydesktop,使用非常方便,用时注意先把每秒桢数调高,否则效果必然很差. 在ubuntu下可 ...

  9. ubuntu下Open vSwitch安装

    ubuntu下Open vSwitch安装 有关Open vSwitch的安装,网上有各种的教程资料,但一些已经过时,按照网上的教程,花费了大量时间,都没能安装成功.于是,通过查阅官方安装教程以及综合 ...

随机推荐

  1. 局域网地址为什么是192.168.X.X?为什么连上公司的VPN就上不了网?

    注:本文主要目的是给程序员讲述一些局域网/VPN的基本知识,并不涉及到具体的实操.关于如何安装VPN服务器.配置VPN客户端及修改Windows路由表等具体实操内容,请自行搜索. RFC 局域网地址为 ...

  2. Mysql性能优化之参数配置(转)

    前言: Mysql作为数据库中广泛应用的开源产品,需要面对不同的生产压力,而有些性能问题通过配置优化就可以得到解决,优化可以分为几个方向:1.优化参数配置.2.优化数据库索引.3.优化数据库结构,如分 ...

  3. Spring 关于ResponseBody注解的作用

    //responseBody一般是作用在方法上的,加上该注解表示该方法的返回结果直接写到Http response Body中,常用在ajax异步请求中, //在RequestMapping中 ret ...

  4. inux CPU监控分析

    一.vmstat 可对操作系统的虚拟内存.进程.CPU活动进行监控 Procs(进程) r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU.(长期大于1) b: 等待IO的进程数量. Mem ...

  5. Docker Compose部署Nexus3时的docker-compose,yml代码

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  6. vs2017 输出 ling to sql 转为执行的sql语句

    在项目视图中,找到->输出 窗口,在窗口中选择ASP.NET Core Web服务器,调试项目即可看到执行的sql语句

  7. MySQL 排错-解决MySQL非聚合列未包含在GROUP BY子句报错问题

    排错-解决MySQL非聚合列未包含在GROUP BY子句报错问题 By:授客 QQ:1033553122   测试环境 win10 MySQL 5.7 问题描述: 执行类似以下mysql查询, SEL ...

  8. C++ map insert 另一个map的子集

    C++map中 会有insert操作,举个例子 存在map A,我们截取一部分到map B中,void insert (InputIterator first, InputIterator last) ...

  9. Cnblogs图片无法上传

      2019年5月28日以前的两三个月时间,使用cnblogs原来的接口时,提示图片无法上传,空间不足,实在没办法了,自己实现了博客代理,发现上传图片时返回了503错误,只好先把图片传到其它服务器,再 ...

  10. pycharm报错:Process finished with exit code -1073741819 (0xC0000005)解决办法

    这个是几个月前的问题了,有小伙伴在CSDN问我咋解决的,那我今天在这边把这个问题解决办法分享下吧,免得大家把很多时间都浪费在安装排坑上面,有些坑虽然解决了还真不知道啥原因. 我的pycharm一直用的 ...