2016-05-19 6 views
7

Ich versuche, Doxygen zu veranlassen, eine Vererbungsbeziehung beim Zeichnen von Kollaborationsdiagrammen zu ignorieren.Wie bekomme ich Doxygen, um die Vererbungsbeziehung zu ignorieren?

sagen Lassen Sie meine Klassendefinition wie folgt aussieht:

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

Nun, wenn ich laufen Doxygen, ich habe keine Basisklasse in der generierten Kollaborationsdiagramm sehen wollen.

Auf den ersten Blick scheint es am saubersten zu sein, die Anweisung EXCLUDE_SYMBOLS in meinem Doxyfile zu verwenden. Im Einzelnen:

EXCLUDE_SYMBOLS = Base 

Allerdings habe ich festgestellt, dass dies nicht funktioniert: Die Basisklasse immer noch in meinem Kollaborationsdiagramm zeigt sich für Abgeleitet. Ich habe dies sowohl auf Doxygen 1.8.6 und 1.8.11 und mit verschiedenen Permutationen von Base Wildcards (Base *, * as *, etc), das gleiche Verhalten versucht. Die Basisklasse wird immer in meinem Kollaborationsdiagramm angezeigt.

Um fair zu sein, habe ich 2 Problemumgehungen gefunden, aber beide beinhalten bedingte Anweisungen in meinen Code. Der Vollständigkeit halber werde ich beide hier sind:

Erste Abhilfe Methode:

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

anschließend sicher, dass die folgenden beiden Richtlinien innerhalb des Doxyfile festgelegt sind:

PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS 
ENABLE_PREPROCESSING = YES 

zweite Problemumgehung Methode:

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

Um es klar zu sagen, diese Problemumgehungen machen Doxygen tatsächlich dazu, die Vererbungsbeziehung zu ignorieren, aber ich würde es vorziehen, meine Codebasis nicht unnötig zu verschmutzen, besonders wenn es einen besseren/saubereren Weg gibt, mein Ziel zu erreichen.

Meine Frage ist - Warum nicht EXCLUDE_SYMBOLS Doxygen meine Basisklasse zu ignorieren, wenn es das Kollaborationsdiagramm zeichnet?

Antwort

0

Wenn ich mich nicht irre, verhindert EXCLUDE_SYMBOLS Doxygen, Dokumentation für die ausgeschlossenen Symbole zu generieren, aber es versteckt sie nicht. Das bedeutet, dass Doxygen keine Dokumentation für Ihre Base Klasse generiert, aber es wird immer noch als Basisklasse von Derived erwähnt, genauso wie wenn Derived von einer Klasse geerbt wird, die von einer externen Bibliothek bereitgestellt wird, würde der Name der Klasse von der Bibliothek bereitgestellt werden erscheinen im Kollaborationsdiagramm.

Verwandte Themen