2010-06-02 3 views
2

est-il une bibliothèque qui analyse un code source de C++ pour produire disons, appel graphique, arbre d'héritage de classe, contrôle de flux, liste des membres de classe ou quoi que ce soit comme un graphe prêt à l'emploi (pas dans l'image du diagramme).bibliothèque de processeurs de code C++

pour le rendre plus clair, supposons que pour générer l'image appel graphique, il y aura un processus comme celui-ci:

`

C++ source -> parser -> intermediate structure -> renderer -> call graph image 
            ^
            | 
           [i need this] 

`

Répondre

3

Cela dépend de la précision de l'analyse. Si vous voulez qu'il soit absolument précis (ie ne devrait pas manquer une classe à cause d'une métaprogrammation de macro ou de template trop compliquée qu'il ne pourrait pas gérer), alors vous avez besoin d'un frontal C++ correct pour cela, et je ne suis pas au courant ceux qui sont à la fois gratuits et facilement réutilisables.

Si vous êtes prêt à payer, alors il y a au moins deux options:

EDG est utilisé pour conduire IntelliSense dans VC++ 2010, est assez impressionnant, et semble être très précis - dans mon expérience, il a géré correctement l'achèvement sur Boost.Lambda polymorphe (pas surprenant, étant donné qu'il conduit également compilateur EDG C++, qui doivent évidemment obtenir une entrée correcte). Je ne sais pas grand-chose sur l'interface de conception sémantique ou ses utilisateurs, mais Ira Baxter à partir de là est sur StackOverflow, donc je vais lui laisser le soin de fournir des informations plus complètes sur leur produit.

Si vous voulez gratuitement mais imparfait, alors peut-être GCC_XML est assez bon pour vous.

+0

GCC_XML fournit uniquement des informations de déclaration. Il n'y a aucune information fournie par lui sur le code, donc vous ne pouvez pas l'utiliser pour produire des graphiques d'appel. –

+1

Voir http://semanticdesigns.com/Products/DMS/FlowAnalysis.html pour l'analyse de flux et les informations de graphique d'appel disponibles avec DMS en général. Nous ne fournissons pas encore ces informations pour C++, bien que nous fassions tout cela pour C. Le frontal C++ * fait * analyser, construire des AST et construire des tables de symboles complètes. –

0
  1. il y a les faces intérieures de GCC. C'est en quelque sorte structuré comme une bibliothèque.
  2. Il y a les paquets Eclipse CDE qui analysent C++ assez bien pour l'EDI, ce qui peut ou peut ne pas être assez bien pour vous.
2

La famille de bibliothèques LLVM est probablement votre meilleur choix. Le support pour C++ n'était pas complet la dernière fois que j'ai vérifié, cependant.

Questions connexes