doxygen是(事实上的)标准文档语法规范吗?

时间:2010-08-27 05:04:42

标签: c++ documentation doxygen specifications documentation-generation

我们都有记录代码的好习惯,对吧?

如今,代码内文档本身就有一种语法。它几乎就像一种编程语言。问题是:

  • 存在哪些(多少)文档语法规范
  • 是否有标准的文档语法?
  • 谁在定义这个标准?是否有一个官方委员会或机构(就像有一个定义C ++标准)?
  • 或者“doxygen”成为事实上的标准?

很难不听说过doxygen。在我参与的每个开源软件项目中都提到过。但是,看看官方的doxygen网站, doxygen定义任何规格都远非显而易见!我得到的印象当我读到“它可以帮助我的方式”时,doxygen就是一个提取代码内文档并将其呈现在漂亮的HTML页面中的软件。看看doxygen首页,我甚至可以认为doxygen可以使用第三方规范中定义的任何文档语法 并将其解压缩并输出为HTML。

另外,值得注意的是,doxygen网站将doxygen这个词大写,好像它不是他们软件的品牌而是普通名词(好吧,是吗?)

什么是doxygen?

  • 解析引擎?
  • HTML呈现引擎?
  • 可以由第三方软件用来呈现自己的文档的库吗?
  • 文档语法(事实上)规范
  • 以上所有?

我对doxygen和其他代码解析器之间的关系感到特别困惑,例如ANTLRboost-spiritRagel ......

例如,什么是doxygen可以做的,ANTLR不能,并且ANTLR可以做氧吗?

另外,看看Drupal项目。他们有:

  • 他们自己的API module,它是“ Doxygen文档生成器规范子集的实现”。
  • 他们自己的grammar parser module(加上上面的列表,与doxygen本身,ANTLR等等)。
  • 他们自己API web site运行上述两个模块,提供Drupal in-code“doxygen”文档。

因此,采用C ++类比,似乎“doxygen”这个词过载并且在不同的上下文中意味着不同的东西。

在Drupal项目中,“doxygen”并不是指软件,而是指文档语法的(标准?)规范,尽管如上所述,doxygen网站本身的头版并未声称是这样的事情!

所以,我的离别问题是:

是否有其他文档语法规范?

4 个答案:

答案 0 :(得分:31)

  

存在多少(多少)文档语法规范?

几乎每个中型软件开发组织似乎都有自己的。它们通常被列入“编码风格指南”的保护范围内。

  

是否有标准的文档语法?

我所知道的一些标准有广泛的用途。这肯定不是一个全面的清单:

  

谁在定义这个标准?

没有标准。

  

是否有正式的委员会或机构(就像有一个用于定义C ++标准的人)?

并非如此,尽管C#XML文档格式由ECMA管理,ECMA是一个标准组织。

  

或者“doxygen”成为事实上的标准?

Doxygen不是标准。它承认了许多标准。见http://www.doxygen.nl/manual/features.html

通常,大多数人使用doxygen生成他们编写的文档,同时松散地遵循QDoc标准或JavaDoc标准。通常当人们谈论“doxygen”标准时,他们通常意味着QDoc文档样式,以及doxygen扩展的任意使用。我的经验是,大多数使用doxygen的组织并没有非常严格地遵循任何特定惯例,仅仅因为doxygen没有强制执行。

  

...... doxygen定义任何规格都远非显而易见!

不是。

  

doxygen只是一个提取代码内文档并将其呈现在漂亮的HTML页面中的软件。

是的确切。它还支持XML,Latex,RTF和UNIX“man”页面输出。

  

看看doxygen首页,我甚至认为doxygen可以使用第三方规范中定义的任何文档语法并将其解压缩并输出为HTML。

不是,但很多。

  

另外,值得注意的是,doxygen网站没有将doxygen这个词大写,好像它不是他们软件的品牌而是普通名词(好吧,是吗?)

它不是商业产品,迪米特里并不关心品牌。

  

什么是doxygen?

文档生成工具。

  

我对doxygen和其他代码解析器之间的关系特别感到困惑,比如ANTLR,boost-spirit,Ragel ......

那些是解析库。

  

例如,什么是doxygen可以做的,ANTLR不能,并且ANTLR可以做氧吗?

像ANTLR这样的库用于构建软件,而doxygen是用于生成文档的专用工具。因此,虽然您可以使用ANTLR编写文档生成器,但您不希望使用doxygen来构建编译器(我不说不能,因为当然可以,我已经看到了陌生的东西)。

  

是否有其他文档语法规范?

上面已经回答过。

希望这有帮助。

答案 1 :(得分:7)

没有标准。

Doxygen风格几乎是标准的(gcc模板库使用它)。

http://en.wikipedia.org/wiki/Comparison_of_documentation_generators

答案 2 :(得分:4)

你是对的 - Doxygen更像是一个文档提取应用程序而不是“评论标准”本身。它支持许多不同的文档样式 - JavaDoc(带有'@'引入命令),Doxygen变体(带'''引入相同的命令),文档XML以及允许的注释块格式的许多变体。它还能够使用注释的格式来指示什么内容(例如,简要描述不需要被标记,并且可以从文本的第一句或段落中获取等)。

因此,它具有高度可配置性,但允许几乎每个程序员都有自己的风格,从而导致从一个项目到另一个项目的非标准混乱,并且通常在单个项目中的不同注释之间 - 即使它们是由单个项目编写的程序员!好的一面是,只要注释保持在基本样式中,Doxygen就会正确地为您提取文档并将它们全部格式化为一致的外部文档。负面的是,虽然许多程序员“使用doxygen评论”(听起来很标准化),但他们的评论格式往往完全不同。

一个解决方案(对于Visual Studio)至少可以帮助你自己的项目/团队/公司中的这种风格差异,这是我写的一个插件,AtomineerUtils。这有助于您创作和更新Doxygen,JavaDoc和XML文档格式注释 - 它自动生成文档以节省大量时间,并更新注释以使其与代码更改保持同步。在此过程中,它可以重新格式化注释以实现非常一致和可读的样式(以标准格式对条目进行排序,在注释和代码之间以及条目之间强制执行空白行,对条目中的文本进行自动换行等)。用户可以设置模板来精确控制所有这些工作方式,因此很容易实现您想要的样式,但要使其在所有项目中保持一致。当你有多个程序员处理一组代码时,这会大大提高一致性。

如果您在Visual Studio中进行文档编制,我建议使用XML文档格式。它不像Doxygen / JavaDoc样式那样具有人类可读性,但它被IDE用于在您键入时提供代码上的实时智能感知数据,并导出到任何应用程序可以轻松处理的XML文件,这为您提供了更多灵活性。 Doxygen可以使用这种格式构建文档,因此您也可以使用Doxygen工具和XML源注释。

答案 3 :(得分:3)

  

是否有其他文档语法规范?

是的,当然。例如,有JavaDoc(或者说是拼写的)。和Microsoft的XML东西(不过那个叫做)。

然而,似乎doxygen几乎是开源C ++领域的事实标准。当我最初听说doxygen(大约10年前)时,曾经有过其他人,但似乎他们已经消失了。