2011-12-16 7 views
21

Ho appena installato e la configurazione di un'istanza di Doxygen, ma fuori dalla scatola si trova distante solo tag TODO nel codice, quando ha segnato in un blocco come:È possibile configurare facilmente Doxygen per riconoscere le linee TODO e FIXME?

/** 
* @todo Foo 
*/ 

Non sembra trovare:

La maggior parte dei tracker di IDE e bug che gestiscono l'analisi sono soddisfacenti, esiste un modo semplice per configurare Doxygen per trovarli ed elencarli come elementi ToDo?

+3

I commenti Doxygen tendono ad essere all'interno di blocchi di commenti speciali, vero? Penso che per un commento su una riga si usi '/// @todo Some text' (si noti le tre barre in avanti, non le solite due). Vedere il terzo punto della seconda lista sulla pagina [this] (http://www.stack.nl/~dimitri/doxygen/docblocks.html). – Chris

+0

Grazie, mi sarei totalmente perso quella pagina, lo verificherò.[Di solito non sono così pigro, sono solo pigiato per il tempo ma cerco di farlo sul lato quindi almeno abbiamo/qualcosa/:)] –

+0

@Chris, dovresti inserirlo come risposta, e Iain, dovresti accettarlo se risolvesse il tuo problema. – tomlogic

risposta

35

ci sono un certo numero di esempi e metodi che possiamo utilizzare:

  • Per un commento di una riga con valida Doxygen comandi (ad esempio \todo) si usa

    /// \todo Some (optional) text 
    

    Nota i tre in avanti tagli, non i soliti due. Vedere il terzo punto della seconda lista nella sezione special documentation blocks della documentazione di Doxygen. Questo può essere usato per aggiungere nuovi oggetti todo al tuo codice sorgente.

  • In genere è possibile definire tag personalizzati (come FIXME) definendo un alias nel file di configurazione di Doxygen. Per esempio

    ALIASES += FIXME="\todo" 
    

    che vi permetterà di scrivere \FIXME nel codice sorgente e le osservazioni con prefisso \FIXME saranno inclusi in voi todo list nella documentazione finale. Il problema qui è che devi anteporre i tuoi alias al simbolo \ (o @) e iniziare il commento con tre barre in avanti che, se vuoi lasciare le FIXME s nel tuo codice così come sono, non è un'opzione.

  • Infine, un metodo alternativo, e quello che penso tu stia cercando, sarebbe quello di pre-elaborare i tuoi file sorgente usando l'opzione file di configurazione INPUT_FILTER. Questa opzione definisce un comando che viene applicato a ciascuno dei tuoi file sorgente prima che Doxygen costruisca la documentazione, così possiamo definire un comando che sostituisce le istanze di TODO e FIXME con una marcatura Doxygen valida.

    INPUT_FILTER = "sed -e 's/\/\/.*FIXME/\/\/\/ \\todo/'" 
    

    Questo filtro sostituisce tutte le istanze di // FIXME (con qualsiasi importo (o nessuno) di spazio tra // e FIXME) con /// \todo. Questa sostituzione viene eseguita internamente solo da Doxygen: i tuoi file sorgente non vengono modificati sul disco.

Nota: Questo ultimo punto è stato ispirato dalla risposta accettata alla domanda Getting Doxygen and MSVC TODO tags to work together. Tuttavia, tale risposta utilizzava l'opzione di configurazione FILE_VERSION_FILTER anziché INPUT_FILTER. Penso che quest'ultimo (INPUT_FILTER) sia effettivamente più appropriato qui. Inoltre, il comando sed utilizzato in quella risposta non funziona per me.

+0

Anche questo è stato tutto quello che ho potuto trovare, ho-hum :(Non ho avuto il tempo di guardare la configurazione o la sorgente di Doxygen per vedere come funziona, accettando la risposta come "No, trova solo le dichiarazioni TODO e FIXME marcate rigorosamente secondo la documentazione "al posto di altre risposte per ora (ma non sono sicuro che sia del tutto corretto.) Grazie per la risposta. –

+0

Hai' GENERATE_TODOLIST' impostato su 'YES' nel tuo file di configurazione? todo' in lettere minuscole e hai provato '\ todo' invece di' @ todo'? Infine, prova a usare '//! \ todo {testo opzionale}' invece di '/// \ todo {testo opzionale}' – Chris

+0

Sì Lo faccio, il problema che ho non è quello di mostrare le note di stile TODO e FIXME nel formato documentato supportato (che funziona bene, come ho detto nella mia domanda) ma esattamente come sono (cioè con basi di codice esistenti, in mente Doxygen) –

Problemi correlati