2016-05-19 16 views
7

Próbuję przekonać Doxygen do zignorowania relacji dziedziczenia podczas rysowania diagramów współpracy.Jak przekonać Doxygen do ignorowania relacji dziedziczenia?

Powiedzmy moja definicja klasy wygląda następująco:

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

Teraz, kiedy biegnę Doxygen, nie chcę, aby zobaczyć klasy bazowej w wygenerowanym schematu współpracy.

Na pierwszy rzut oka wydaje się, że najczystszym sposobem na to byłoby użycie dyrektywy EXCLUDE_SYMBOLS w moim pliku Doxy. W szczególności:

Jednak okazało się, że to nie działa: Klasa podstawowa nadal pojawia się na schemacie współpracy dla programu pochodnego. Próbowałem tego zarówno na Doxygen 1.8.6 i 1.8.11 i różnych permutacji podstawowych symboli wieloznacznych (Base *, * as *, itp.), Tego samego zachowania. Klasa podstawowa zawsze pojawia się na schemacie współpracy.

Aby być uczciwym, znalazłem 2 obejścia, ale oba wymagają umieszczenia instrukcji warunkowych w moim kodzie. Dla kompletności, będę obejmować zarówno tutaj:

pierwszej metody obejścia:

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

następnie upewnij się, że następujące dwie dyrektywy są ustawione wewnątrz Doxyfile:

PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS 
ENABLE_PREPROCESSING = YES 

Drugie obejście Metoda:

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

Dla jasności, te obejścia rzeczywiście powodują ignorowanie przez Doxygen związku dziedziczenia, ale wolę nie niepotrzebnie zanieczyszczać bazy kodu, zwłaszcza jeśli istnieje lepszy/czysty sposób na osiągnięcie mojego celu.

Moje pytanie brzmi - dlaczego EXCLUDE_SYMBOLS nie powoduje, że Doxygen zignoruje moją klasę bazową podczas rysowania diagramu współpracy?

Odpowiedz

0

Jeśli się nie mylę, EXCLUDE_SYMBOLS uniemożliwia Doxygen generowanie dokumentacji dla wykluczonych symboli, ale ich nie ukrywa. To oznacza, że ​​Doxygen nie będzie generował dokumentacji dla twojej klasy Base, ale nadal będzie wymieniał ją jako klasę podstawową Derived, tak jak gdyby Derived odziedziczył po klasie udostępnionej przez bibliotekę zewnętrzną, nazwa klasy dostarczona przez bibliotekę pojawiają się na diagramie współpracy.