使用doxygen可以从源码中生成标准化的代码文档,包括注释、类结构、类图、类继承关系和函数间的交叉引用关系等信息。 这使得我们只需维护好源码,就可以随时获得最新的代码级的文档(区别于游戏逻辑流程文档)。
doxygen的使用很简单,只要维护好一份配置文件,就可以生成多种格式的文档,比如html,rtf等,命令行输入doxygen config-file。我们所要做的就是在平时按照doxygen所要求得格式书写注释,可谓是一劳永逸:)
注释方法简单介绍:
doxygen的注释风格标准可以选择Qt和JavaDoc风格,我建议使用Qt风格,毕竟是C++的注释。
注释风格如下:
/*!
对函数或类的说明在这里书写
可以对函数的参数做如下说明:
/param a a的说明
/param b b的说明
也可对返回值进行说明
/return 各种返回值的说明
*/
后面是要注释的代码(通常是类或函数)
对于类中的成员变量,如上书写的话可能会使得代码不够直观和整齐,可使用/*!<comments*/来进行注释。
例如:
/*!
A类的详细说明
*/
class A{
public:
int b; /*!< b的说明 */
private:
int a; /*!< a的说明 */
};
可以对某个文件进行说明:/*! /file filename 说明文字*/
被注释过的内容才被认为是文档化过的,无论文件还是数据成员。
另外,在注释块中可以书写html标记进行格式化。
由上可见,使用doxygen并不需要我们做额外的工作来的得到这些令人激动的文档,对于具有良好注释书写习惯的
程序员来讲几乎是无代价的。
有了以上的基础,我们就可以书写注释,用以生成文档。
另外,doxygen提供了一些注释中的标记来帮助我们管理代码和生成更丰富的文档,比如:
/todo 要做的事
/bug 此处代码有缺陷
doxygen会在最终的文档中列出相应项目的列表,一目了然。
类似的标记还有很多,大家可以查阅doxygen的文档。这些标记可以组合成很有用的东东,生成更为丰富的文档。
大家以后可以相互分享一下使用doxygen的经验和小技巧。
关于版本:
cygwin下的doxygen最新版本为1.2.18。
我下载了windows版的doxygen,最新版本为1.4.1,之所以选择在win32平台下,是因为可以使用ATT的Dot工具来
配合doxygen生成更为专业的类图。
大家需要安装doxygen和Graphviz(包含Dot工具)
doxygen使用的配置文件:
可以用doxygen -g filename来生成默认的配置文件,然后我们在此基础上进行修改来适应需要。
配置文件结构虽然复杂,但其实要改的配置项不是很多,我通读了配置文件,把我们经常要修改的配置选项说明如下:
PROJECT_NAME 工程的名字,显示在文档的首页。
PROJECT_NUMBER 工程版本号,可对应于svn-version。
OUTPUT_DIRECTORY 文档输出路径。
OUTPUT_LANGUAGE 文档的语言,默认为English。虽然相应的专有名词也变成了中文,但为了方便显示
中文注释,还是建议使用Chinese。
TAB_SIZE TAB的长度,按各自喜好修改。默认为8。
EXTRACT_ALL 设置为YES。由于我们的代码最初没有按照doxygen格式书写,所以都是没有文档化的。
如果为NO,,则只对文档化过的文件和数据成员生成文档。默认为NO。
EXTRACT_PRIVATE 设置为YES,对私有成员也生成文档。默认为NO。
EXTRACT_STATIC 设置为YES,对静态变量也生成文档。默认为NO。
FILE_PATTERNS 要生成文档的文件类型。我们设置值为 *.cpp and *.h。
RECURSIVE 对指定目录的子目录中的文件也生成文档。
EXCLUDE 要出去的目录和文件。我们设置为.svn。
SOURCE_BROWSER 设置为YES,可显示代码的交叉引用关系。默认为NO。
ALPHABETICAL_INDEX 设置为YES,可生成所有组合类型的字母表索引。默认为NO。
COLS_IN_ALPHA_INDEX 字母索引表分几列显示,[1,20]。默认为5
GENERATE_LATEX 生成LateX类型文件,默认为YES。
INCLUDE_PATH 除制定目录外的头文件路径。
PREDEFINED 可定义预处理宏,于gcc -D类似。
HAVE_DOT 如装了Graphviz可设置为YES,将会生成更好的类图。
TEMPLATE_RELATIONS 设置为YES,可显示模版和其实例的继承、组合关系图。默认为NO。
UML_LOOK 以UML标准格式生成类继承和组合图。
DOT_PATH Dot工具的目录,如包括在path环境变量中,不用指定。
基本的配置信息就如上所示,生成的文档约丰富,运行所需的时间就越长,可酌情配置。
我也只是对配置大概了解,具体的需要还是要仔细看doxygen的文档:P
按照我所述的内容,就可以生成一份看得过去的文档了。
附件为一个使用doxygen的简单示例,包括了代码文件、配置文件,以及最终的文档。大家可以看看效果。
希望大家都能喜欢上doxygen,自觉书写规范注释。