Альтернатива Doxygen для С++

В то время как doxygen, похоже, хорошо индексирует большой проект на С++, у меня есть некоторые серьезные проблемы с ним.

  • Сгенерированный вывод является уродливым и плохо организованным. Просто найти функцию на сайтах doxygen - это, как правило, боль.
  • Медленный поворот при обнаружении ошибок разметки. т.е. мне нужно индексировать весь мой проект, чтобы найти, что я использовал неправильный синтаксис для некоторой функции.
  • Разметка уродливая... что-то с уценкой, реструктурированным текстом или каким-то гуманным языком разметки было бы лучше.

Есть ли такой инструмент с хорошей поддержкой С++? Способность Doxygen индексировать С++ на самом деле весьма полезна... это именно то, как она представляет информацию, и требует уродливой разметки в комментариях, которая является болью для решения проблемы.

Ответ 1

Doxygen 1.8 добавил поддержку Markdown, так как описан здесь! (Я знаю, что это не альтернатива, но это такие большие новости, которые я хотел бы выделить из комментариев).

Ответ 2

Вы можете попробовать DOС++, но я считаю это еще более уродливым. Ваш лучший выбор - настроить настройки Doxygen:

  • Включить GraphViz (хорошие графики вызовов или графики UML, если вы включите эти ключи)
  • Добавить верхний/нижний колонтитул на страницы
  • Используйте CSS для стилизации страницы
  • Генерировать CHM (файл справки Windows), который включает индекс и поиск

Некоторые переключатели, которые могут вас заинтересовать:

  • Общие
    • QT_AUTOBRIEF избегает ввода @brief
    • OPTIMIZE_OUTPUT_FOR_C = NO
    • OPTIMIZE_OUTPUT_JAVA = NO
    • EXCLUDE, чтобы избежать появления некоторых уродливых файлов или сторонних разработчиков.
  • Стиль HTML
    • HTML_HEADER
    • HTML_FOOTER
    • HTML_STYLESHEET
  • Файл справки CHM
    • CHM_FILE
  • GraphViz
    • HAVE_DOT
  • Графики
    • CLASS_DIAGRAMS
    • CLASS_GRAPH
    • UML_LOOK

Ответ 3

Существует новая альтернатива с открытым исходным кодом для doxygen, называемая cldoc: http://jessevdk.github.io/cldoc/.

Он может обрабатывать как c, так и С++ и основан на clang. Я просто скопировал вставку самых интересных функций, которые он предлагает:

  • Использование clang для эффективного анализа даже самых сложных проектов на С++ без дополнительных усилий со стороны пользователя.
  • Использует уценку для форматирования документации.
  • Использует простой формат для документирования вашего кода.
  • Поддержка перекрестных ссылок в документации.
  • Создает один файл, основанное на javascript веб-приложении, для визуализации документации.
  • Быстрый поиск на стороне клиента с использованием предварительного индекса поиска.

Ответ 4

Sphinx поддерживает документацию по проектам С++ через домен С++. Он использует reStructuredText в качестве языка разметки.

С веб-сайта:

Следующие функции присутствуют, работают нормально и могут быть видны "в действии" в документах Python:

  • Форматы вывода: HTML (включая справку Windows HTML), LaTeX (для печатных версий PDF), страницы руководства, обычный текст
  • Обширные перекрестные ссылки: семантическая разметка и автоматические ссылки для функций, классов, цитат, терминов глоссария и подобных фрагментов информации.
  • Иерархическая структура: простое определение дерева документов с автоматическими связями с братьями и сестрами, родителями и детьми.
  • Автоматические индексы: общий индекс, а также индекс модуля
  • Обработка кода: автоматическое выделение с использованием ярлыка Pyigs
  • Расширения: автоматическое тестирование фрагментов кода, включение docstrings из модулей Python (API docs) и многое другое

Ответ 5

для точки # 2: (Медленный поворот в поиске ошибок разметки, т.е. мне нужно индексировать весь мой проект, чтобы найти, что я использовал неправильный синтаксис для некоторой функции.).....

Я только что создал оболочку script для запуска Doxygen по одному файлу за раз, который я могу запустить из своей IDE, чтобы решить именно эту проблему, поэтому я могу постоянно запускать и повторно запускать ее при документировании одного файл.

Предполагая, что у вас есть ваш "Doxyfile" в текущем каталоге, script для запуска его только "add_doc.cpp" будет выглядеть как

cp Doxyfile tmp_doxy
echo INPUT = $1 >> tmp_doxy
doxygen tmp_doxy

называется

dofile adding_doc.cpp

как вы интегрируете это с вашей IDE, зависит от вас (разрешение переменных имени файла и т.д.).

Ответ 6

Существует аналогичный вопрос (why-is-doxygen-so-unfriendly-to-mobiles), и у него есть ответ, который я нашел полезным. Существует проект github, называемый doxygen-bootstrapped с использованием бутстрапа для документации doxygen. Он не затрагивает все проблемы, конечно, но это позволяет лучше контролировать форматирование вывода HTML.

Ответ 7

Если вы заинтересованы в отслеживании большого проекта, то я бы предложил версию С++ Netbeans, который может динамически генерировать хорошие графики вызовов (ищите функцию "Показать Call Graph" ).

Ответ 8

Мое оружие выбора NaturalDocs. Он имеет бородавки, но результат приличный, а разметка - без усилий.

Ответ 9

Doc-o-matic может обрабатывать как С++, так и С#, но довольно дорого. Выход гибкий и красивый. Когда я использовал его еще в 2009 году, у него было (и, вероятно, еще) несколько ошибок, которые заставляли меня сходить с ума тогда, но с некоторым опытом вы знаете обходные решения. Поскольку по-прежнему нет подходящих альтернатив, я бы по-прежнему рекомендовал его.

Ответ 10

DoxyPress - это современная замена doxygen.