2008-10-22 31 views
61

Ich erkannte gerade von einem Artikel in CACM, dass Doxygen mit Java (und einigen anderen Sprachen) auch arbeitet. Aber Java hat bereits das Javadoc-Tool. Kann jemand erklären, was die Vor- und Nachteile beider Ansätze sind? Schließen sie sich gegenseitig aus? Gibt es ein Maven-Plugin für Doxygen?Doxygen vs Javadoc

Antwort

64

Doxygen verfügt über eine Reihe von Funktionen, die JavaDoc nicht bietet, z. die Klassendiagramme für die Hierarchien und den Kooperationskontext, weitere Übersichtsseiten, optionales Durchsuchen des Quellcodes (mit der Dokumentation verknüpft), zusätzliche Tag-Unterstützung wie @todo auf einer separaten Seite und Ausgabe im TeX- und PDF-Format .Es erlaubt auch viele visuelle Anpassung.

Da Doxygen die standardmäßigen JavaDoc-Tags unterstützt, können Sie Doxygen für jeden Quellcode mit JavaDoc-Kommentaren ausführen. Es kann oft sogar sinnvoll sein, Quellcode ohne JavaDoc zu verwenden, da das Durchsuchen von Diagrammen und Quellcode dazu beitragen kann, Code auch ohne die Dokumentation zu verstehen. Und da das JavaDoc-Tool unbekannte Tags ignoriert, können Sie sogar zusätzliche Doxygen-Tags verwenden, ohne die JavaDoc-Generierung zu unterbrechen.

Nachdem ich all dies gesagt habe, muss ich zugeben, dass ich Doxygen schon lange nicht mehr benutzt habe. Ich verlasse mich heutzutage stark auf meine IDE, um die gleiche Visualisierung zu liefern, und ich lese JavaDoc normalerweise nicht als HTML-Seiten, sondern importiere die Quelldateien in meine IDE, damit JavaDoc-Flyouts erzeugt werden können und ich zu den Definitionen springen kann. Das ist noch mächtiger als das, was Doxygen zu bieten hat. Wenn Sie Dokumentation außerhalb der IDE haben möchten und gerne nicht-Java-Tools ausführen, dann ist Doxygen einen Versuch wert, da es keine Änderung an Ihrem Java-Code erfordert.

+0

Mit Maven können Sie Javadocs aggregieren und sie über das Site-Plugin verlinken. Darüber hinaus gibt es ein UML-Doclet, das verwendet werden kann, das auch die Klassendiagramme generiert, auf die Sie sich beziehen. Doxygen kann bei großen Projekten sehr langsam sein und erfordert eine Reihe von Ringen, um schneller zu springen – spy

15

Ich würde Doxygen nur mit Java verwenden, wenn Sie neu in Java sind und zuvor Doxygen verwendet haben, was die Lernkurve von javadoc reduziert. Wenn Sie Doxygen vorher nicht benutzt haben, würde ich bei javadoc bleiben, da es speziell für Java entwickelt wurde. Wenn Sie keines von beiden kennen und in C++ (oder anderen unterstützten Sprachen) genauso viel wie in Java arbeiten, ist Doxygen eine gute Wahl, da Sie es für beide Sprachen verwenden können.

Beide Werkzeuge sind einfach zu bedienen, mit einer ähnlichen Funktion. Beide haben Plugins (oder sind bereits integriert) für NetBeans und Eclipse, wodurch Doc schneller generiert werden kann. Es gibt eine Menge Überlappungen in den Kommentar-Stil von jedem verwendet, aber sie sind nicht genau das gleiche, so dass es schwierig wäre, sie zusammen zu mischen (Sie müssten die Details von beide kennen, auslassen alle Funktionen, die für das eine oder das andere spezifisch sind). Ich habe es nie benutzt, aber es scheint ein Maven plugin for Doxygen zu sein.

+1

Hier ist ein Link zum Doxygen Maven Plugin: http://khmarbaise.github.io/doxygen-maven-plugin/ –

3

Ich mag die Tatsache, dass Sie mit Doxygen Klassendiagramme auf der gleichen Seite wie die Dokumentation angezeigt bekommen können. Außerdem mag ich die Tatsache, dass es Sie bei Bedarf direkt mit dem Quellcode verbindet. Mir ist nicht bewusst, ob Javadoc diese Funktionen hat.

+1

Ja javadoc kann auch Klassendiagramm haben: http://www.yworks.com/en/products_ydoc .htm (nicht frei, aber ... ich versuche mich an ein anderes ähnliches Freeware Tool zu erinnern) – VonC

+1

http://java.dzone.com/articles/reverse-engineer-source-code-u –

+0

Sie können das kostenlose APIViz Doclet (http://code.google.com/p/apiviz/), um Klassendiagramme in javadoc zu generieren. –

2

Ein großer Vorteil von JavaDocs ist, dass sie einfach funktionieren. Alles, was benötigt wird, um sie zu erstellen und anzuzeigen, ist im JDK enthalten, das Sie bereits installiert haben müssen, um Ihre Programme zu kompilieren.

Doxygen, auf der anderen Seite kann ein Schmerz sein, einzurichten und richtig funktionieren. aber wenn es richtig eingerichtet ist, sollte es in der Lage sein, PDFs, RTFs und DocBooks sowie HTML zu generieren. Der HTML-Code ist standardmäßig nicht so gut wie JavaDocs organisiert, da index.html standardmäßig eine leere Seite aufruft. Inline-Klassen und statische Member benötigen möglicherweise spezielle Flags, die in der Dokumentation enthalten sein können. Wenn Sie ein PDF generieren möchten, müssen Sie möglicherweise Probleme mit Ihrer Distribution von Linux haben, die nicht über den erforderlichen pdflatex-Befehl verfügen (z. B. Ubuntu/Mint) Probleme in letzter Zeit), wenn Sie nur apt-get installieren und ausführen, erhalten Sie möglicherweise einen Bildschirm voller Fehler, selbst mit einem einfachen Programm. Verglichen mit der Leichtigkeit, mit der Sie javadoc automatisch installieren können, wenn Sie die API installieren, kann die Installation von Doxygen eine miserable Erfahrung sein.Sobald Sie die Hürden überwunden haben, sollten Sie flexibler mit Projekten umgehen können, die mehr als nur Java beinhalten.