Я только что понял из статьи в CACM, что Doxygen работает с Java (и несколькими другими языками). Но у Java уже есть инструмент Javadoc. Может ли кто-нибудь объяснить, какие плюсы и минусы любого подхода? Являются ли они взаимоисключающими? Есть ли плагин Maven для Doxygen?
Доксиген против Джавадока
Ответ 1
Doxygen имеет ряд функций, которые JavaDoc не предлагает, например. диаграммы классов для иерархий и контекст сотрудничества, дополнительные сводные страницы, дополнительный просмотр исходного кода (сшитый с документацией), поддержка дополнительных тегов, таких как @todo на отдельной странице, и возможность генерации вывода в формате TeX и PDF. Это также позволяет много визуальной настройки.
Так как Doxygen поддерживает стандартные теги JavaDoc, вы можете запускать Doxygen в любом исходном коде с комментариями JavaDoc на нем. Часто бывает даже целесообразно запускать исходный код без JavaDoc, поскольку диаграммы и просмотр исходного кода могут помочь понять код даже без документации. И поскольку инструмент JavaDoc игнорирует неизвестные теги, вы можете даже использовать дополнительные теги Doxygen, не нарушая генерации JavaDoc.
Сказав все это, я должен признать, что я долгое время не использовал Doxygen. Я склонен в значительной степени полагаться на свою IDE в настоящее время, чтобы обеспечить ту же визуализацию, и я обычно не читаю JavaDoc в виде HTML-страниц, а импортирую исходные файлы в свою среду IDE, чтобы он мог генерировать всплывающие окна JavaDoc, и я могу перейти к определениям. Это еще более мощно, чем предлагает Doxygen. Если вы хотите иметь документацию вне IDE и с удовольствием запускаете инструментарий, отличный от Java, тогда Doxygen стоит попробовать, так как он не требует каких-либо изменений в вашем Java-коде.
Ответ 2
Я бы использовал Doxygen с Java, если вы новичок в Java, и раньше вы использовали Doxygen, уменьшая кривую обучения, которую вы испытали с помощью javadoc. Если вы раньше не использовали Doxygen, я бы придерживался javadoc, поскольку он был специально разработан с учетом Java. Если вы не знаете ни одного, и вы работаете на С++ (или других поддерживаемых языках) столько, сколько вы делаете Java, Doxygen - хороший выбор, так как вы сможете использовать его для обоих языков.
Оба инструмента просты в использовании, с подобным набором функций. У обоих есть плагины (или предварительно встроенные) для NetBeans и Eclipse, что делает его еще быстрее для создания документа. В стиле комментариев, используемом каждым, много совпадений, но они не совсем одинаковы, поэтому было бы сложно их смешивать (вам нужно было бы узнать подробности обоим, не оставляя никаких функций, которые специфические для того или другого). Я никогда не использовал его, но похоже, что плагин Maven для Doxygen.
Ответ 3
Мне нравится то, что с Doxygen вы можете получить диаграммы классов, отображаемые на той же странице, что и документация. Кроме того, мне нравится, что он связывает вас напрямую с исходным кодом, если это необходимо. Я не знаю, есть ли у javadoc эти функции.
Ответ 4
Одним из больших преимуществ JavaDocs является то, что они просто работают. Все, что необходимо для их создания и просмотра, включено в JDK, который вам уже нужно установить для компиляции ваших программ.
Doxygen, с другой стороны, может быть больно настроиться и работать правильно. но если он настроен правильно, он должен иметь возможность создавать PDF файлы, RTF и DocBooks, а также HTML. HTML также не организован по умолчанию как JavaDocs, так как index.html выводит пустую страницу по умолчанию. Кроме того, встроенные классы и статические члены могут нуждаться в специальных флагах, которые должны быть включены в документацию, и если вы хотите создать PDF-документ, вам, возможно, придется столкнуться с проблемами вашего дистрибутива Linux, не имеющего необходимой команды pdflatex (например, Ubuntu/Mint проблемы в последнее время), поэтому, если вы просто apt-get install и запустите, вы можете получить полный экран с ошибками даже с простой программой. По сравнению с легкостью получения javadoc автоматически при установке API, установка Doxygen может быть жалким опытом. Как только вы преодолеете препятствия, он должен быть более гибким в решении проектов с участием не только java.