打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Doxygen 文档注释详解
    大家在平时的编程过程中,都会在代码中插入一些注释,对文件,类,函数,全局变量等进行简单说明.项目完成后,一般也要编写项目的文档,如何利用源代码及其中的注释,自动生成图文并茂的文档,就是下面要介绍的.

1 工具

    文档自动生成的工具软件,除了商业化的如Rational SoDA等,更有开源的Doc++和Doxygen等. 本文主要介绍功能全面的Doxygen.
    Doxygen可以对C++, C, Java, Python等语言进行解析并生成HTML,LaTeX,RTF,man page,XML等格式的文档.

    除了必备的Doxygen (http://www.stack.nl/~dimitri/doxygen/), 如果你还想生成漂亮的类图等,还需要下载graphviz (Doxygen 采用的绘图工具,http://www.graphviz.org/Download..php).


2 Doxygen 的注释格式

    Doxygen 的注释格式十分灵活.可以是JavaDoc, Qt和仿c++风格, 并且可以混合使用. 如果你熟悉Doc++,就按照你以前的风格写好了:). 下面对每种风格简单举例:

-- JavaDoc风格:
/**
* your comment text.
*/
-- Qt风格:
/*!
* your comment text.
*/
-- 仿c++风格:
///                               //!
/// your comment text.      或者: //! your comment text.
///                               //!

    因为我一直喜欢用c++的单行注释风格(即'//'),所以下面举例就以仿c++风格为例. 下面注释中的'@'和'\'等价,可以根据爱好选用.
    因为是在头文件中定义接口,所以注释也就主要集中于头文件中. 如果你想在实现文件中注释,其效果和在头文件中是一样的.下面就举一个实例.

备注:a) '#' 后面的注释是我加的简单解释.不属于文档注释内容.
     b) Doxygen 允许一条简短注释,加上一条详细注释.其格式也是多样的. 一般,在 JAVADOC_AUTOBRIEF = NO时,简短注释(///@brief )后空一行,然后再是详细注释. 当 JAVADOC_AUTOBRIEF = YES时,并且简短注释以第一个句号结束,句号后跟一空格(即'. ');或者是新起一行,就可以写详细注释了.示例如下:

# 简短注释. 详细注释.
/// Brief description which ends at this dot. Details follow
/// here.

    c) 如果同一代码条目在声明和定义处都有简短注释和详细注释, 则文档只采用声明前的简短注释和定义前的详细注释.
    d) 如果是在行尾注释变量,参数等,在你选用的注释格式后面加上'<', 如: ///<行尾的注释.


----------------------------- Example Begin ---------------------------------
# 文件的注释格式
# 注释文件,格式: ///@file 文件名 文件的简短注释.
///@file socket_c.h head file of class socket_c.
# 文件的详细注释.
///Define the interface of class socket_c.
# 普通注释,不会生成在文档中.
//$Id: socket_c.h 287 2004-06-28 06:20:41Z horin $

# 类的注释,格式: ///@brief 简短注释内容.
///@brief class of server socket.
class socket_c
{
private:

public:
    # 函数的注释格式
    # 函数的注释,格式: ///@brief 函数的简短注释.
    ///@brief handle the connections of clients.
    # 参数注释,格式: ///@param 参数的简短注释.
    ///@param server the server ip address.
    ///@param serv_port the server #port.
    # 返回值注释,格式: ///@return 返回值的简短注释.
    ///@return connected socketfd.
    # 具体返回值的注释,格式: ///@retval 返回值 该返回值的注释.
    ///@retval connfd on success.
    ///@retval 0 on EINTR - system call.
    ///@retval -1 on error.
    # 参见...,格式: ///@see 参见的类/文件等.
    ///@see main_ppc.cpp
    int accept_client(const int listenfd);
};

# 自定义类型的注释
///@brief structure of child process.
struct child_proc_s
{
    # 行尾的注释,格式: ///< 注释内容.
    pid_t child_pid;    ///<child process id.
    int child_pipefd;    ///<parent's stream pipe to/from child.
};

# 全局变量的注释,也可以采用上面的行尾格式进行注释.
///gloable variable for signal.
pid_t g_pid = 0;
----------------------------- Example End ---------------------------------


