how Tag personalizzati con Doxygen




how to use doxygen (2)

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
    

Sto cercando di capire se esiste un modo per creare un tag personalizzato usando 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 simile

/// \req Requirement #322 - blah blah

E poi fare in modo che Doxygen crei una lista come fa per i comandi \bug e \todo per le linee che hanno questo tag personalizzato. È possibile con Doxygen?


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

Il testo qui sotto 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 usato come prefisso ai requisiti.

Quindi creo un file chiamato Requirements.dox che fornisce un collegamento tra l'id del 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 inserire il testo del requisito nel tag di ancoraggio se non fosse necessario collegarsi a una fonte esterna.

Nel mio codice ho:

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

E nei miei 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, implementazione dei requisiti e verifica dei requisiti. Fornisce inoltre i requisiti Soddisfatti e Verifica le sezioni dei requisiti nella descrizione della classe (o funzione - ovunque venga inserito il tag).