2009-02-11 6 views
36

Sto cercando di capire se esiste un modo per creare un tag personalizzato utilizzando Doxygen. Ho trovato l'opzione del file di configurazione ALIAS ma questo non fa esattamente quello di cui ho bisogno. Fondamentalmente nel mio codice voglio essere in grado di scrivere qualcosa di simileTag personalizzati con Doxygen

/// \req Requirement #322 - blah blah 

E poi hanno Doxygen creare una lista come avviene per \bug e \todo i comandi per le linee che hanno questo tag personalizzato. È possibile con Doxygen?

+0

Questo non sembra funzionare con lo stile di documentazione XML (C#). –

risposta

42

La generalizzazione di \bug e \todo è \xrefitem.

La soluzione che suggerisco è:

  • in Doxyfile:

    ALIASES += "req=\xrefitem req \"Requirement\" \"Requirements\" " 
    
  • nel codice documentato:

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

Eccellente, non l'ho visto mentre guardavo il manuale. Grazie mille. – RishiD

19

Grazie mouviciel! Ho adottato la tua soluzione e l'ho estesa per i miei scopi.

Il testo che segue va nel mio 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" 

Dove SRTX è il nome del mio progetto e viene utilizzato come prefisso alle esigenze.

Quindi creo un file denominato Requirements.dox che fornisce un collegamento tra l'ID requisito e un URL per il requisito nel mio strumento di gestione dei requisiti (un tracker dei problemi nel mio 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> 

*/ 

Si potrebbe anche mettere il testo del requisito nel tag di ancoraggio se non avete bisogno di collegare una sorgente esterna.

Nel mio codice che ho:

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

E nel mio test ho messo:

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

Questo mi dà pagine correlate per Requisiti, requisiti di attuazione, e di verifica. Fornisce inoltre i requisiti Soddisfatti e Verifica le sezioni dei requisiti nella descrizione della classe (o funzione - ovunque venga inserito il tag).

+0

Aggiungere il 'Requirements.dox' specificato sopra nella variabile' INPUT = 'per poter vedere i collegamenti, nelle pagine" Implementazione dei requisiti "e" Verifica dei requisiti ". – parasrish