Tags personnalisés avec Doxygen

J'essaie de comprendre s'il existe un moyen de créer une balise personnalisée en utilisant Doxygen. J'ai trouvé L'option de fichier de configuration ALIAS mais cela ne fait pas exactement ce dont j'ai besoin. En gros, dans mon code, je veux être capable d'écrire quelque chose comme

/// req Requirement #322 - blah blah

Et ensuite Doxygen créer une liste comme il le fait pour les commandes bug et todo pour les lignes qui ont cette balise personnalisée. Est-ce possible avec Doxygen?

36
demandé sur Chris 2009-02-11 17:32:37

3 réponses

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

La solution que je suggère est:

  • Dans Doxyfile:

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

    /// \req #42 - The system shall work in any situation
    
44
répondu mouviciel 2009-02-11 15:21:14

Merci mouviciel! J'ai adopté votre solution et l'ai étendue à 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 aux exigences.

Ensuite, je crée un fichier appelé Requirements.dox qui fournit un lien entre l'ID d'exigence et une URL pour l'exigence dans mon outil de gestion des exigences(un suivi des problèmes 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, je mets:

/**
 * 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, la mise en œuvre des exigences et la vérification des exigences. Il fournit également satisfait aux exigences et vérifie les sections exigences dans la description de la classe ( ou fonction-partout où vous mettez la balise).

20
répondu Daniel 2011-09-30 16:12:33

combinaison des deux réponses ci-dessus, Vous pouvez avoir une seule balise clean requirement qui construira une table de références croisées et fournira également un lien direct vers le repo requirement dans vos documents:

Fichier de configuration Doxygen:

Alias = "requirement{1}=@xrefitem requirement \"Requirements\" \"Requirements Traceability\" <a href=\"http://your.requirementtool.com/browse/\1\">\1</a>"

Code Source:

@requirement{REQ-123} Bref résumé textuel de cette exigence de l'élément de

Cela rendra dans la documentation comme:

Exigences:

  • REQ-123 bref résumé textuel de cette exigence article
1
répondu Jay 2018-06-12 23:10:58