Arbeiten mit Secure Programming Lint

Beschreibung
Lint ist ein Werkzeug zur statischen Codeanalyse und prüft den Source Code auf Unstimmigkeiten aus der Sprachdefinition. Weitere Einzelheiten dazu in der Wikipedia.

Herunterladen
Zu finden ist dieses Tool auf seiner Homepage, siehe den Link weiter unten. Unter Binaries und dann für das benutzte Betriebssystem. Ich benutze Windows, also den Link für den Windows Installer und das .msi Paket

Installieren
Das .msi File mit Doppelklick installieren. Als Installationspfad wähle ich unter Users in meinem Bereich den Ordner Tools und gebe splint-3.1.2 als Zielordner an. Die Installation läuft problemlos ab und unter Start finde ich dann ‚Splint Console‘ eingerichtet. Klicke ich darauf, dann öffnet sich eine Kommandozeile.

Konfigurieren
Die Konfiguration kann mit jedem Aufruf in der Kommandozeile erfolgen oder aber in einem Initialisierungs- oder Optionsfile, das Standardmässig ‚.splintrc‘ heißt. Der Punkt davor ist wichtig, er stammt aus Unix und bedeutet ursprünglich, das dieses File nicht angezeigt wird. Es kann auch einen beliebigen anderen Namen haben, muss dann aber mit f<file> in der Kommandozeile angegeben werden: ’splint -foptionsfile irgendeinfile.c‘

Ich erstelle also ein .splintrc file. Wenn Windows hier mit dem . ein Problem hat, dann erstmal ohne. Anschliessend dann in der Komandozeile mit ‚cd‘ in das Arbeitsverzeichnis wechseln und mit ‚rename splintrc .splintrc‘ den Punkt dann hinzufügen.

Als erstes trage ich dann den Suchpfad für die SPLint Bibliotheken ein:

+larchpath C:\Users\Master\Tools\splint-3.1.2\lib

dann die Suchpfade für die verwendeten include Dateien, die hängen vom verwendeten Compiler ab, bei mir also MinGW.

+IC:\Users\Master\MinGW\include
+IC:\Users\Master\MinGW\lib\gcc\mingw32\4.8.1\include

danach kommen dann alle Flags, so wie sie gebraucht werden, bis alle Fehler beseitigt sind. Dann sollte kein Flag mehr hier drin stehen.

Anwenden
Jetzt wird es aufwendig.
Ich nehme jetzt mein Beispielprogramm, den JSON Parser. Öffne also eine Splint Console und gehe mit ‚cd‘ in den Ordner jsmn-master. Mit ’splint jsmn‘ starte ich einen Testlauf und stolpere direkt über einen ‚Parse Error‘. Hier stören offensichtlich unterschiedliche Datentypdefinitionen. Da nur ein stdlib.h eingebunden ist versuche ich mal, ob der Compiler auch ohne den funktioniert. Ich setze diese Zeile also als Kommentar und kompiliere neu. Ich stelle fest: Hurra, geht auch so!
Ein neuer Testlauf läuft sauber durch und bescheinigt mir 44 code warnings.
Soll die Ausgabe nicht auf der Konsole, sondern in einer gesonderten Textdatei erscheinen, dann macht man das z.B. mit ’splint jsmn.c > splint.txt‘ Jetzt erscheint nur noch die Angabe der Code Warnings in der Konsole, der Rest steht in der Textdatei.
Die Ausgabe hat folgendes Format:
Dateiname (Zeile, Spalte)
Warnungstext (manchmal wird hier das Flag, mit dem diese Meldung abgeschaltet werden kann, angegeben)
Meistens ist klar was gemeint ist. Ansonsten gibt es im splint Ordner ein Unterverzeichnis docs. In diesem ist ein Manual für SPLint enthalten, in dem alles ausführlich beschrieben ist. Es gilt also: RTFM!

Wenn dann die vielen Meldungen abgearbeitet sind, und auch kein Flag mehr in der Konfigurationsdatei gesetzt werden muss, dann bin ich mit der Linterei durch und habe mir eine Pause verdient.

Links

Homepage
http://www.splint.org

Windows Installer
http://github.com/maoserr/splint_win32/downloads

Definition von Lint in der Wikipedia
https://de.wikipedia.org/wiki/Lint_(Programmierwerkzeug)

Liste mit DOS Kommandos
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds.mspx?mfr=true

Veröffentlicht von

Jürgen

Ich bin Software Ingenieur und habe meine Schwerpunkte in allen Aktivitäten, die zur Software Entwicklung gehören. Am längsten bin ich als Software Entwickler von Embedded Software in C tätig.