02.03.2006, 18:47 Uhr
Fehlerfischen im Zeilenmeer
Klocwork K7 und Coverity Prevent sind zwei Code-Analyse-Tools, die sich in Ursprung, Design und Fehlersuche unterscheiden.
Die steigende Hardware-Leistung kommt nicht zuletzt der Entwicklung von Quellcode-Analysewerkzeugen zugute, mit denen sich riesige Code-Bestände gründlich nach Mängeln durchforsten lassen. Coverity Prevent und Klocwork K7 sind zwei Vertreter dieser Gilde. Beide Produkte basieren - wie das bekannte, mit Unix verbandelte Werkzeug Lint - auf der statischen Code-Analyse. K7 und Prevent treiben die Fehlersuche jedoch weiter, als Lint dies vermag. Beide sind darauf spezialisiert, mit ihren Analysatoren alle möglichen ausführbaren Pfade der Code-Basis abzuarbeiten. Die untersuchten Quelltexte umfassen dabei eine halbe bis mehrere Millionen Zeilen Code. Gesucht wird etwa nach ungültigen Funktionen, unstimmigen Werten oder Variablen, deren Speicherplatz durch andere Funktionen aufgehoben wurde. Solche «Cross-functional Errors» aufzuspüren, die beim Testen nicht zwingend zum Vorschein kommen, haben sich die Hersteller auf die Fahne geschrieben. Klocwork wurde vor zehn Jahren durch ehemalige Entwickler von Nortel Networks ins Leben gerufen. Vor dem Hintergrund, dass in Telefon-Switches Millionen von Code-Zeilen werkeln, sollte ein robustes Analysewerkzeug bereitgestellt werden.
Das Produkt, K7, sticht vor allem durch seinen umfangreichen Satz an Reporting-, Visualisierungs- und Navigations-Tools für das Management und die Verarbeitung der Fehlerresultate heraus. Sämtliche GUI sind Windows-basiert. K7 versteht sich mit C und Java. Klocwork macht auch C++ geltend, was ihr Coverity aber abspricht. Im Testcenter wurde diese Unstimmigkeit leider nicht verifiziert. Verifizieren liess sich jedoch, dass K7 im Vergleich mit Prevent deutlich mehr Bugs meldet, von denen jedoch viele False Positives sind, also bedeutungslose Fehler. Werden diese weggezählt, so erzielen die Tools vergleichbare Resultate. Was mehr Sinn macht, bleibt von Fall zu Fall zu entscheiden. Die Aufdeckung von Concurrency-Fehlern, die durch die gleichzeitige Ausführung von Funktionen entstehen, bleibt Prevent vorbehalten. Die aus dem akademischen Umfeld stammende Coverity hat Prevent eine Unix-Orientierung verliehen: Das Tool verzichtet zugunsten der Kommandozeile auf ein pompöses GUI, ohne die Verwaltung zu vernachlässigen. Es integriert sich leicht in Entwicklungsumgebungen und versteht sich mit einer Vielzahl von C/C++-Compilern, ist aber auch teurer als K7. Laut 451 Group verfügt Coverity über einen repräsentativen Kundenstamm, der - im Gegensatz zu Klocwork - in vergangener Zeit um nahmhafte IT-Firmen ergänzt wurde.
Michael Keller