Als erstes nehme ich das Tool Doxygen und erfasse die C-Sourcen damit. Danach kann ich im Verzeichnis Doxy-Doku, das ich dafür angelegt habe, die Datei index.html im Browser anzeigen (Doppelklick). Jetzt kann ich mir bequem den Call-Tree ansehen und die Variablen, sowie die Headerstruktur. Damit bekomme ich schon einmal einen ungefähren Eindruck von der Architektur der vorliegenden Software.
Am Beispiel JSMN Sourcen ohne Calltree: es ist eine einfache Bibliothek.
Ist eine Dokumentation bereits im Doxygen Format integriert, kann man sich diese ebenfalls bequem ansehen.
Für die weitere Analyse benutze ich dann das Tool CCCC (C and C++ Code Counter) und schaue mal, wie es mit der Zeilenanzahl LOC und der Komplexität nach McCabe der einzelnen Funktionen aussieht.
Am Beispiel JSMN Sourcen: Eine Übersicht
Am Beispiel JSMN Sourcen: Ergebnis der Auswertung.
Am Beispiel der Auswertung sieht man schon an der roten Markierung, das hier die Komplexität etwas zu hoch ist und die Funktion etwas zu lang. Die gelben Markierungen stehen für unschön, aber noch nicht kritisch.
Damit wird schon deutlich, wo noch etwas Verbesserungspotential zu holen ist. Im nächsten Schritt stehen dann die notwendigen Anpassungen an, um den Sourcecode zu verbessern und mögliche Fehlerquellen auszumerzen.
Will man noch tiefer einsteigen, dann kann man noch Codeinspektionen beziehungsweise Codereviews durchführen.
Vor kurzem habe ich einiges zum Thema Sourcecode Analyse gelesen und bin erfreut, das auch andere sich damit befassen. Vor allem das Erstellen von langlebigen Software Architekturen hilft, die weitere Pflege zu vereinfachen. Meistens begegnen mir bereits bestehende Systeme, die angepasst werden müssen. Da ist jede Information hilfreich. Dokumentation ist eigentlich immer knapp bis nicht vorhanden. Da hilft dann nur alles an Informationen einzusammeln, was noch zu finden ist: Beim Service z.B. Service Handbücher etc. , im Intranet, in den Sourcen selbst und bei Entwicklern, die daran beteiligt waren. All diese Informationen sammle ich dann in einem digitalen Notizbuch zusammen mit allen „Forschungsergebnissen“ aus der Analyse. Ob dieses Notizbuch eine Mindmap ist, oder eine einfache Webseite oder ein Wiki, wenn man mit mehreren Leuten daran arbeitet, spielt keine Rolle. Es hängt einfach von den vorhandenen Möglichkeiten ab. Eine genaue Vorgehensweise lässt sich nicht definieren. Es hängt zu vieles von den Umständen ab. Zur Vorgehensweise hilft es sich mit „Modern Heuristics“ zu befassen.
Literaturhinweise und Links
Download von CCCC
http://sourceforge.net/projects/cccc
Graphviz (für Doxygen)
http://www.graphviz.org
Doxygen Homepage
http://www.doxygen.org
Codeinspektion / Codereview
siehe Wikipedia
„Altlasten im Griff“
IX Developer, Heft Januar / Februar 2017
Carola Lilienthal
Langlebige Software Architekturen: Technische Schulden analysieren, begrenzen und abbauen
dpunkt.verlag
Zbigniew Michalewicz, David B. Fogel
How to Solve It: Modern Heuristics
Springer Verlag