2009-02-11 9 views
36

Estoy tratando de averiguar si hay una forma de crear una etiqueta personalizada usando Doxygen. Encontré la opción de archivo de configuración ALIAS, pero eso no hace exactamente lo que necesito. Básicamente en mi código quiero ser capaz de escribir algo comoEtiquetas personalizadas con Doxygen

/// \req Requirement #322 - blah blah 

Y entonces Doxygen crear una lista como lo hace para \bug y \todo comandos para las líneas que tienen esta etiqueta personalizada. ¿Es esto posible con Doxygen?

+0

Esto no parece funcionar con el estilo de documentación XML (C#). –

Respuesta

42

La generalización de \bug y \todo es \xrefitem.

La solución que propongo es:

  • en Doxyfile:

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

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

Excelente, no vi eso mientras miraba el manual. Muchas gracias. – RishiD

19

Gracias mouviciel! He adoptado su solución y la he extendido para mis propósitos.

El texto a continuación entra en mi 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" 

Dónde SRTX es el nombre de mi proyecto y se utiliza como prefijo a los requisitos.

Luego creo un archivo llamado Requirements.dox que proporciona un enlace entre el ID de requisito y una URL para el requisito en mi herramienta de gestión de requisitos (un rastreador de problemas en mi 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> 

*/ 

También se podría incluir el texto del requisito en la etiqueta de anclaje si no es necesario vincularlo a una fuente externa.

En mi código que tengo:

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

Y en mis pruebas me ponen:

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

Esto me da páginas relacionadas para los requisitos, los requisitos de aplicación y los requisitos de verificación. También proporciona el requisito de Satisfacciones y verifica las secciones de requisitos en la descripción de la clase (o función, donde sea que coloque la etiqueta).

+0

Agregue el 'Requirements.dox' especificado anteriormente en la variable' INPUT = 'para poder ver los enlaces, en las páginas" Implementación de requisitos "y" Verificación de requisitos ". – parasrish

Cuestiones relacionadas