Ein Weg aus dem Include-Chaos (Visual Studio mit IncludeManager)

Sebastian Pohl - 26. Februar 2014

Include ChaosBilder in diesem Artikel wurden mit dem IncludeManager von ProFactor Software gemacht.

Gerade bei Projekten, in denen mehrere Entwickler mit unterschiedlichen Programmierstilen und -erfahrungsleveln zusammenarbeiten, passiert es häufiger, dass die Include-Reihenfolge der unterschiedlichen Programmteile immer undurchsichtiger und verstrickter wird. Meistens merkt man auch erst dann, dass die Struktur vielleicht überarbeitungswürdig ist, wenn es bereits zu spät ist.

Problematisch wird es dann, wenn man über mehrere Includes quasi im Kreis gearbeitet hat und immer wieder auf Probleme stöß,t die aus diesen zirkulären Abhängigkeiten entstehen. Dazu kommt, dass die Übersichtlichkeit stark leidet, wenn die gleichen Dateien immer wieder inkludiert werden, obwohl die Funktionalität eigentlich schon auf anderem Weg eingeholt wurde.

Die Struktur eines Projektes, an dem ich beteiligt bin ist im einführenden Bild auf der linken Seite zu sehen. Blau sind die .cpp Dateien, Rot die Header und Grün sind Systembibliotheken. Wie man deutlich sehen kann, ist das Ganze sehr unübersichtlich und durcheinander. Viele Dateien werden mehrfach und an verschiedenen Stellen eingebunden, einige kreisförmige Includeschleifen gibt es auch.

Als kleiner Spoiler an dieser Stelle: Auf der rechten Seite im Bild ist die gleiche Struktur nach dem „Aufräumen“.

Aber wie löst man jetzt dieses Chaos auf? Ohne weitere Tools zur Hilfe zu nehmen ist das ziemlich aufwändig. Man kann versuchen das ganze per Hand zu machen und die Struktur aufzuzeichen. Allerdings kann das je nach Projektgröße mehr oder weniger aussichtslos werden. Ein Tool, dass die Struktur als Diagramm anzeigen kann erleichtert die Sache enorm. Ist man MSDN Abonnent, dann kann man seit einiger Zeit ein Feature Pack für Visual Studio herunterladen, dass eine entsprechende Erweiterung enthält.

Hat man nicht dieses Vergnügen, bleiben dennoch einige Optionen offen, so kann man zum Beispiel mit Doxygen und graphviz zumindestens eine grafische Repräsentation erhalten. Schöner wird es mit dem IncludeManager. Dieser integriert sich in Visual Studio und bietet eine interaktive Ansicht der Struktur.

Include ManagerOben ist bereits gezeigt, wie die Übersicht über ein vollständiges Projekt aussehen kann, hier sieht man dann auch, dass man für eine einzelne Datei die Abhängigkeitsstruktur anzeigen lassen kann.

Da die Übersicht bei vielen Dateien mit unübersichtlichen Includes leicht leiden kann, bietet das Tool mehrere Funktionen, die das Auffinden und Lösen von Problemen erleichtern.

Die erste Hilfe ist der Mouseover-Effekt für die Verbindungen. Geht man mit der Maus über einen der Pfeile, wird er blau eingefärbt und ist leichter zu verfolgen. Klickt man den Pfeil an, gelangt man zur Datei die die Ressource am Pfeilende beansprucht.

Die zweite Funktion lässt sich mit einem Rechtsklick auf einen beliebigen Dateinamen im Graph und der Auswahl von „Show Include Paths“ aufrufen. Dadurch wird rekursiv angezeigt, welche anderen Dateien diese Datei includieren und wo die Inhalte dadurch verfügbar sind. Alle Elemente, die dadurch Zugriff erhalten sind mit rot eingefärbten Pfeilen verbunden. Gerade für das Auffinden zirkulärer Abhängigkeiten ist das extrem praktisch.

Mit dem IncludeManager ist das „Aufräumen“ zwar nicht automatisch erledigt, aber die Arbeit ist sehr viel einfacher und übersichtlicher geworden.

Die elegantere Variante wäre natürlich, von vorn herein sauber zu strukturieren, leider klappt das nicht immer. 🙂

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.