用Doxygen和Graphviz给Contiki文档添加类图和调用图

本文介绍如何利用Doxygen和Graphviz为Contiki操作系统自动生成数据结构和调用关系图,通过修改配置文件并运行doxygen,帮助开发者更好地理解和阅读源码。
摘要由CSDN通过智能技术生成

目录

如何根据源码绘制数据结构?

在学习Contiki系统的过程中,阅读源码是搞清楚实现细节的最好方法。但直接阅读源码有时候也不是很容易的事情,即便有SourceInsight这样的源码阅读利器帮助,你还是时不时会希望能不能看到类的继承关系?能不能看到函数的调用关系?答案是肯定的,搜了一下网上开源的方案不少,例如在emacs中利用Graphviz绘制数据结构图的使用编译器特性生成CVG格式的数据结构图的、使用Python或者Java实现这一功能的,等等。但最方便,功能最强大的还是Doxygen+GraphvizContiki 是瑞典计算机科学学院的大牛Adam Dunkels 带领团队开发的适用于MCU构成的传感器网络节点的嵌入式操作系统。Contiki麻雀虽小,五脏俱全,集成了uIP协议栈,支持6LoWPAN,代表着传感器网络业界最新的发展方向。其文档也相当的完善,是使用Doxygen自动生成的,但默认没有打开绘制数据结构和调用图的功能,我们只需要将其打开即可,一行代码都不用写。

安装Doxygen和Graphviz

Doxygen和Graphviz都可以从前面给出的官方网站下载源码,Doxygen还可以从github获取。Ubuntu的各个版本都有集成,这里也不用专门定制,就用包管理器直接安装了:

# aptitude install graphviz doxygen

安装完后运行一下dot (graphviz默认用于有向图绘制的工具),确认graphviz能够正常工作:

# dot -V
# dot - graphviz version 2.26.3 (20100126.1600)

修改Doxygen配置文件并运行doxygen

用Doxygen生成html文档非常的简单,只需要设置好配置文件,让Doxygen扫描源码目录,Doxygen便能根据配置生成需要的描述信息并进行组织,使得使用者可以按照软件开发者在代码中提供的注释信息和帮助文档按图索骥。这里我们不需要生成全新的配置文件并进行配置,contiki源码目录下的doc/Doxyfile就是contiki项目所使用的配置文件。我们只需要复制一份到工作目录(例如新建一个my_doc,避免污染源文档目录)并打开相应的选项。配置文件里#开头的为注释,中文为我自己添加的说明。配置选项非常的多,可以参考Doxygen文档config一节 的说明进行配置

# Doxyfile 1.4.1

#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
PROJECT_NAME           = "Contiki 2.6"
PROJECT_NUMBER         = 
OUTPUT_DIRECTORY       = my_doc     #生成的html和latex文档及doxygen的日志会放到这个目录下
CREATE_SUBDIRS         = NO
OUTPUT_LANGUAGE        = English
USE_WINDOWS_ENCODING   = YES
BRIEF_MEMBER_DESC      = YES
REPEAT_BRIEF           = YES
ABBREVIATE_BRIEF       = 
ALWAYS_DETAILED_SEC    = NO
INLINE_INHERITED_MEMB  = NO
FULL_PATH_NAMES        = YES
STRIP_FROM_PATH        = $(docroot)
STRIP_FROM_INC_PATH    = $(docroot)
SHORT_NAMES            = YES
JAVADOC_AUTOBRIEF      = YES
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP         = YES
INHERIT_DOCS           = YES
DISTRIBUTE_GROUP_DOC   = NO
TAB_SIZE               = 8
ALIASES                = 
OPTIMIZE_OUTPUT_FOR_C  = YES    # Contiki主要是C代码,所以C-YES,Java-NO
OPTIMIZE_OUTPUT_JAVA   = NO
SUBGROUPING            = YES
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值