C-Code zur Evaluierung statischer Code-Analyse-Tools

Also steige ich bald wieder auf C-Codierung um. Ich habe bereits Erfahrung mit Gimpel Lint und Splint, würde aber gerne ein paar andere ausprobieren.

Kennt jemand einen C-Code, der speziell zum Testen der Fähigkeiten von statischen C-Code-Analysatoren entwickelt wurde?

Das heißt, Code, der absichtlich auf freigegebenen Speicher zugreift, über das Ende von Arrays hinaus liest, nicht erreichbarer Code usw. usw.

Ich möchte es verwenden, um statische C-Code-Analysatoren zu evaluieren, um mir bei der Auswahl zu helfen.

Kostenlos, bitte, vorzugsweise Windows, aber ich akzeptiere auch Linux.


Das ist meine On-Topic-Frage. Ich glaube nicht, dass ich mich beschweren würde, wenn es einige Off-Topic-Kommentare gäbe, die solche Analysatoren vergleichen, auf Websites, Vergleiche, Empfehlungen, einfache Einrichtung/Nutzung usw. verweisen (zwinker ;-)

Wenn es eine Hilfe ist, ich hatte einen oder zwei Kollegen, die genau das schreiben, wonach Sie suchen - die ganze Zeit. Wenn es nicht um Copyright-Probleme ginge, könnte ich Ihnen Megabytes an Beispielen schicken.
Lolx - (+1) Normalerweise schreibe ich meine eigenen - aber nicht absichtlich
Wenn Sie Open-Source-Projekte programmieren, werden Sie es schwer haben, Coverity für die statische Analyse zu schlagen, kostenloser Cppcheck ist ebenfalls einen Blick wert, aber das Bienenknie für eingebetteten C-Code ist LDRA - LDRA ist jedoch alles andere als kostenlos. Eines der besten ist natürlich, gcc -Wall -WerrorDinge zu reparieren!
@Mawg Nur um Ihnen einige Ideen zu geben ... Liste der C / C ++ - Tools für die statische Codeanalyse
Ja, ich weiß (Tahnks trotzdem, +1) - aber nach den Regeln dieser Seite kann ich nicht nach einem "Besten" fragen, also werde ich sie alle bewerten und sehen, womit ich mich gut fühle
Mawk, selbst wenn es deine "thematische Frage" wäre, bin ich mir nicht sicher, ob es das wirklich ist. Auf dieser Seite geht es um das Empfehlen von Software – und ja, das schließt Bibliotheken für die Entwicklung ein. Aber IMHO keine Codefragmente. Als Referenz: Ist die Frage nach beispielhaftem, illustrativem Code zum Thema? sagt: Fragen sollten nicht primär nach Code fragen . Also würde ich das als Off-Topic betrachten, sorry.
Ich habe darüber nachgedacht, bevor ich gepostet habe, aber ich habe festgestellt, dass, wie Sie sagen, viele Leute hier nach Bibliotheken fragen ( ). Was sind sie, aber Quellcode? Diese Seite ist für Software Recommendationsund ich bitte die Mitglieder, einige Software zu empfehlen. Vielleicht sollten wir die Seite umbenennen in Application Recommendations? ;-) Wenn ich pedantisch sein will, kann ich sagen, dass ich nicht nach einem Codeschnipsel frage, sondern nach einer vollständigen Testsuite. - Wo kann ich sonst fragen? ( ) Es gab vor nicht allzu langer Zeit eine Website für Bibliotheksempfehlungen in Area 51, aber sie scheint verschwunden zu sein :-(
Die einzige aktuelle Antwort auf Izzys verwiesene Frage lautet: "Ich würde das Gefühl haben, nein, außer im Kontext der Beschreibung von etwas, das Teil der Antwort ist - zum Beispiel zu veranschaulichen, wie eine bestimmte Sprach-/Compiler-Kombination ein bestimmtes Problem löst" - ich möchte etwas s / w um zu veranschaulichen, wie ein statischer Codeanalysator das spezifische Problem des fehlerhaften Codes löst.
@Izzy Diese Meta-Diskussion gilt nicht direkt: Mawk fragt nach einer Codebasis, nicht nach Beispielcode. Ich denke, dies rechtfertigt eine neue Meta-Diskussion.
OK, @Gilles & Mawg – dann habe ich meine Stimme zurückgezogen (Mawg: Entschuldigung für die Fehlinterpretation – obwohl das „wo kann ich sonst fragen“-Argument nicht wirklich zählt ;)
Danke, Izzy. Ich finde es trotzdem ok, auch wenn ich eventuelle Einwände verstehen kann. Übrigens, Programmierer werden es nicht unterhalten ... meta.programmers.stackexchange.com/questions/7414/…
@Mawg könnte einfach nach Software fragen, die Softwareanalysetools ausführt, und dann ist diese Frage in Ordnung. "Quellcode ein optionales Plus". Ich habe eine Antwort geliefert, die aus genau einer solchen Software besteht.

Antworten (2)

Das von der NSA entwickelte und bei NIST erhältliche Julia- Testset soll ein breites Spektrum an Tests darstellen, um den Vergleich verschiedener Analysewerkzeuge unter Verwendung eines standardisierten beschreibenden Vokabulars zu ermöglichen.

Es gibt eine Reihe von Tests für C/C++ und eine weitere Reihe von Tests für Java.

Mein Unternehmen hat es verwendet, um unser dynamisches Analysetool CheckPointer für C zu testen. Mit Zehntausenden von Einzeltests schien es ziemlich gründlich zu sein.

Die NIST-Site unter dem Link enthält eine Vielzahl anderer Test-Sets, die von einer Vielzahl von Autoren beigesteuert wurden. AFAIK, diese sind alle kostenlos als Download verfügbar. Wähle dein Gift :-}

Diese Testsuite von Toyota enthält ungültige Speicherzugriffe, Überläufe usw. Sie werden praktischerweise in separaten Dateien abgelegt:

https://github.com/orbitcowboy/itc-benchmarks/tree/master/01.w_Defects

Sie wurden verwendet, um die False-Positive/Negative-Rate einiger statischer Codeanalyse-Tools herauszufinden.

BSD-Lizenz