Doxygen替代C ++

虽然doxygen似乎很擅长索引一个大型C ++项目,但我还是有一些主要的抱怨。

  1. 生成的输出是丑陋的,组织得不好。 只是在doxygen网站find一个function通常是一个痛苦。
  2. find标记错误的周转缓慢。 即我必须索引我的整个项目,以发现我在一些函数上使用了错误的语法。
  3. 标记是丑陋的…减价,重组文本,或一些人性化的标记语言会更好。

有没有像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的现代替代品。