2009-02-11 3 views
36

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

/// \req Requirement #322 - blah blah 

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

+0

Это не похоже на стиль документирования XML (C#). –

ответ

42

Обобщение \bug и \todo - \xrefitem.

Решение я предлагаю:

  • в Doxyfile:

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

    /// \req #42 - The system shall work in any situation 
    
+0

Отлично, я не видел этого, глядя на руководство. Спасибо, кучка. – RishiD

19

Благодаря 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="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 
{ 
    ... 
} 

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

+0

Добавьте «Требования.dox», указанные выше в переменной «INPUT =», чтобы иметь возможность видеть ссылки на страницах «Требования» и «Проверка требований». – parasrish

Смежные вопросы