Warnungen bei Verwendung von doxygen unklar
-
Hi @ all,
ich habe folgendes Problem: Ich dokumentiere meinen Code mit dem Tool doxygen. Dabei treten allerdings diverse Warnungen der Form:
MyClass.cpp:28: Warning: documented function `ns1::MyClass::MyClass' was not declared or defined.
Dabei ist eine Klasse ("MyClass") in einem Header ("MyClass.hpp") deklariert und die meisten Methoden in MyClass.cpp definiert. Die Dokumentation steht vollständig im Header, direkt an den Methoden bzw. der Klasse. Weiterhin ist das Ganze in einem Namensbereich gekapselt ("ns1"). Ein Beispiel:
//myclass.hpp //! namespace doku namespace ns1 { /** * blablabla */ class MyClass { public: /** * blablup */ void doIt(); }; };
//myclass.cpp namespace ns1 { void MyClass::doIt() { // ... } };
Seltsam ist auch, dass dieser Fehler nicht bei allen dertig-definierten Klassen auftritt. Prinzipiell habe ich 2 Namensbereiche ineinander geschachtelt: Beim innersten (2.) Namensbereich tritt diese Fehler für alle Methoden auf.
Kann mir jemand weiterhelfen?
Schonmal danke!MfG
DoxydiererPS: Ich habe über die Forumsuche bereits diesen Beitrag gefunden: http://www.c-plusplus.net/forum/285144 . Allerdings löst er nicht wirklich mein Problem, da das "Namensbereich öffnen" (siehe cpp-Datei oben) ja nicht funktioniert.
-
Doxydierer schrieb:
Hi @ all,
ich habe folgendes Problem: Ich dokumentiere meinen Code mit dem Tool doxygen. Dabei treten allerdings diverse Warnungen der Form:
MyClass.cpp:28: Warning: documented function `ns1::MyClass::MyClass' was not declared or defined.
ich kenne Doxygen nicht, aber da meckert es den fehlenden Konstruktor an. Evtl. weiß Doxygen nichts von automatischen Konstruktoren?
-
Der Code, den du gepostet hast, scheint mit dem Problem nicht viel zu tun zu haben. Doxygen beschwert sich darüber, dass eine Funktion dokumentiert ist, die es nicht gibt. Du müsstest mal den angemeckerten Dokumentationskommentar posten. Und sichergehen, dass diese Funktion (der Konstruktor) tatsächlich nicht existiert.
-
Erstmal vielen Dank für eure Antworten!
DrGreenthumb schrieb:
ich kenne Doxygen nicht, aber da meckert es den fehlenden Konstruktor an. Evtl. weiß Doxygen nichts von automatischen Konstruktoren?
Wenn Du mit "automatischem Konstruktor" implizit-definierte Konstruktoren meinst: Das kann es eigentlich nicht sein, da ich den Konstruktor ja explizit definiere und er sich auch über den beschwert. Außerdem tritt das Problem auch mit anderen Methoden auf. Trotzdem danke!
Bashar schrieb:
Der Code, den du gepostet hast, scheint mit dem Problem nicht viel zu tun zu haben. Doxygen beschwert sich darüber, dass eine Funktion dokumentiert ist, die es nicht gibt. Du müsstest mal den angemeckerten Dokumentationskommentar posten. Und sichergehen, dass diese Funktion (der Konstruktor) tatsächlich nicht existiert.
Kein Problem, hier das Problem an 2 Beispielen (Konstruktor von
CEvalExport
&m_beginHeader()
) meines (etwas gekürzten) Codes:// ----------------------- // header.hpp // namespace eval { // ... /** * \class CEvalExport * Diese Klasse ist ... abzuleiten. * @see m_processRated(), m_processUnrated() */ class CEvalExport { protected: // ... public: /** * Initialisiert den ... Evaluierung. * @param evsc Referenz ... Bewertungsobjekt * @param path Pfad unter der gespeichert werden soll. Ist * \a mode != \c SFM_NO_FILE_SPLIT, so ist \a path "nur" * Teil des erzeugten Pfads. * @param mode legt fest, ... werden sollen */ CEvalExport(const CEvalScheme& evsc, const string& path, ESplitFileMode mode) throw (COpenFileError); // ... }; namespace html { /** * \class CHtmlExport * Speichert die ... angezeigt werden. */ class CHtmlExport : public CEvalExport { private: // ... color_t m_findColor(rating_t r) const throw (CIncompleteColorMap); void m_beginHeader(); void m_endHeader(); // ... public: // ... }; }; // Ende: html }; // Ende: eval // ----------------------- // source.cpp // #include "header.hpp" namespace eval { // ... CEvalExport::CEvalExport(const CEvalScheme& evsc, const string& path, ESplitFileMode mode) throw (COpenFileError) : m_Path(path), m_Eval(evsc), m_SplitMode(mode), m_FileCounter(0) { // ... } // ... namespace html { void CHtmlExport::m_beginHeader() { // ... } }; };
doxygen sagt dann dazu u.a.:
.../source.cpp:28: Warning: documented function `eval::CEvalExport::CEvalExport' was not declared or defined. [...] .../source.cpp:560: Warning: documented function `void eval::html::CHtmlExport::m_beginHeader' was not declared or defined.
Dabei ist auch seltsam, dass z.B. "m_beginHeader" gar nicht dokumentiert ist, was natürlich auch so beabsichtigt ist. Übrigens generiert doxygen eine Dok., allerdings fehlen dabei die Methoden, bei denen dieser Fehler auftritt. Insbesondere fehlt die Klasse CHtmlExport sogar vollständig.
Ideen?
-
*push*
Hat vielleicht jemand noch eine Idee?