Abbiamo un progetto C++ che documentiamo usando doxygen, inserendo solo i commenti doxygen nelle intestazioni per le classi, documentiamo le funzioni statiche all'interno di cpp.Avere doxygen consapevole dello spazio dei nomi in cpp
I file di configurazione doxygen raccolgono qualsiasi file header/hpp)/implementation/cpp) all'interno del progetto. Inoltre, abbiamo alcuni componenti indipendenti (ed esterni) che isoliamo all'interno dei namespace.
Il progetto è fatto in modo che usiamo polimorfismo (a causa di un uso estensivo di proxy pattern)
Come è una pratica comune, proibiamo il utilizzando direttiva all'interno dell'intestazione e lo usiamo in attuazione file.
In genere, abbiamo nell'intestazione:
/**
* @brief
* test from A
*/
void f(N1::N2::A);
/**
* @brief
* test from A
*/
void f(N1::N2::B);
All'interno l'attuazione, abbiamo
using namespace N1::N2;
void f(A) { }
void f(B) { }
Quando si esegue doxygen, lui sembra confuso e produce messaggi di errore:
warning: no uniquely matching class member found for f(A)
possible candidates:
void f(N1::N2::A)
void f(N1::N2::B)
Qualche idea su come sbarazzarsi di questi errori e rendere consapevoli doxygen sulla direttiva "using"?
EDIT
- cattive notizie, sembra essere aperto il bug tracker: https://bugzilla.gnome.org/show_bug.cgi?id=617285, https://bugzilla.gnome.org/show_bug.cgi?id=154880: sembra che io sto cercando una soluzione piuttosto che una soluzione pulita.
In generale, se si desidera una ricerca accurata del nome su codice C++, è necessario un front end C++ completo. AFAICT, Doxygen fa Non ho un finale completo in C++. (Per questo motivo mi sono sempre chiesto come gli utenti di C++ possano essere così innamorati di Doxygen, la mancanza di qualcosa di meglio?) Se sei fortunato, troverai una soluzione alternativa per casi speciali. –
Mancanza di meglio, sicuramente Questo è ampiamente disponibile e si occupa anche di C ... – Bruce
Dovresti pubblicare la tua modifica come risposta e accettarla, almeno fino a quando il bug non sarà corretto. –