Rubylabor: Analyse von C++ Projekten

 
Develop-Zone

Analyse der Include Abhängigketen in C++ Projekten

Ein C++ Projekt hatte einmal folgendes Problem: Viele Header Dateien haben weitere Header Dateien angezogen. Einerseits ist dies sehr praktisch, weil es beim Anlegen neuer Source Dateien reicht, nur wenige Header Dateien anzuziehen. Leider ergab sich daraus, dass die Übersetzungzeit länger als nötig wurde und als hinderlich empfunden wurde. Ausserdem mußte bei der Änderungen einer Header Datei eine viel zu hohe Zahl von Quelldateien neu übersetzt werden.

Eine manuelle Umstellung von mehreren hundert Dateien braucht sehr viel Zeit. Wünschenswert ist es deshalb, sich erst einmal ein überblick über das Problem zu machen, um die schlimmsten Anhängigkeiten zuerst aufzulösen.

Das Analyseprogram

Das Analyseprogram liest ein Verzeichnis mit Quelldateien rekurviv ein, zeichnet für jede Datei auf von welchen anderen Dateien es abhängt, und gibt diese Abhängikeitsstruktur in mehreren möglichen Formaten aus:

Das Programm habe ich in zwei Hauptteile getrennt: Zum einen ein Teil, der rekursiv durch einen Dateienbaum geht und dabei alle Dateinamen in einem Array sammelt, und zum anderen die Analyse selbst. In Skriptsprachen neigt man dazu, dieses in einem Abwasch zu erledigen. Ich wollte mir aber die Möglichkeit offen lassen auf andere Weise an die Menge aller Quelldateien zu kommen, z.B durch Analysieren einer Projektdatei.

Die erste Version des vollständige Ruby Programms finden sie hier:


home - contact - dev-zone
Copyright © 2003 by Karsten Meier. All Rights reserved.