web-dev-qa-db-fra.com

À l'exclusion des répertoires pour Doxygen

Je veux que Doxygen ignore, contourne, ne recherche pas les répertoires suivants de mon projet:

*/.svn/*
*/docs/*
*/Properties/*
*/bin/*

Selon la FAQ Doxygen :

How can I exclude all test directories from my directory tree?

Simply put an exclude pattern like this in the configuration file:

EXCLUDE_PATTERNS = */test/*

Donc, mon fichier Doxygen ressemble à ceci:

# If the value of the INPUT tag contains directories, you can use the 
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
# certain files from those directories. Note that the wildcards are matched 
# against the file with absolute path, so to exclude all test directories 
# for example use the pattern */test/*

EXCLUDE_PATTERNS       = */.svn/* \
                         */docs/* \
                         */published/* \
                         */bin/* \
                         */obj/*

La sortie de Doxygen est:

Searching for include files...
Searching for example files...
Searching for images...
Searching for files in directory c:/Test_Fixtures/pc_application/docs
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/tmp
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/tmp/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/tmp/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/tmp/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/tmp
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/tmp/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/tmp/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/tmp/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/tmp
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/tmp/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/tmp/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/tmp/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/tmp
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/tmp/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/tmp/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/tmp/text-base

Ce qui montre clairement que EXCLUDE_PATTERNS ne fonctionne pas. J'ai également l'option EXCLUDE définie comme:

# The EXCLUDE tag can be used to specify files and/or directories that should 
# excluded from the INPUT source files. This way you can easily exclude a 
# subdirectory from a directory tree whose root is specified with the INPUT tag.

EXCLUDE                = ../.svn \
                         ../docs \
                         ../published \
                         ../docs/.svn \
                         ../docs/.svn

Ce qui ne fonctionne pas non plus.

Ainsi, la question de 100000 USD est la suivante: comment puis-je faire en sorte que Doxygen exclue, contourne, ignore, reste à l'écart des répertoires ou dossiers spécifiés (de préférence quelque chose qui fonctionne)?

J'utilise Doxygen Wizard sur Windows 7 sur la plate-forme CPU 64 bits et Doxygen 1.7.3.

44
Thomas Matthews

Notez que les caractères génériques sont comparés au fichier avec un chemin absolu

Alors, utilisez simplement des chemins absolus pour vos exclusions;)

PS: BTW, j'ai trop de problèmes avec ça. Cette petite mention sur le commentaire du doxyfile semble passer trop souvent inaperçue.

Oups, j'ai raté le détail que vous aviez déjà essayé. C'est peut-être un problème avec la valeur multiligne: essayez d'inclure tous les chemins, en utilisant juste un espace comme séparateur. Cela (plus les schémas absolus) est suffisant sur les quelques systèmes que j'utilise récemment doxygen.


J'ai fait des tests plus approfondis et j'ai également jeté un coup d'œil à la documentation du doxyfile. La syntaxe correcte utilise l'espace pour la séparation. Si vous voulez vraiment passer sur plusieurs lignes, la syntaxe prise en charge et documentée serait:

EXCLUDE_PATTERNS       = */.svn/*
EXCLUDE_PATTERNS      += */docs/*
EXCLUDE_PATTERNS      += */published/*
# and so on

Regardez également de plus près comment fonctionnent les modèles d'exclusion: le répertoire lui-même est inclus, puis tout ce qu'il contient sera testé par rapport aux modèles d'exclusion et (puisqu'il correspondra toujours), soyez exclu sur un fichier par fichier). base de fichier.

Alors regardez de plus près votre sortie: le Searching for files in directory les lignes sont censées être là (doxygen recherchera le répertoire, mais n'y trouvera rien car tout est exclu); obtenez-vous Parsing code for file ou Generating docs for pour l'un des contenus de ces répertoires? Si vous n'en obtenez aucun, cela signifie que tout fonctionne bien (les répertoires sont recherchés, mais rien sur eux n'est inclus). Si les fichiers sont effectivement inclus, indiquez la séparation d'espace ou le += syntaxe à essayer. Je ne vois rien sur les documents, même laissant entendre que votre \ la syntaxe pourrait fonctionner (bien sûr, j'ai peut-être oublié quelque chose).

41
Edurne Pascual

Notez que je peux voir un phénomène similaire lorsque j'utilise doxygen. Cependant, cela se produit lorsque l'outil recherche des exemples de fichiers et d'images:

Searching for example files...
Searching for files in directory .../wpkg/mainline/documentation
Searching for files in directory .../wpkg/mainline/documentation/.svn
Searching for files in directory .../wpkg/mainline/documentation/.svn/prop-base
[...]
Searching for images...
Searching for files in directory .../wpkg/mainline/documentation
Searching for files in directory .../wpkg/mainline/documentation/.svn
Searching for files in directory .../wpkg/mainline/documentation/.svn/prop-base
[...]

Comme vous disposez de la configuration EXCLUDE_PATTERNS pour ignorer les sous-répertoires .svn. Je suppose que c'est un bogue dans doxygen qui devrait vérifier ces exclusions lors de la numérisation d'exemples et d'images.

Il semble également qu'il puisse imprimer tous les répertoires à l'écran, mais les ignore correctement car avant de les utiliser, il vérifie les modèles d'exclusion. Mais ce n'est qu'une supposition; bien qu'il semble que quelqu'un dise que c'est comme ça que ça fonctionne ici:

http://doxygen.10944.n7.nabble.com/EXCLUDE-DIRECTORY-PATTERN-td2185.html

2
Alexis Wilke

Comment puis-je faire en sorte que Doxygen exclue, contourne, ignore, reste à l'écart des répertoires ou dossiers spécifiés (de préférence quelque chose qui fonctionne)?

Utilisez l'option de configuration INPUT!

INPUT = src other_folder README.md

Comme mentionné , les modèles d'exclusion considéreront toujours les fichiers dans les répertoires et ne les analyseront pas en fonction de leur correspondance avec l'expression régulière. La spécification des dossiers et des fichiers à prendre en compte permettra d'obtenir le résultat souhaité de ne même pas rechercher les dossiers en premier lieu, ce qui peut considérablement améliorer le temps de génération.

Notez que cela nécessite que la directive EXCLUDE soit vide, sinon la recherche se fera.

0