Wie arbeitet ein "Code Analyzer"?
Jeder der programmiert, kennt das Problem. Man ist fertig und möchte das Programm kompilieren. Doch immer wieder bricht der Vorgang ab. Irgendwo in den tausenden Zeilen von Code hat sich ein Fehler versteckt, der erst mühsam herausgefunden werden muss. Unterstützung erhält man durch Code Analyzer.
/wedata%2F0030477%2F2011-07%2FSource-Code.png)
Was ist Code-Analyse
Programmierer müssen bei ihrer Arbeit vor allem darauf achten, dass der Quelltext keine Fehler enthält. Ansonsten funktioniert das Programm später nicht wie es soll oder kann erst gar nicht kompiliert werden. Gerade komplexe Sprachen wie der C# Source Code sind nicht auf den ersten Blick zu verstehen. Muss man nun jede Zeile einzeln nach dem Fehler absuchen, hat man eine Mammutaufgabe vor sich, die schnell zu einer Suche nach der Nadel im Heuhaufen mutiert. Durch Code Analyse kann man sich aber in vielen Fällen diese Arbeit sparen und sie durch eines der Analyse Tools erledigen lassen.
Aber prüft den nicht auch der Compiler nach Fehlern im Quellcode, könnte man meinen.
Doch, auch dieser nimmt einer Fehlersuche vor. Allerdings beschränkt sich diese Prüfung auf einfache Analysen. Mit dem Softwaretestverfahren einer statischen Analyse kann er meist nicht mithalten.
Worauf wird der Quelltext getestet
Durch den Code Analyzer wird der Quelltext auf ganz bestimmte Sorten von Fehlern untersucht, noch bevor eine Kompilierung statt findet. Es handelt sich also um ein so genanntes White-Box-Testverfahren, da ein Blick in den Quelltext erforderlich ist und nicht nur rein funktionale Test durchgeführt werden.
Im Rahmen der Static Analysis werden sowohl simple Coding-Standards geprüft, aber auch Typumwandlungen oder Bereichsgrenzen. Damit entfällt das manuelle Überprüfen des Quelltexts durch einen Entwickler, da viele Fehler im Inhalt so durch die Software automatisch aufgedeckt werden. Das erleichtert die Arbeit und natürlich den Zeitbedarf für ein Projekt enorm. Auch dient es der Sicherheit, da so Speicherlecks und Pufferüberläufe besser aufgespürt werden können.
Ein einfaches Beispiel: Schlampigkeitsfehlern beim Programmieren decken diese Werkzeuge schonungslos auf, während der Compiler nur eine Warnung ausgibt.
Der Klassiker: Lint
Ein Klassiker zur statischen Quelltextanalyse ist das Programm Lint. Bereits seit 1979 ist es auf dem Markt. Damit dürfte es zu den ältersten Softwareprodukten gehören, die immer noch genutzt werden. Auch wenn heute viele Teile der Prüfungen aus Lint in den Compiler eingearbeitet wurden, ist dieses Werkzeug nicht mehr wegzudenken.
Umgangssprachlich verwenden Programmierer daher auch heute noch gerne den Ausdruck "linten", wenn sie eine statische Prüfung des Quelltexts durchführen.
Fazit
Komplexe Programme fordern jede Menge Code-Zeilen. Ohne den Einsatz von Programmen wie Lint bzw. der Umsetzungen im Compiler ist es oft nicht denkbar, einen entsprechend hoch optimierten Code zustande zu bekommen.