2016-05-19 14 views
7

Sto cercando di convincere Doxygen a ignorare una relazione di ereditarietà quando si disegnano diagrammi di collaborazione.Come fare a Doxygen per ignorare la relazione di ereditarietà?

Diciamo che la mia definizione di classe si presenta così:

class Derived : public Base 
{ 
    int x; 
    int y; 
    int z; 
} 

Ora, quando corro Doxygen, io non voglio vedere Classe Base nel diagramma di collaborazione generato.

A prima vista, sembra che il modo più semplice per farlo sarebbe utilizzare la direttiva EXCLUDE_SYMBOLS nel mio Doxyfile. In particolare:

EXCLUDE_SYMBOLS = Base 

Tuttavia, ho trovato che questo non funziona: La classe di base mostra ancora nel mio schema di collaborazione per il derivato. Ho provato questo su Doxygen 1.8.6 e 1.8.11 e con permute diverse dei caratteri jolly di base (Base *, * come *, ecc.), Lo stesso comportamento. La classe base viene sempre visualizzata nel mio diagramma di collaborazione.

Per essere onesti, ho trovato 2 soluzioni alternative, ma entrambi implicano l'inserimento di dichiarazioni condizionali nel mio codice. Per completezza, io includo sia qui:

prima soluzione Metodo:

class Derived : 
#ifndef DOXYGEN_SHOULD_SKIP_THIS 
    public Base 
#endif /* DOXYGEN_SHOULD_SKIP_THIS */ 
{ 
    ... 
} 

Poi assicurarsi che le seguenti due direttive sono impostati all'interno della Doxyfile:

PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS 
ENABLE_PREPROCESSING = YES 

seconda soluzione Metodo:

class Derived : 
/// @cond DOXYGEN_IGNORE 
     public Base 
/// @endcond 
{ 
    ... 
} 

Per essere chiari, queste soluzioni alternative fanno sì che Doxygen ignori la relazione di ereditarietà, ma preferirei non inquinare inutilmente la mia base di codice, soprattutto se esiste un modo migliore/più pulito per raggiungere il mio obiettivo.

La mia domanda è - Perché non fa EXCLUDE_SYMBOLS Doxygen ignora la mia classe Base quando disegna il diagramma di collaborazione?

risposta

0

Se non mi sbaglio, EXCLUDE_SYMBOLS impedisce a Doxygen di generare documentazione per i simboli esclusi, ma non li nasconde. Ciò significa che Doxygen non genererà documentazione per la tua classe Base, ma la menzionerà comunque come classe base di Derived, proprio come se Derived ereditato da una classe fornita da una libreria esterna, il nome della classe fornita dalla libreria sarebbe compaiono nel diagramma di collaborazione.

Problemi correlati