Пользовательские теги с Doxygen
Я пытаюсь выяснить, есть ли способ создать собственный тег, используя Doxygen. Я нашел параметр файла конфигурации ALIAS, но это не делает именно то, что мне нужно. В основном в моем коде я хочу написать что-то вроде
/// \req Requirement #322 - blah blah
И тогда Doxygen создаст список, например, для команд \bug
и \todo
для строк, имеющих этот настраиваемый тег. Возможно ли это с Doxygen?
Ответы
Ответ 1
Обобщение \bug
и \todo
составляет \xrefitem
.
Я предлагаю следующее решение:
Ответ 2
Спасибо mouviciel! Я принял ваше решение и расширил его для своих целей.
Ниже приведен текст моего Doxyfile:
ALIASES += req{1}="\ref SRTX_\1 \"SRTX-\1\" "
ALIASES += satisfy{1}="\xrefitem satisfy \"Satisfies requirement\" \"Requirement Implementation\" \1"
ALIASES += verify{1}="\xrefitem verify \"Verifies requirement\" \"Requirement Verification\" \1"
Где SRTX - это имя моего проекта и используется как префикс к требованиям.
Затем я создаю файл с именем Requirements.dox, который обеспечивает связь между идентификатором требования и URL-адресом для требования в моем инструменте управления требованиями (в моем случае это трекер проблем).
/**
@page Requirements
@section Build1
@anchor SRTX_1113
<a href="#" onclick="location.href='https://foo.bar.com/mantis/view.php?id=1113'; return false;">SRTX-1113</a>
@anchor SRTX_1114
<a href="#" onclick="location.href='https://foo.bar.com/mantis/view.php?id=1114'; return false;">SRTX-1114</a>
*/
Можно также поместить текст требования в тег привязки, если вам не нужно ссылаться на внешний источник.
В моем коде у меня есть:
/**
* This is the basic executive that schedules processes.
* @satisfy{@req{1114}}
*/
class Scheduler: public Process
{
...
}
И в моих тестах я поставил:
/**
* Provide a number of tests for process scheduling.
* @verify{@req{1114}}
*/
class Scheduler_ut : public CppUnit::TestFixture
{
...
}
Это дает мне страницы, связанные с требованиями, требованиями и проверкой требований. Он также обеспечивает соответствие требованиям и проверяет разделы требований в описании класса (или функции - везде, где вы помещаете тег).