我刚刚从CACM中的一篇文章中意识到,Doxygen也可以与Java(以及其他几种语言)配合使用。但是Java已经有了Javadoc工具。有人能解释一下这两种方法的利弊吗?它们相互排斥吗?Doxygen有Maven插件吗?
Doxygen有许多JavaDoc没有提供的功能,例如层次结构和合作上下文的类图、更多的摘要页面、可选的源代码浏览(与文档交叉链接)、额外的标签支持,如在单独的页面上的@todo,它可以生成TeX和PDF格式的输出。它还允许大量的视觉定制。
由于Doxygen支持标准的JavaDoc标记,您可以在任何带有JavaDoc注释的源代码上运行Doxygen。在没有JavaDoc的情况下运行源代码通常是有意义的,因为即使没有文档,图表和源代码浏览也有助于理解代码。由于JavaDoc工具忽略了未知标记,您甚至可以在不中断JavaDoc生成的情况下使用额外的Doxygen标记。
说了这么多,我必须承认我已经很长时间没有使用Doxygen了。现在,我倾向于严重依赖我的IDE来提供相同的可视化,我通常不会将JavaDoc作为HTML页面来阅读,而是将源文件导入到我的IDE中,这样它就可以生成JavaDoc弹出按钮,我就可以跳到定义中。这比Doxygen所能提供的还要强大。如果您想在IDE之外拥有文档,并且乐于运行非Java工具,那么Doxygen值得一试,因为它不需要对Java代码进行任何更改。
只有当您是Java新手并且以前使用过Doxygen时,我才会将Doxygen与Java一起使用,从而减少了使用javadoc时的学习曲线。如果您以前没有使用过Doxygen,我会坚持使用javadoc,因为它是专门为Java设计的。如果你不知道其中任何一种,并且你像使用Java一样使用C++(或其他受支持的语言),Doxygen是一个不错的选择,因为你可以将其用于这两种语言。
这两种工具都很容易使用,具有相似的功能集。两者都有用于NetBeans和Eclipse的插件(或是预建的),这使得生成文档的速度更快。每个人使用的评论风格有很多重叠,但它们并不完全相同,因此很难将它们混合在一起(你必须知道和的详细信息,忽略其中一个特定的任何功能)。我从未使用过它,但似乎确实有一个用于Doxygen的Maven插件。
我喜欢这样一个事实,即使用Doxygen,您可以在与文档相同的页面上显示类图。此外,如果需要,我喜欢它将您直接链接到源代码。不过,我不知道javadoc是否具有这些功能。
JavaDocs的一大优势是它们可以正常工作。构建和查看它们所需的一切都包含在JDK中,您已经需要安装JDK来编译程序。
另一方面,Doxygen可能是一种设置和正确工作的痛苦。但如果设置正确,它应该能够生成PDF、RTF、DocBook以及HTML。默认情况下,HTML的组织不如JavaDocs,因为index.HTML默认情况下会显示一个空白页面。此外,内联类和静态成员可能需要在文档中包含特殊的标志,如果你想生成PDF,你可能必须处理Linux发行版没有所需的pdflatex命令的麻烦(例如Ubuntu/Mint最近遇到了问题),所以如果你只是安装并运行它,即使是一个简单的程序,你也可能会得到一个充满错误的屏幕。与安装API时自动获取javadoc的容易程度相比,Doxygen设置可能是一种痛苦的体验。不过,一旦你克服了这些障碍,它在处理不仅仅涉及java的项目时应该更灵活。