11
votes

(Visual) Analyse de dépendance du projet C ++

J'ai quelques grands projets que je travaille dans mon nouveau lieu de travail, qui dispose d'un ensemble compliqué de dépendances de la bibliothèque liées statiquement liées entre elles.

Le nombre de Libs environ 40-50 et il est vraiment difficile de déterminer ce que la structure était initialement censée être, il n'y a pas de documentation claire sur la carte de dépendance complète.

Quels outils voudraient-ils recommander d'extraire de telles données?

Vraisemblablement, de la manière la plus simple, si ce sont les suivants:

  1. Définissez l'ensemble des chemins correspondant aux unités de bibliothèque

  2. Définissez tous les fichiers .cppr / .h dans ceux qui appartiennent à ces unités de compilation

  3. capture la 1ère commande #incluez l'arborescence de dépendance

    On aurait assez d'informations pour composer une carte - refacteur - et recomposer la carte, jusqu'à ce que l'on ait créé une certaine commande.

    Je note que http://www.ndepend.com a quelque chose de gentil mais c'est exclusivement .NET Malheureusement.

    J'ai lu quelque chose à propos de Doxygen pouvant accomplir une analyse de dépendance statique avec la configuration; Quelqu'un a-t-il déjà appuyé sur le service pour accomplir une telle tâche?


0 commentaires

6 Réponses :


11
votes

2 commentaires

Maintenant c'est ce que je cherchais. Je me sentais jaloux de ce que le produit Ndepend pourrait faire. Cependant, ce sont vraiment les montagnes de l'héritage C ++ que nous devons maintenir cela est très cruellement besoin d'outils tels que celui-ci.


Hmm ... Peut-être que je suis dense, mais il semble que CPPdepend (2.8.5) ne permet pas d'afficher les dépendances de fichiers (#include Dépendency). Cela montre une richesse d'informations, mais "seulement" sur le niveau du projet + classe.



3
votes

Cet outil est excellent pour analyser l'arborescence include: INCLUMANAGER . Vous devriez être capable d'obtenir beaucoup d'informations utiles de cet outil.


1 commentaires

Dead-Ish Link là-bas.



2
votes

includefinder est un outil gratuit I ont utilisé avant avec succès.


2 commentaires

Merci, cela a l'air un peu obsolète, mais quelques personnes l'ont mentionnée, il a donc dû avoir son apogée à une étape. :)


Comme il avait une source, je pourrais faire des modifications mineures qui ont répondu à mes besoins immédiats. Mais oui, ce n'est pas brillant;)



2
votes

Je dois commencer à travailler avec un projet C ++ à grande échelle nécessitant une gestion de dépendance, donc naturellement, je regarde autour de certains outils. J'étais surpris à voir que le CPPdepend a été signalé comme le favori ici en tant que licence unique coûte 300 €, alors que Incluelemanager est de 20 £ .. et fait le même travail. Juste au cas où n'importe qui ici a utilisé ou les deux outils, existe-t-il une "bonne" raison pour laquelle je devrais dépenser le supplément de 280 £ (1 £ ~ 1 €) pour le CPPDEPEND?

* Veuillez noter que j'aimerais avoir ma propre copie personnelle, de savoir si la société l'a ou non non pertinente.


0 commentaires

4
votes

http://github.com/yuzhichang/cppdep peut être ce que vous voulez. Je l'ai écrit pour analyser les dépendances entre composants / packages / groupes d'emballages d'un grand projet C / C ++. C'est une réécriture de Dep_utils (ADEP / CDEP / LDEP) qui est fournie par la conception logicielle C ++ à grande échelle de John Lakos.


0 commentaires

2
votes

Vous pourrez peut-être utiliser des doxys comme aide, ce qui produit des raccordes représentant les fichiers inclus dans le cadre de la documentation générée.

Voir: http://www.doxys.org

-Martin


0 commentaires