Frage

Wir planen Splint als Code Analyzer für unsere C-Codebasis zu verwenden. Aber wir Splint Werkzeug nie zuvor versucht, damit wir Ihre Eingabe wollen auf ihrem benifts, Vor-und Nachteile.

War es hilfreich?

Lösung

Lesen Sie dieses Blog-Post und diese Folien für einen schnellen Überblick darüber, was es für Sie tun kann.

Andere Tipps

Lint-Tools sind nützlich für die Suche nach häufig auftretenden Problemen und Fehlern, die Code-Reviews ist in der Regel zu verpassen. Meine Meinung ist, dass Sie nichts zu verlieren haben, wenn statische Code-Analyse zu tun. Der einzige Nachteil ist, dass Sie eine Menge von Fehlalarmen oder Warnungen erhalten könnten, die unwichtig sein könnte (das heißt Stil Empfehlung Codierung). Sie müssen nur gute Filterung Fähigkeiten entwickeln. Statische Analysatoren könnte dir auch nicht fangen alles, aber hey, es ist besser als nichts.

Hier ist ein weißes Papier aus den SANS Sie das könnte Interesse Institut: http://www.sans.org/reading_room / White Papers / secure / secure-Software-Entwicklung-Code-Analyse-tools_389

Splint zeichnet Ihr Code idiomatische zu machen (und damit leichter zu lesen, für verschiedene Compiler zu parsen, mehr tragbar und leichter zu Refactoring). Splint kann subtile Bugs wie implizite Abgüsse zwischen ints und Schwimmer finden. Splint Spuren nach unten Speicherlecks und anderen Sicherheitslücken.

Versuchen Sie es:. splint hello.c

Wie waffleman statische Analysatoren vorgeschlagen haben eine Menge Fehlalarme erzeugen. Ich habe Prevent gefunden besser Alarme als Sparrow zu geben. Das sind zwei wir für die statische Analyse verwendet werden.

Ein Beispiel für eine typische Fehlalarm und guten Alarm:

bar (char **output) 
{
  *output = malloc(100);
}
foo()
{
  char *output=NULL;
  bar(&output)   
}

In Funktionsleiste wäre es Speicherverlust für den Zeiger Ausgabe berichten. In der Funktion foo meldet es NULL dereferenzieren, wenn die Funktionsleiste aufgerufen wird. Aber dennoch seine Wahl einen echten Alarm zwischen 100s von Fehlalarmen zwischen finden.

So können wir Speicherlecks finden, die während der Code-Reviews übersehen werden. Prevent Lizenz ist teuer und sobald ein Alarm falsch markiert wird es in der nachfolgenden Analyse erscheinen tut. Daher muss man finden, wenn Splint tut das gleiche.

Das Tool sucht nach Muster, die möglicherweise Fehler sein könnte. Der Vorteil ist, dass das Werkzeug latente Fehler finden kann und der Nachteil ist, dass es auch eine ganze Reihe an False Positives finden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top