Как документировать код Python с помощью doxygen [закрыто]
-
09-06-2019 - |
Вопрос
Мне нравится doxygen для создания документации кода C или PHP.У меня есть предстоящий проект Python, и я думаю, что помню, что у Python нет /* .. */
комментарии, а также имеет собственное средство самодокументирования, которое, по-видимому, является питоническим способом документирования.
Поскольку я знаком с doxygen, как я могу использовать его для создания документации по Python?Есть ли что-то особенное, о чем мне нужно знать?
Решение
Это описано на сайте doxygen, но подведем итог:
Вы можете использовать doxygen для документирования вашего кода Python.Вы можете использовать синтаксис строки документации Python:
"""@package docstring
Documentation for this module.
More details.
"""
def func():
"""Documentation for a function.
More details.
"""
pass
В этом случае комментарии будут извлечены с помощью doxygen, но вы не сможете использовать ни один из специальные команды doxygen.
Или вы можете (аналогично языкам C в doxygen) удвоить маркер комментария (#
) в первой строке перед элементом:
## @package pyexample
# Documentation for this module.
#
# More details.
## Documentation for a function.
#
# More details.
def func():
pass
В этом случае вы можете использовать специальные команды doxygen.Специального режима вывода Python не существует, но вы, очевидно, можете улучшить результаты, установив OPTMIZE_OUTPUT_JAVA
к YES
.
Честно говоря, я немного удивлен такой разницей: похоже, что как только doxygen сможет обнаруживать комментарии в блоках ## или блоках """, большая часть работы будет выполнена, и вы сможете использовать специальные команды в в любом случае.Может быть, они ожидают, что люди, использующие «»», будут придерживаться более практики документирования Pythonic, и это будет мешать специальным командам doxygen?
Другие советы
А доксипи входной фильтр позволяет использовать практически все теги форматирования Doxygen в стандартном формате строки документации Python.Я использую его для документирования большой смешанной среды игровых приложений на C++ и Python, и он работает хорошо.
Sphinx — это в основном инструмент для форматирования документов, написанный независимо от исходного кода, насколько я понимаю.
Для создания документации API из строк документации Python ведущими инструментами являются документ и пидоктор.Вот сгенерированная pydoctor документация по API для витой и Базар.
Конечно, если вы просто хотите просмотреть строки документации, пока работаете над чем-то, есть «пидок"инструмент командной строки, а также help()
функция доступна в интерактивном интерпретаторе.
В конце концов, у вас есть только два варианта:
Вы создаете свой контент с помощью Doxygen или создаете свой контент с помощью Sphinx*.
Доксиген:Это не лучший инструмент для большинства проектов Python.Но если вам приходится иметь дело с другими связанными проектами, написанными на C или C++, это может иметь смысл.Для этого вы можете улучшить интеграцию между Doxygen и Python, используя доксипипи.
Сфинкс:Де-факто инструмент для документирования проекта Python.Здесь у вас есть три варианта:ручной, полуавтоматический (генерация заглушки) и полностью автоматический (подобно Doxygen).
- Для ручной документации API у вас есть Sphinx. автодок.Это здорово — написать руководство пользователя со встроенными элементами, созданными API.
- Для полуавтомата у вас есть Сфинкс. автосводка.Вы можете либо настроить свою систему сборки для вызова sphinx-autogen, либо настроить Sphinx с помощью
autosummary_generate
конфиг.Вам потребуется настроить страницу с автосводками, а затем вручную отредактировать страницы.У вас есть варианты, но мой опыт использования этого подхода показывает, что он требует слишком большой настройки, и в конце, даже после создания новых шаблонов, я обнаружил ошибки и невозможность точно определить, что было представлено как публичный API, а что нет.По моему мнению, этот инструмент хорош для создания заглушек, которые требуют ручного редактирования, и не более того.Это как ярлык для перехода в руководство. - Полностью автоматический.Это неоднократно подвергалось критике, и долгое время у нас не было хорошего полностью автоматического генератора API Python, интегрированного со Sphinx, пока АвтоAPI пришел, это новенький в квартале.Это, безусловно, лучший вариант для автоматического создания API в Python (примечание:бессовестная самореклама).
Есть и другие варианты, на которые стоит обратить внимание:
- Дышать:Это началось как очень хорошая идея, и она имеет смысл, когда вы работаете с несколькими связанными проектами на других языках, использующих Doxygen.Идея состоит в том, чтобы использовать выходные данные Doxygen XML и передать их Sphinx для создания вашего API.Таким образом, вы можете сохранить все преимущества Doxygen и унифицировать систему документации в Sphinx.Потрясающе в теории.На практике, когда я в последний раз проверял, проект не был готов к производству.
- пидоктор*:Очень специфическое.Генерирует собственный вывод.Он имеет базовую интеграцию со Sphinx и несколько приятных функций.
Еще один очень хороший инструмент для документирования — сфинкс.Он будет использоваться для предстоящей версии Python 2.6. документация и используется Джанго и множество других проектов Python.
С сайта сфинкса:
- Выходные форматы:HTML (включая справку Windows HTML) и LaTeX для печати PDF-версий.
- Обширные перекрестные ссылки:семантическая разметка и автоматические ссылки для функций, классов, терминов глоссария и аналогичной информации.
- Иерархическая структура:простое определение дерева документов с автоматическими ссылками на братьев и сестер, родителей и детей
- Автоматические индексы:общий индекс, а также индекс модуля
- Обработка кода:автоматическое выделение с помощью маркера Pygments
- Расширения:автоматическое тестирование фрагментов кода, включение строк документации из модулей Python и многое другое.