web-dev-qa-db-fra.com

Documentation des valeurs d'énumération avec doxygen

Donné:

namespace Foo {
    class Foo {
    public:
        /// Foo enum, possible ways to foo
        enum class Foo {
            /// Foo it with an A
            A,
            /// Foo it with a B
            B,
            /// Foo it with a C
            C
        }
    }
}

Et le Doxyfile par défaut fait avec doxygen -g, J'ai compris:

generated documentation

Comment puis-je obtenir les valeurs de l'énumération documentées? J'ai essayé de mettre le commentaire avant/après le membre, en utilisant ///<, etc., en vain. Serait-ce juste un bug dans doxygen? Les exemples dans la documentation fonctionnent. (Cliquer sur le nom de l'énumération ne m'amène nulle part)

32
Corey Richardson

Avec Doxygen 1.8.2, les deux travaux suivants me conviennent:

Utilisation de ///

/// This is an enum class
enum class fooenum {
    FOO, ///< this is foo
    BAR, ///< this is bar
};

Utilisation de /*! ... */

/*! This is an enum class */
enum class fooenum {
    FOO, /*!< this is foo */
    BAR, /*!< this is bar */
};

Brief DescriptionDetailed Description

Le changelog doxygen dit que enum class est pris en charge dans Doxygen 1.8.2, donc je soupçonne qu'il peut y avoir un problème de syntaxe mineur dans vos commandes. Pourriez-vous s'il vous plaît comparer vos commandes avec les deux extraits ci-dessus?

Nouvelles fonctionnalités

Ajout du support pour C++ 11:

strongly typed enums, e.g.:
enum class E
24
Masked Man

Notez que je déteste personnellement avoir des fichiers d'en-tête qui vont en longueur (parce que documenter signifie écrire au moins 2 ou 3 lignes de documentations, pas un mot, donc je n'ai généralement pas assez de mémoire), donc je préfère documenter dans le. fichier cpp.

Pour ce faire, vous utilisez la fonction\var de Doxygen.

Donc, l'en-tête est nu:

namespace Foo {
    class Foo {
    public:
        enum class Foo {
            A,
            B,
            C
        };
    };
}

Et le fichier .cpp a:

namespace Foo {

/** \enum Foo::Foo
 * \brief Foo enum, possible ways to foo
 *
 * All the necessary details about this enumeration.
 */

/** \var Foo::A
 * \brief Foo it with an A
 *
 * When you use A... etc.
 */

/** \var Foo::B
 * \brief Foo it with an B
 *
 * When you use B... etc.
 */

/** \var Foo::C
 * \brief Foo it with an C
 *
 * When you use C... etc.
 */

}

De cette façon, je peux vraiment documenter longuement ce qui m'arrive souvent.

9
Alexis Wilke

Le style ci-dessous fonctionne pour moi:

enum class Foo {
  /**Foo it with A*/
  A,
  /**Foo it with B*/
  B
}
6