2008-10-14 15 views
14

Doxygen est un peu lent - il faut environ quelques minutes pour traiter l'ensemble de mon projet, donc pour les petits changements incrémentaux c'est plus long que de construire le reste de mon code. Il y a des milliers de fichiers sans aucune documentation, donc je suppose que c'est en passant le plus clair de leur temps à les traiter. Y at-il un moyen de l'obtenir pour passer les fichiers sans aucune documentation?Comment faire fonctionner doxygen plus rapidement?

Pourquoi ne pas traiter uniquement les fichiers modifiés?

Répondre

11

De Doxygen:

Comment puis-je exclure tous les répertoires de test de mon arborescence?

En termes simples un modèle exclure comme ceci dans le fichier de configuration:

EXCLUDE_PATTERNS = /test/

Donc, vous devriez utiliser des modèles pour exclure des fichiers. Cela fait longtemps que j'ai utilisé Doxygen, mais je ne me souviens d'aucune option pour traiter uniquement les fichiers modifiés.

+0

C'est probablement la meilleure idée à laquelle je puisse penser - je peux exclure les répertoires qui n'incluent pas encore de documentation. –

3

Doxygen permet de trouver des connexions entre les fichiers, modifiés ou non. Mais Doxygen ne se souvient pas des informations sur les fichiers non modifiés, il doit donc traiter l'intégralité du code à chaque fois.

Peut être une solution serait d'organiser le projet de sorte que les fichiers jamais modifiés appartiennent à un module qui est exclu de la portée Doxygen et dont la documentation est déjà disponible. Ensuite, il serait possible de dire à Doxygen de lier la documentation nouvellement créée à cette documentation de module existante. En outre, il serait également possible de faire fonctionner Doxygen module par module, en ne traitant que les modules modifiés et une documentation de haut niveau qui soit liée à toutes les documentations des modules.

6

J'ai trouvé que la désactivation de l'option SEARCH_INCLUDES a fait une grande différence. Il regardait tout le SDK de la plate-forme et incluait des chemins pour le compilateur qui n'étaient pas documentés de toute façon et qui n'apparaîtraient pas dans la documentation générée.

5

Il existe une option DOT_NUM_THREADS qui peut augmenter les performances sur les machines multicœurs. Malheureusement, doxygen lui-même est juste un seul thread.

Une autre approche serait d'organiser votre code en modules fonctionnent pour chaque module une séparé instance de doxygen et linkt les balises formant ensemble: http://www.stack.nl/~dimitri/doxygen/external.html

1

Je ne pense pas avoir Doxygen exécuté sur un cycle normal de dev est un bon idée. Notre build Doxygen fonctionne dans le cadre des responsabilités de notre serveur d'intégration continue. Cela dit, il y a quelques avantages à exécuter doxygen chaque build pour attraper les documents manquants. Donc, je couperais la config doxygen pour les compilations de développement en supprimant les diagrammes, et j'arrêterais même l'importation de la pomme dans xcode.