41 votes

Tags personnalisés avec Doxygen

J'essaie de savoir s'il existe un moyen de créer une balise personnalisée en utilisant Doxygen. J'ai trouvé l'option du fichier de configuration ALIAS mais cela ne fait pas exactement ce dont j'ai besoin. Fondamentalement, dans mon code, je veux pouvoir écrire quelque chose comme

 /// \req Requirement #322 - blah blah
 

Ensuite, demandez à Doxygen de créer une liste comme pour les commandes \bug et \todo pour les lignes qui ont cette balise personnalisée. Est-ce possible avec Doxygen?

50voto

mouviciel Points 36624

La généralisation de \bug et \todo est \xrefitem .

La solution que je propose est:

  • dans Doxyfile:

     ALIASES += "req=\xrefitem req \"Requirement\" \"Requirements\" "
     
  • en code documenté:

     /// \req #42 - The system shall work in any situation
     

26voto

Daniel Points 162

Grâce mouviciel! J'ai adopté votre solution et l'a étendue pour mes fins.

Le texte ci-dessous va dans mon Doxyfile:

ALIASES += req{1}="\ref SRTX_\1 \"SRTX-\1\" "
ALIASES += satisfy{1}="\xrefitem satisfy \"Satisfies requirement\" \"Requirement Implementation\" \1"
ALIASES += verify{1}="\xrefitem verify \"Verifies requirement\" \"Requirement Verification\" \1"

Où SRTX est le nom de mon projet et est utilisé comme préfixe pour les exigences.

Puis-je créer un fichier appelé Exigences.dox qui établit un lien entre l'exigence de l'id et l'URL de l'exigence dans mon outil de gestion des exigences (un outil de suivi dans mon cas).

/**
@page Requirements

@section Build1

@anchor SRTX_1113
<a href="https://foo.bar.com/mantis/view.php?id=1113">SRTX-1113</a>

@anchor SRTX_1114
<a href="https://foo.bar.com/mantis/view.php?id=1114">SRTX-1114</a>

*/

On pourrait aussi mettre le texte de l'exigence dans la balise d'ancrage si vous n'avez pas besoin de lien vers une source externe.

Dans mon code j'ai:

/**
 * This is the basic executive that schedules processes.
 * @satisfy{@req{1114}}
 */
class Scheduler: public Process
{
    ...
}

Et dans mes tests, j'ai mis:

/**
 * Provide a number of tests for process scheduling.
 * @verify{@req{1114}}
 */
class Scheduler_ut : public CppUnit::TestFixture
{
    ...
}

Cela me donne des pages liées pour les Exigences, les Exigences de mise en Œuvre, et les Exigences de Vérification. Il fournit également Satisfait à l'exigence et Vérifie les exigences des sections dans la description de la classe (ou de la fonction, où vous mettez la balise).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X