Doxygen替代C ++
虽然doxygen似乎很擅长索引一个大型C ++项目,但我还是有一些主要的抱怨。
- 生成的输出是丑陋的,组织得不好。 只是在doxygen网站find一个function通常是一个痛苦。
- find标记错误的周转缓慢。 即我必须索引我的整个项目,以发现我在一些函数上使用了错误的语法。
- 标记是丑陋的…减价,重组文本,或一些人性化的标记语言会更好。
有没有像C ++支持良好的工具? Doxygen为C ++编制索引的能力实际上是非常有用的……这只是它提供信息的方式,而且在评论中需要难以处理的标记,这是一个很难处理的问题。
Doxygen 1.8添加了Markdown支持,如此处所述 ! (我知道这不是一个select,但这是一个很大的消息,我希望它从评论中脱颖而出)。
你可以尝试DOC ++,但我相信它更丑。 你最好的select可能是调整Doxygen的设置:
- 启用GraphViz(好的调用图或UML图,如果您启用这些开关)
- 添加页眉/页脚到页面
- 使用CSS来设置页面的样式
- 生成包含索引和search的CHM(Windows帮助文件)
您可能感兴趣的一些交换机:
- 一般
-
QT_AUTOBRIEF
避免input@brief
-
OPTIMIZE_OUTPUT_FOR_C = NO
-
OPTIMIZE_OUTPUT_JAVA = NO
-
EXCLUDE
一些丑陋的文件或第三方来阻止
-
- 样式HTML
-
HTML_HEADER
-
HTML_FOOTER
-
HTML_STYLESHEET
-
- CHM帮助文件
-
CHM_FILE
-
- GraphViz的
-
HAVE_DOT
-
- 图表
-
CLASS_DIAGRAMS
-
CLASS_GRAPH
-
UML_LOOK
-
doxygen有一个新的开源替代品,叫做cldoc: http ://jessevdk.github.io/cldoc/。
它可以同时处理c和c ++,并基于clang。 我只是复制粘贴它提供的最有趣的function:
- 使用clang,即使是最复杂的C ++项目,也无需用户额外的努力即可完成parsing。
- 使用减价文档格式。
- 使用简单的格式来logging您的代码。
- 支持文档中的交叉引用。
- 生成一个文件,基于JavaScript的Web应用程序来呈现文档。
- 快速客户端search使用预生成的search索引。
Sphinx通过C ++域支持C ++项目的文档。 它使用reStructuredText作为标记语言。
从网站:
以下function存在,工作正常,可以在Python文档中看到“正在运行”:
- 输出格式:HTML(包括Windows HTML帮助),LaTeX(用于可打印PDF版本),手册页,纯文本
- 广泛的交叉引用:语义标记和function,类,引用,术语表和类似信息的自动链接
- 分层结构:文档树的简单定义,自动链接到兄弟姐妹,父母和孩子
- 自动索引:通用索引以及模块索引
- 代码处理:使用Pygments荧光笔自动突出显示
- 扩展:自动testing代码片段,包含来自Python模块的文档(API文档)等等
对于第二点:(缓慢find标记错误,即我必须索引我的整个项目,以find我在一些函数上使用了错误的语法)…..
我刚刚创build了一个shell脚本来在一个文件上运行Doxygen,我可以在IDE中运行这个脚本来解决这个问题,所以我可以在logging单个文件的同时不断运行并重新运行它。
假设你在当前目录中有你的“Doxyfile”,运行它的脚本只是“adding_doc.cpp”,看起来像
cp Doxyfile tmp_doxy echo INPUT = $1 >> tmp_doxy doxygen tmp_doxy
叫做像
dofile adding_doc.cpp
如何将你的IDE与你的IDE集成取决于你(parsing文件名variables等)。
还有一个类似的问题( 为什么是doxygen如此不友好的移动 ),它有一个我觉得有用的答案。 在github上有一个名为doxygen-bootstrapped的项目,它使用doxygen文档的bootstrap。 它并没有解决所有的问题,但它确实允许更好地控制HTML输出格式。
如果你对追踪大项目感兴趣,那么我会build议Netbeans的 c ++版本,它可以dynamic生成良好的调用图(寻找“显示调用图”function)。
我select的武器是NaturalDocs 。 它有它的疣,但输出是体面的,标记是轻松的。
Doc-o-matic可以同时处理C ++和C#,但是相当昂贵。 输出是灵活的和漂亮的。 当我在2009年使用它时,它已经(并且可能还有)几个使我疯狂的bug,但有一些经验,你知道这个解决方法。 由于似乎还没有任何好的替代品,我仍然会推荐它。
DoxyPress是doxygen的现代替代品。