Pergunta

Eu estou tentando descobrir se há uma maneira de criar uma marca personalizada usando Doxygen. Eu fiz encontrar a opção de arquivo de configuração ALIAS, mas que não faz exatamente o que eu preciso. Basicamente no meu código eu quero ser capaz de escrever algo como

/// \req Requirement #322 - blah blah

E então tem Doxygen criar uma lista de como ele faz para comandos \bug e \todo para linhas que têm essa marca personalizada. Isso é possível com Doxygen?

Foi útil?

Solução

A generalização da \bug e \todo é \xrefitem.

A solução que eu sugiro é:

  • em Doxyfile:

    ALIASES += "req=\xrefitem req \"Requirement\" \"Requirements\" "
    
  • no código documentado:

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

Outras dicas

Graças mouviciel! Adotei sua solução e estendeu-o para os meus propósitos.

O texto abaixo vai para a minha 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"

Onde SRTX é o nome do meu projeto e é usado como um prefixo requisitos.

Então eu criar um arquivo chamado Requirements.dox que fornece uma ligação entre o ID de exigência e uma URL para a exigência em minha ferramenta de gerenciamento de requisitos (um issue tracker no meu caso).

/**
@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>

*/

Pode-se também colocar o texto do requisito da marca de âncora, se você não tinha necessidade de ligação a uma fonte externa.

No meu código eu tenho:

/**
 * This is the basic executive that schedules processes.
 * @satisfy{@req{1114}}
 */
class Scheduler: public Process
{
    ...
}

E, em meus testes eu coloquei:

/**
 * Provide a number of tests for process scheduling.
 * @verify{@req{1114}}
 */
class Scheduler_ut : public CppUnit::TestFixture
{
    ...
}

Isso me dá páginas relacionados para Requisitos, requisitos de implementação e requisitos de verificação. Ele também fornece seções forem conformes e requisitos Verifica na descrição da classe (ou função - onde quer que você colocar a tag).

Combinando as duas respostas acima , você pode ter uma única tag exigência limpa que vai construir uma tabela de referência cruzada, e, também fornecem um link direto para a exigência repo em seus documentos:

arquivo de configuração Doxygen:

ALIASES = "requirement{1}=@xrefitem requirement \"Requirements\" \"Requirements Traceability\" <a href=\"http://your.requirementtool.com/browse/\1\">\1</a>"

Código Fonte:

@requirement{REQ-123} Breve resumo textual deste item exigência

Este irá processar na documentação como:

Requisitos:

  • REQ-123 breve resumo textual do presente Item requisito
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top