3 配置文件的生成与修改

    Doxygen的功能强大,配置选项也十分多. 如果是命令行模式, 有些不便. 因此建议使用GUI的Doxywizard(可以从<开始>菜单中运行). 下面就对我个人认为比较重要的选项,并结合实例 (生成html文档) 进行简单说明.
    下面列出的一般是需要修改的,未列出的我采用缺省值.

# Project选项
#---------------------------------------------------------------------------
# Staff_TPC是生成文档的项目名,会显示在文档中.
PROJECT_NAME           = Staff_TPC
PROJECT_NUMBER         = 1.0    # 项目版本号
# 生成文档的输出路径
OUTPUT_DIRECTORY       = "f:/My Documents/cpp/horin/staff/"
# 生成文档的语言,缺省是English,也可以是简体中文等.
OUTPUT_LANGUAGE        = English
JAVADOC_AUTOBRIEF      = YES    # 打开此选项.

# Build 选项
#---------------------------------------------------------------------------
SHOW_INCLUDE_FILES     = NO        # 不显示所有包括的文件.

# input 选项
#---------------------------------------------------------------------------
# 要生成文档的源文件的路径. 如果是一个目录,则是该目录下的所有文件; 当然,也可以
# 是具体的某个文件.
INPUT                  = "f:/My Documents/cpp/horin/staff/tpc/"
# 输入文件的匹配模式,下面是c / c++语言的设置.
FILE_PATTERNS          = *.c \
                         *.cpp \
                         *.h \
                         *.hpp
RECURSIVE              = YES    # 需要递归处理子目录.

# source browser选项
#---------------------------------------------------------------------------
# 如为SOURCE_BROWSER和INLINE_SOURCES都设置为YES, 则生成的文档中会包括源代码
# (即.cpp文件),这可以方便阅读时查看源代码.
SOURCE_BROWSER         = NO
INLINE_SOURCES         = NO
STRIP_CODE_COMMENTS    = YES    # 忽略普通的文档注释.
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION    = YES
VERBATIM_HEADERS       = YES

# HTML 选项
#---------------------------------------------------------------------------
GENERATE_HTML          = YES    # 需要生成html格式的文档.
GENERATE_HTMLHELP      = YES    # 需要生成windows HTMLHELP格式的目录,以方便阅读.
GENERATE_TREEVIEW      = YES    # 需要生成树视图,以方便阅读.

# LaTeX 选项
#---------------------------------------------------------------------------
GENERATE_LATEX         = NO        # 不需要生成LaTeX输出.

# dot 选项 # 此选项是生成图形,建议(需要)安装graphviz.
#---------------------------------------------------------------------------
CLASS_DIAGRAMS         = YES
HIDE_UNDOC_RELATIONS   = YES
HAVE_DOT               = YES    # 已经安装graphviz.打开此选项.
CLASS_GRAPH            = YES    # 生成类图
COLLABORATION_GRAPH    = YES    # 生成协作图
UML_LOOK               = NO

    在上面根据自己的需要对各个选项进行了配置,下面很重要的一步,就是把配置保存下来. 呵呵,这是大家最擅长的了. 可以命名配置文件为Doxygen-YourName.txt, 今后只需修改project和input选项,即可重用.


4 文档的生成

    在Doxywizard中打开上面的配置文件Doxygen-YourName.txt, 根据需要修改project和input选项(也可以在文本编辑器中直接修改Doxygen-YourName.txt), 点击菜单Doxygen->Run(ctrl+r),稍微休息一会,你就可以看到在OUTPUT_DIRECTORY路径下生成了一个html的子目录.该子目录下就是你需要的文档. 运行index.html文件, 是否见到了你想要的.很有可能,还见到了你意想不到的.


5 Doxygen的其他用途

    Doxygen配合graphviz, 可以生成UML设计图形,如类图,协作图. 如你拿到一份源代码,因为类的关系复杂,或者没有文档, 此时你就可以利用Doxygen来进行简单的反向工程了.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Doxygen 1.7.4 安装配置指南(windows)
Doxygen简单经验谈。。。
这个神器可以提取你代码中的关键信息生成技术文档(附下载链接)
Ubuntu下使用Doxygen
doxygen+VIM文档实用指南for C/C-liked Programmers
doxygen 命令行
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服