Доксиген
Разработчик(и) | Дмитрий ван Хиш |
---|---|
Первоначальный выпуск | 26 октября 1997 г [1] |
Стабильная версия | 1.11.0 [2]
/ 20 мая 2024 г |
Репозиторий | |
Написано в | С++ |
Операционная система | Кросс-платформенный |
Тип | Генератор документации |
Лицензия | лицензия GPLv2 |
Веб-сайт | doxygen.nl |
Doxygen ( / ˈ d ɒ k s i dʒ ən / DOK -see-jən ) [3] это генератор документации [4] [5] [6] [7] и статического анализа инструмент деревьев исходного кода программного обеспечения . При использовании в качестве генератора документации Doxygen извлекает информацию из специально отформатированных комментариев внутри кода. При анализе Doxygen использует свое дерево разбора для создания диаграмм и диаграмм структуры кода. Doxygen может перекрестно ссылаться на документацию и код, чтобы читатель документа мог легко обратиться к фактическому коду.
Doxygen — бесплатное программное обеспечение , выпущенное на условиях GNU General Public License версии 2 (GPLv2).
Дизайн
[ редактировать ]Как и Javadoc , Doxygen извлекает документацию из комментариев исходного файла. В дополнение к синтаксису Javadoc, Doxygen поддерживает теги документации, используемые в наборе инструментов Qt , и может генерировать выходные данные на языке гипертекстовой разметки ( HTML ), а также в скомпилированной HTML-справке Microsoft (CHM), расширенном текстовом формате (RTF), переносимом формате документов . (PDF), LaTeX , PostScript или справочные страницы .
Использование
[ редактировать ]Языки программирования, поддерживаемые Doxygen, включают C , [8] C++ , C# , D , Фортран , IDL , Java , Objective-C , [9] Перл , [10] PHP , [11] Питон , [12] [13] и ВХДЛ . [11] Другие языки могут поддерживаться с помощью дополнительного кода.
Doxygen работает на большинстве Unix-подобных систем, macOS и Windows .
Первая версия Doxygen заимствовала код из ранней версии DOC++, разработанной Роландом Вундерлингом и Малте Цёклером в Институте Цузе в Берлине . Позже код Doxygen был переписан Дмитрием ван Хешем.
Doxygen имеет встроенную поддержку для создания диаграмм наследования для классов C++. Для более сложных диаграмм и графиков Doxygen может использовать инструмент «точка» из Graphviz . [14]
Пример кода
[ редактировать ]Общий синтаксис комментариев к документации заключается в том, что комментарий начинается с дополнительной звездочки после ведущего разделителя комментариев '/*':
/**
<A short one line description>
<Longer description>
<May span multiple lines or paragraphs as needed>
@param Description of method's or function's input parameter
@param ...
@return Description of the return value
*/
Многие программисты любят отмечать начало каждой строки пробелом-звездочкой-пробелом, как показано ниже, но в этом нет необходимости.
/**
* <A short one line description>
*
* <Longer description>
* <May span multiple lines or paragraphs as needed>
*
* @param Description of method's or function's input parameter
* @param ...
* @return Description of the return value
*/
Многие программисты избегают использования комментариев в стиле C и вместо этого используют однострочные комментарии в стиле C++. Doxygen принимает комментарии с дополнительной косой чертой как комментарии Doxygen.
/// <A short one line description>
///
/// <Longer description>
/// <May span multiple lines or paragraphs as needed>
///
/// @param Description of method's or function's input parameter
/// @param ...
/// @return Description of the return value
Ниже показано, как C++ можно документировать исходный файл .
/**
* @file
* @author John Doe <[email protected]>
* @version 1.0
*
* @section LICENSE
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details at
* https://www.gnu.org/copyleft/gpl.html
*
* @section DESCRIPTION
*
* The time class represents a moment of time.
*/
class Time {
public:
/**
* Constructor that sets the time to a given value.
*
* @param timemillis is a number of milliseconds
* passed since Jan 1, 1970.
*/
Time (int timemillis) {
// the code
}
/**
* Get the current time.
*
* @return A time object set to the current time.
*/
static Time now () {
// the code
}
};
Альтернативный подход к документированию параметров показан ниже. Он выдаст ту же документацию.
/**
* Constructor that sets the time to a given value.
*/
Time (int timemillis ///< Number of milliseconds passed since Jan 1, 1970.>
)
{
// the code
}
Также возможна более богатая разметка. Например, добавьте уравнения с помощью LaTeX команд :
/**
*
* An inline equation @f$ e^{\pi i}+1 = 0 @f$
*
* A displayed equation: @f[ e^{\pi i}+1 = 0 @f]
*
*/
Источник и разработка Doxygen
[ редактировать ]Исходники Doxygen в настоящее время размещены на GitHub , где главный разработчик Дмитрий ван Хиш вносит свой вклад под именем пользователя «doxygen». [15] Doxygen написан на C++ и состоит из около 300 000 строк исходного кода . Для лексического анализа стандартный инструмент Lex (или его замена Flex) запускается с помощью примерно 35 000 строк сценария lex. Инструмент синтаксического анализа Yacc ( или его замена Bison) также используется, но только для второстепенных задач; основная часть синтаксического анализа языка выполняется собственным кодом C++. Процесс сборки основан на CMake , а также включает в себя некоторые скрипты Python.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ АНОНС: doxygen 0.1. Архивировано 4 октября 2011 г. в Wayback Machine . Анонс: первый выпуск Doxygen, системы документации C++. , От: Дмитрий ван Хиш, Дата: воскресенье, 26 октября 1997 г., Архив Qt-interest
- ^ «Релиз Doxygen 1.11.0» . 20 мая 2024 г. Проверено 21 мая 2024 г.
- ^ «Руководство по Doxygen: Часто задаваемые вопросы» . www.doxygen.nl .
- ^ Перкель, Джеффри М. (22 ноября 2015 г.). «Начни с программой: советы по добавлению кодирования в свой аналитический арсенал» . Ученый ( Журнал ). Ученый.
- ^ Сабин, Михаэла (22 ноября 2015 г.). «Доксиген» . OpenComputing ( Вики ). Университет Нью-Гэмпшира. Архивировано из оригинала 23 ноября 2015 г.
- ^ «Доксиген» . Каталог свободного программного обеспечения ( Вики ). 2015-11-22.
- ^ «Документация» . Розеттский кодекс ( Вики ). 2015-11-22.
- ^ «Документация: C» . Розеттский кодекс ( Вики ). 2015-11-22.
- ^ «Документация: Objective-C» . Розеттский кодекс ( Вики ). 2015-11-22.
- ^ «Doxygen::Filter::Perl — предварительный фильтр кода Perl для Doxygen — Metacpan.org» . Metacpan.org .
- ^ Jump up to: а б «Руководство по Doxygen: Начало работы» . www.doxygen.nl .
- ^ «Инструменты автоматического создания документации API Python» . Вики-сайт python.org ( Вики ). 2015-11-22.
- ^ Браун, Эрик В. «doxypypy: фильтр Doxygen для Python» – через PyPI.
- ^ «Руководство по Doxygen: Графики и диаграммы» . www.doxygen.nl .
- ^ «доксиген/доксиген» . 9 июня 2021 г. – через GitHub.