2009-07-16 29 views
11

Ich habe ein paar große Projekte, an denen ich arbeite, an meinem neuen Arbeitsplatz, die eine komplizierte Reihe von statisch verknüpften Bibliotheksabhängigkeiten zwischen ihnen haben.(Visual) C++ - Projektabhängigkeitsanalyse

Die Libs Zahl um 40-50 und es ist wirklich schwer zu bestimmen, was die Struktur wurde ursprünglich gedacht zu sein, ist es nicht klar, Dokumentation über die volle Abhängigkeit Karte.

Welche Tools würde jemand empfehlen, solche Daten zu extrahieren?

Vermutlich in einfachster Weise, wenn tat folgendes:

  1. den Satz von Pfaden definieren, die auf Bibliothekseinheiten entsprechen

  2. Satz alle CPP/.h Dateien innerhalb denen gehören auf diese Kompilierungseinheiten

  3. Erfassung der 1. Ordnung # include Abhängigkeitsbaum

Man hätte genug Informationen, um eine Map - Refactor - zu erstellen - und die Map neu zu kompilieren, bis man eine Reihenfolge erstellt hat.

Ich stelle fest, dass http://www.ndepend.com etwas schön, aber das ist ausschließlich .NET leider.

Ich habe gelesen, dass Doxygen eine statische Abhängigkeitsanalyse mit Konfiguration durchführen kann; hat es jemals jemand in Dienst gestellt, um solch eine Aufgabe zu erfüllen?

Antwort

11

This link führt zu:

CppDepend

+0

Nun das ist, was ich suchte. Ich war eifersüchtig auf das, was das NDepend-Produkt leisten konnte. Aber es ist wirklich die Berge von Legacy C++, die wir pflegen müssen, die dringend solche Werkzeuge benötigt. –

+2

Hmm ... vielleicht bin ich dicht, aber CppDepend (2.8.5) scheint es nicht zu erlauben, Dateiabhängigkeiten zu sehen (#include-Abhängigkeit). Es zeigt eine Fülle von Informationen, aber "nur" auf Projekt- und Klassenebene. –

3

Dieses Tool eignet sich hervorragend für die Analyse der Baum sind: IncludeManager. Sie sollten in der Lage sein, viele nützliche Informationen von diesem Tool zu erhalten.

+0

tote Verbindung dort. –

2

IncludeFinder ist ein kostenloses Tool, das ich zuvor erfolgreich verwendet habe.

+0

Danke, es sieht etwas veraltet aus, aber ein paar Leute haben es erwähnt, also muss es seine Blütezeit gehabt haben. :) –

+1

da es Quelle hatte, konnte ich einige kleine Änderungen vornehmen, die meinen unmittelbaren Bedürfnissen entsprachen. Aber ja, es ist nicht glänzend;) – peterchen

1

Ich bin wegen mit großem Maßstab c zu arbeiten ++ Projekt, das Bedürfnis von Abhängigkeitsmanagement ist, so natürlich habe ich bei einigen Werkzeugen um gesucht. Ich war überrascht zu sehen, dass CppDepend als der Favorit hier markiert wurde, da eine einzelne Lizenz 300 € kostet, während IncludeManager £ 20 ist. Und macht den gleichen Job. Falls jemand hier eines oder beide Tools verwendet, gibt es einen "guten" Grund, warum ich die zusätzlichen £ 280 (£ 1 ~ € 1) für CppDepend ausgeben sollte?

* Bitte beachten Sie, dass ich so meine eigene persönliche Kopie haben möchte, ob das Unternehmen hat oder nicht ist irrelevant.

4

http://github.com/yuzhichang/cppdep kann sein, was Sie wollen. Ich schrieb es für die Analyse von Abhängigkeiten zwischen Komponenten/Pakete/Paketgruppen eines großen C/C++ - Projekts. Es ist eine Neuschreibung von dep_utils (adep/cdep/ldep), die von John Lakos Buch Large-Scale C++ Software Design zur Verfügung gestellt wird.

2

Sie könnten in der Lage sein DoxyS als Hilfe zu verwenden, die graps darstellt enthaltenen Dateien als Teil der erzeugten Dokumentation erzeugt.

See: http://www.doxys.org

-Martin