Пользовательские теги с Doxygen - PullRequest
37 голосов
/ 11 февраля 2009

Я пытаюсь выяснить, есть ли способ создать пользовательский тег с помощью Doxygen. Я нашел опцию файла конфигурации ALIAS, но это не совсем то, что мне нужно. В основном в своем коде я хочу иметь возможность написать что-то вроде

/// \req Requirement #322 - blah blah

А затем Doxygen создает список, как это делается для команд \bug и \todo для строк, имеющих этот пользовательский тег. Это возможно с Doxygen?

Ответы [ 3 ]

44 голосов
/ 11 февраля 2009

Обобщение \bug и \todo равно \xrefitem.

Я предлагаю следующее решение:

  • в Doxyfile:

    ALIASES += "req=\xrefitem req \"Requirement\" \"Requirements\" "
    
  • в документированном коде:

    /// \req #42 - The system shall work in any situation
    
21 голосов
/ 30 сентября 2011

Спасибо, Мувичиэль! Я принял ваше решение и расширил его для моих целей.

Текст ниже идет в мой 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="https://foo.bar.com/mantis/view.php?id=1113">SRTX-1113</a>

@anchor SRTX_1114
<a href="https://foo.bar.com/mantis/view.php?id=1114">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
{
    ...
}

Это дает мне связанные страницы для требований, выполнения требований и проверки требований. Он также обеспечивает соответствие требованиям и проверяет разделы требований в описании класса (или функции - где бы вы ни ставили тег).

3 голосов
/ 13 июня 2018

Комбинируя два ответа выше , вы можете иметь один чистый тег требования, который будет создавать таблицу перекрестных ссылок, а также предоставлять прямую ссылку на репозиторий требований в ваши документы:

Файл Doxygen CONFIG:

Псевдонимы = "requirement{1}=@xrefitem requirement \"Requirements\" \"Requirements Traceability\" <a href=\"http://your.requirementtool.com/browse/\1\">\1</a>"

Исходный код:

@requirement{REQ-123} Краткое текстовое описание этого требования

Это будет отображаться в документации как:

Требования:

  • REQ-123 Краткое текстовое описание этого требования
...