2015-01-10 10 views
5

Nel mio codice ci sono alcune chiamate assert per garantire che le mie funzioni funzionino correttamente e per eseguire alcuni test invarianti per le strutture dati.È possibile ignorare `assert`ions nei grafici di riferimento generati da doxygen?

A volte utilizzo le funzioni nell'argomento di assert e queste funzioni sono in CallGraph Doxygens di tale funzione. Per alcuni invarianze più grandi questo fa davvero polare il grafico ...

Come posso evitare che list_isSorted nel seguente snippet si verifichi nel callgraph?

int list_isElem (List l, Element e) { 
    assert(list_isSorted(l)); 
    { 
    if (list_isEmpty(l)) { return 0; } 
    switch (compare(e, list_getValue(l))) { 
    case -1: return 0; 
    case 0: return 1; 
    case 1: return list_isElem (list_getTail(l), e); 
    default: exit(ERR_UNKNOWN); 
    } 
    } 
} 

Ho già provato a impostare PREDEFINED = NDEBUG in Doxyfile, ma che non ha funzionato.

risposta

1

saltare l'assert?

vedere http://www.stack.nl/~dimitri/doxygen/manual/faq.html

"Il modo nuovo e più semplice è quello di aggiungere un commento al blocco con un comando \ cond al blocco di partenza ed uno commento con un \ endcond"

automatizzare con una macro:

#define DAssert(x) /** \cond */ assert(x) /** \endcond */ 
+1

Preferirei se questo lavoro senza molto del lavoro manuale. Speravo che Doxygen potesse gestirlo automaticamente o almeno qualcuno potesse indicarmi un filtro già esistente. – NobbZ

+1

Definisci una macro che avvolge la chiamata 'assert()' con i comandi '\ cond' e' \ endcond'. –

+0

@NobbZ ha aggiunto una macro che dovrebbe funzionare –

Problemi correlati