【原创】利用doxygen来管理项目文档或注释

王朝学院·作者佚名  2016-05-25
窄屏简体版  字體: 小  |  中  |  大  |  超大  

【原创】利用doxygen来管理项目文档或注释一、doxygen应用场景:doxygen可以用来管理目前主流的编程语言的注释而形成文档系统。(包括C, C++, C#, Objective-C, IDL, java, VHDL, php, Python, Tcl, Fortran等)。doxygen官网地址(http://www.doxygen.nl/)近来大部分时间花在api接口的维护上面,其中比较重要的一个环节就是你写的接口如何让调用者一目了然的理解用法。不管是内部无线服务端与客户端之间的配合,还是对外开放的API接口,都一样。花了几天时间尝试了下使用doxygen结合svn hook来管理接口文档还是很方便实用的。doxygen官网自己本身其实就是利用doxygen来做的,如果大家想要看更具体的效果,就可以直接参考http://www.doxygen.nl/。以下先贴出我自己做出来的部分效果图,UI很挫,大家真正使用时可以让公司UI部门美化下,由于我目前还主要是内网使用,因此没有去过多考虑UI体验:

二、安装:doxygen目前已经比较全面的支持了windows、mac ox、linux等主流系统。而且基本上使用于目前所有的主流编程语言。这里简要介绍下自己在Ubuntu系统下面的源码编译安装过程。其余安装方法可以参考官网。下载ubuntu14.04适用的doxygen源码。官网当中download选项里面有专门适用ubuntu的版本下载。下下来的源码包命名格式大致如:doxygen-{doxygen版本号}.src.tar.gz解压。命令如下:

gunzip doxygen-$VERSION.src.tar.gz tar xf doxygen-$VERSION.src.tar

环境检查,要安装doxygen,在ubuntu下面需要部分依赖的支持。进入解压后的目录里面,里面有个./configure 的shell脚本。 执行命令:sh ./configure 进行安装环境检查,里面会列出一些你当前系统已经满足要求的 和缺少的依赖。在ubuntu下面你 可以简单的利用 sudo apt-get install xxxx(依赖名称),来逐个把缺少的依赖都装上。这步也很快的。

接下去就是、sudo make 和 sudo make install了。 如果在make或者 make install的过程中有提示缺少什么东西的话。sudo apt-get install xxx装上即可。

完事之后,在命令行下面试试看执行命令:doxygen --version 。 如果出来版本号,说明已经安装成功。

补充说明:关于make 和 make install。我个人比较喜欢直接make后使用源码包里面的 xxx/bin/doxygen 命令来生成文档, 而不去安装。 因为后期真正使用其来生成文档的时候会发现我们需要改掉里面很多默认的东西(当然不改也是完全可以的,并非不能用)。 这个时候你可以去找到刚才解压的源码包里面xxx/src/ 下面的源码文件,找到执行对应功能模块的.cpp文件(c++写的源码),你直接可以自己去修改里面的c++文件,然后重新用make编译。 这样就可以把doxygen改为任何你自己想要的效果。举个简单的例子:doxygen默认检查你代码后function都叫做函数。而在api接口中,我更希望一个function叫做一个接口,而不是叫做一个函数。 其他修改类似。

三、使用doxygen之配置文件的配置:doxygen的使用可以说就是对配置文件的配置,就是说,你只要稍微配置一下配置文件,再执行一下命令: xxxx/doxygen xxxx.conf 就可以生成你想要的文档(这里doxygen提供了多种格式的文档,我主要用的是html的,这样我们可以自己配置一个web服务到这个html上面,就可以再web上面使用文档了。),doxygen提供了200多个配置项,通过配置文件就已经可以完成丰富的功能了,下面举一些常用的配置说明:

利用命令xxx/doxygen -g 就会在当前目录下面产生一个默认配置文件 doxygen.conf。打开默认配置文件,你会发现里面每一个配置项都是 配置名 配置值 这样的key-value格式,如果你有一定的英文功底的话,配置基本上就不是什么问题了。配置的详细说明请参考:http://www.stack.nl/~dimitri/doxygen/manual/config.htmlABBREVIATE_BRIEF //简短摘要ALIASES //别名ALLEXTERNALS//所有外部文档ALPHABETICAL_INDEX//字母顺序索引ALWAYS_DETAILED_SEC//详细描述部分BINARY_TOC//二进制操作

BRIEF_MEMBER_DESC//简短的成员描述CALL_GRAPH//调用到的图CASE_SENSE_NAMES//检测的范例的名字CHM_FILE//CHM格式文件CLASS_DIAGRAMS//类-表CLASS_GRAPH //类-图DOT_PATH //DOT路径设置DOT_TRANSPARENT //DOT转换设置DOTFILE_DIRS //DOTFILE 列表显示ENABLE_PREPROCESSING//允许"预处理"指令ENUM_VALUES_PER_LINE //每行的枚举值ENABLED_SECTIONS//允许分段显示EXAMPLE_PATH //例子路径EXAMPLE_PATTERNS//例子用的文件格式(*.cpp, *.h , *.java等)EXAMPLE_RECURSIVE //例子递归COLLABORATION_GRAPH //相互调用关系图COLS_IN_ALPHA_INDEX//以列形式显示的字母顺序的索引COMPACT_LATEX//压缩的LATEX文档COMPACT_RTF//压缩的RTF文档CREATE_SUBDIRS//创建一个"子目录"DETAILS_AT_TOP//文档的详细头部DIRECTORY_GRAPH //目录图DISABLE_INDEX //禁用INDEXDISTRIBUTE_GROUP_DOC//禁用文档成组显示DOT_IMAGE_FORMAT//点阵图形DOT_MULTI_TARGETS//多个DOT目标EXCLUDE //可执行文件EXCLUDE_PATTERNS//可执行文件格式(*.exe, *.dll等)EXCLUDE_SYMLINKS //可执行的SYMLINKSEXPAND_AS_DEFINED //规定的扩展EXPAND_ONLY_PREDEF//预定义扩展EXTERNAL_GROUPS //使用到的外部的文件EXTRA_PACKAGES //使用到的外部插件包EXTRACT_ALL //提取所有EXTRACT_LOCAL_CLASSES //提取所有本地类EXTRACT_LOCAL_METHODS//提取所有本地方法EXTRACT_PRIVATE //提取所有privateEXTRACT_STATIC //提取所有staticFILE_PATTERNS //文件路径FILE_VERSION_FILTER //文件版本控制FILTER_PATTERNS //控制格式(主版本:第1次版本:第2次版本号)FILTER_SOURCE_FILES //原文件的版本控制FULL_PATH_NAMES //全路径名GENERATE_AUTOGEN_DEF //生成自动定义文件形式GENERATE_BUGLIST //生成BUG列表GENERATE_CHI //生成"希腊字母"GENERATE_DEPRECIATEDLIST//生成"评估"列表GENERATE_HTML //生成HTMLGENERATE_HTMLHELP //生成HTMLHELPGENERATE_LATEX //生成LATEXGENERATE_LEGEND //生成图例GENERATE_MAN //生成MAN文件GENERATE_PERLMOD //生成Perl脚本GENERATE_RTF //生成RTFGENERATE_TAGFILE //生成标志文件GENERATE_TESTLIST //生成TESTLISTGENERATE_TODOLIST //生成TODOLISTGENERATE_TREEVIEW //生成树状视图显示GENERATE_xml //生成XMLGRAPHICAL_HIERARCHY //继承图表GROUP_GRAPHS //组-图HAVE_DOT //隐藏DOTHHC_LOCATION //隐藏位置HIDE_FRIEND_COMPOUNDS//隐藏"复合的"友员类型HIDE_IN_BODY_DOCS //隐藏文档的主体HIDE_SCOPE_NAMES //隐藏"作用域"名HIDE_UNDOC_CLASSES //隐藏"未归档"的所有CLASSHIDE_UNDOC_MEMBERS //隐藏"未归档"的所有的成员HIDE_UNDOC_RELATIONS//隐藏"未归档"的关系HTML_ALIGN_MEMBERS //HTML文档中成员对齐方式HTML_FOOTER //HTML脚注设置HTML_HEADER //HTML头部设置HTML_OUTPUT //HTML输出设置HTML_STYLESHEET //HTML样式设置IGNORE_PREFIX //忽略哪些前缀IMAGE_PATH //图片的路径设置INCLUDE_GRAPH //包含-图INCLUDE_PATH //头文件包含的路径INHERIT_DOCS //文档的继承关系INLINE_INFO //内联信INLINE_INHERITED_MEMB//通过"继承"得到的内联成员INLINE_SOURCES //内联部分的源代码INPUT //输入设置INPUT_FILTER //能够接受的输入文件的扩展名格式设置(重要)INTERNAL_DOCS //内部文档JAVADOC_AUTOBRIEF //JAVADOC工具生成的文档的"自动摘要"LATEX_BATCHMODE //LATEX匹配方式LATEX_CMD_NAME //LATEX 命令名LATEX_HEADER //LATEX 头部LATEX_HIDE_INDICES //LATEX内部隐藏的包含LATEX_OUTPUT //LATEX输出MACRO_EXPANSION //宏展开设置(重要)MAKEINDEX_CMD_NAME //MAKEINDEX命令索引MAN_EXTENSION //MAN扩展MAN_LINKS //MAN 链接设置MAN_OUTPUT //MAN输出设置MAX_DOT_GRAPH_DEPTH//DOT图的最大深度MAX_DOT_GRAPH_HEIGHT //DOT图的最大高度MAX_DOT_GRAPH_WIDTH //DOT图的最大宽度MAX_INITIALIZER_LINES //最大初始化行MULTILINE_CPP_IS_BRIEF //多 个CPP文件的简短描述MULTILINE_CPP_IS_BRIEF //多 个CPP文件的简短描述OPTIMIZE_OUTPUT_FOR_C //对C采用的优化设置OPTIMIZE_OUTPUT_JAVA//对JAVA采用的优化设置OUTPUT_DIRECTORY //输出路径设置(重要)OUTPUT_LANGUAGE //输出语言设置(重要)PAPER_TYPE //纸张类型PDF_HYPERLINKS //PDF格式超链接设置(重要)PERL_PATH //perl路径设置PERLMOD_LATEX //perlmod LATEXPERLMOD_PRETTY // perlmod PRETTY(漂亮/相当)PERLMOD_MAKEVAR_PREFIX//perlmod MAKE文件版本 PREFIXPREDEFINED //预先定义(重要)PROJECT_NAME //工程名(重要)PROJECT_NUMBER //工程的组成成员(重要)QUIET //静态量设置(重要)RECURSIVE //递归和循环REFERENCED_BY_RELATION//交叉参考(重要)REFERENCES_RELATION //交叉参考的关系REPEAT_BRIEF //重新设置"简短说明"为打开状态RTF_EXTENSIONS_FILE //RTF展开文件RTF_HYPERLINKS //RTF超链接RTF_OUTPUT //RTF输出设置RTF_STYLESHEET_FILE //RTF样式文件SEARCH_INCLUDES //搜索时需要包含什么(重要)SEARCHENGINE //搜索引擎设定(重要)SHORT_NAMES //使短文件名生效SHOW_DIRECTORIES //显示目录SHOW_INCLUDE_FILES //显示包含文件(一般NO,否则太大)SHOW_USED_FILES //显示被用到的文件(一般YES)SKIP_FUNCTION_MACROS //跳过函数中的宏(重要),菜鸟最好别跳SORT_BRIEF_DOCS //文档的简短摘要SORT_MEMBER_DOCS //成员的简短描述SOURCE_BROWSER //原文件浏览路径STRIP_CODE_COMMENTS//排除哪些条码形式注释(重要)STRIP_FROM_INC_PATH //排除哪些头文件包含的注释(重要)STRIP_FROM_PATH //排除哪些条码路径设置SUBGROUPING //子组设置(重要)TAB_SIZE //TAB符SIZE设置(重要)TAGFILES //标志文件TEMPLATE_RELATIONS //模板关系设置(重要)TOC_EXPAND //TOC扩展TREEVIEW_WIDTH //树状图显示的宽度设置(重要)UML_LOOK //UML外观设置(重要)USE_WINDOWS_ENCODING//使用windows系统的编码形式(重要)VERBATIM_HEADERS //VERBATIM头部(头文件)WARN_FORMAT //警告格式指定(重要)WARN_IF_DOC_ERROR //如果文档出错则显示警告WARN_IF_UNDOCUMENTED//如果是未归档文件则显示警告WARN_LOGFILE //警告日志文件设置WARN_NO_PARAMDOC //无参数文档警告形式设定WARNINGS //警告设置(重要)XML_DTD //XML文件类型定义(重要)XML_OUTPUT //XML输出设置(重要)XML_PROGRAMLISTING //XML程序列表(重要)XML_SCHEMA //XML模式设置(重要)

四、doxygen配置完成后注释的书写当你配置好doxygen后,今后你基本上的时间都是花在你代码当中的注释的书写和维护。想要利用doxygen来管理文档。那么代码的注释就必需严格要求。下面是我所用到的常用注释的书写要求,其他的更多请参考:http://www.stack.nl/~dimitri/doxy

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航