Doxygen与Javadoc的比较

67

我刚从CACM的一篇文章中意识到Doxygen也可以与Java(以及其他几种语言)一起使用。但是Java已经拥有Javadoc工具。请问有人能够解释一下两种方法的优缺点吗?它们是否是互斥的?是否有适用于Doxygen的Maven插件?

4个回答

77

Doxygen具有许多JavaDoc无法提供的功能,例如层次结构和合作上下文的类图,更多的摘要页面,可选的源代码浏览(与文档交叉链接),额外的标签支持,例如单独页面上的@todo标签,并且可以生成TeX和PDF格式的输出。它还允许大量的视觉自定义。

由于Doxygen支持标准的JavaDoc标签,您可以在任何具有JavaDoc注释的源代码上运行Doxygen。即使没有文档,图表和源代码浏览也可以帮助理解代码,因此通常甚至可以在没有JavaDoc的源代码上运行Doxygen。由于JavaDoc工具忽略未知标记,因此甚至可以使用其他Doxygen标记而不会破坏JavaDoc的生成。

说了这么多,我必须承认我很久没有使用过Doxygen了。现在我往往非常依赖我的IDE来提供相同的可视化效果,我通常不会将JavaDoc作为HTML页面阅读,而是导入源文件到我的IDE中,以便它可以生成JavaDoc flyout并且我能够跳转到定义。那比Doxygen提供的功能更强大。如果您想在IDE之外拥有文档,并且愿意运行非Java工具,则值得尝试Doxygen,因为它不需要更改您的Java代码。


使用Maven,您可以使用站点插件聚合Javadocs并进行交叉链接。此外,还有一个UML doclet可用,它生成您所提到的类图。对于大型项目,Doxygen可能非常缓慢,并且需要跳过一些障碍才能使其更快。 - spy
Doxygen是否兼容{@link #myMethod(MyArgType)}{@link #myMethod}语法? - Top-Master

18

如果你是Java的新手,并且之前用过Doxygen,那么我只会建议你在Java中使用Doxygen,这可以减少你使用javadoc时所遇到的学习曲线。 如果你以前没有使用过Doxygen,我建议你使用javadoc,因为它是专门为Java设计的。 如果你两个都不知道,而且你在C ++(或其他支持的语言)中的工作量与Java相同,那么Doxygen是一个很好的选择,因为你可以将其用于两种语言。

这两个工具都易于使用,并且具有类似的功能集。 它们都有NetBeans和Eclipse的插件(或预构建组件),使生成文档更快捷。 在每个工具使用的注释风格中,有很多重叠之处,但它们并不完全相同,因此在混合使用时可能存在困难(你必须了解两者的详细信息,并略去任何特定于某一方的功能)。 我从未使用过它,但似乎存在一个Doxygen的Maven插件


1
这是 Doxygen Maven 插件的链接:http://khmarbaise.github.io/doxygen-maven-plugin/ - Ashwin Krishnamurthy

4

我喜欢 Doxygen 的这个优点:文档可以显示在同一页上,包括类图。此外,如果需要的话,您还可以直接链接到源代码。不过,我并不确定 javadoc 是否具有这些功能。


1
是的,Javadoc也可以有类图:http://www.yworks.com/en/products_ydoc.htm(不过需要付费……我记得还有另外一款类似的免费工具) - VonC
1
http://java.dzone.com/articles/reverse-engineer-source-code-u - Dan Dyer
你可以使用免费的APIViz doclet(http://code.google.com/p/apiviz/)在javadoc中生成类图。 - Ewen Cartwright
http://www.umlgraph.org/ 是一个 Maven Graphviz 插件。 - spy

3
JavaDocs的一个巨大优势是它的易用性。构建和查看JavaDocs所需的所有内容都包含在JDK中,而您已经需要安装JDK来编译程序。
另一方面,Doxygen设置可能会很麻烦,需要正确设置才能生成PDF、RTF和DocBooks,以及HTML。默认情况下,HTML的组织方式不如JavaDocs好,因为index.html默认情况下会带来一个空白页面。此外,内联类和静态成员可能需要特殊标志才能包含在文档中,如果您想生成PDF,则可能需要处理Linux发行版没有所需的pdflatex命令的问题(例如,Ubuntu/Mint最近出现了问题),因此,即使是简单的程序,您只需apt-get安装并运行也可能会得到满屏的错误。与自动安装API时轻松获取javadoc相比,Doxygen设置可能是一种痛苦的体验。但是,一旦克服了这些障碍,它应该更灵活地处理涉及不止Java的项目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接