Veröffentlichung von cppcheck 2.6, einem statischen Code-Analyzer für die Programmiersprachen C++ und C

Die neue Version des statischen Code-Analyzers cppcheck 2.6 ist erschienen. Sie ermöglicht das Auffinden verschiedener Fehlerarten im Code der Programmiersprachen C und C++, einschließlich der Verwendung von nicht-standardmäßiger Syntax, die typisch für eingebettete Systeme ist. Eine Sammlung von Plugins wird bereitgestellt, die die Integration von cppcheck in verschiedene Entwicklungs-, Continuous Integration- und Testsysteme ermöglicht. Zudem werden Funktionen wie die Überprüfung der Codekonformität zu Stilrichtlinien angeboten. Sowohl der hauseigene Parser als auch der externe Parser von Clang können zur Code-Analyse verwendet werden. Außerdem enthält das Paket das Skript donate-cpu.py, um lokale Ressourcen für die gemeinschaftliche Überprüfung von Debian-Paket-Code bereitzustellen. Der Quellcode des Projekts wird unter der GPLv3-Lizenz verbreitet.

Die Entwicklung von cppcheck konzentriert sich auf die Identifizierung von Problemen im Zusammenhang mit undefiniertem Verhalten und der Verwendung potenziell unsicherer Konstruktionen. Ziel ist auch die Minimierung von Fehlalarmen. Zu den identifizierten Problemen gehören: Zeiger auf nicht existierende Objekte, Division durch Null, ganzzahlige Überläufe, fehlerhafte Bitverschiebungsoperationen, inkorrekte Typkonversionen, Probleme im Umgang mit dem Speicher, inkorrekte Nutzung der STL, Dereferenzierung von Nullzeigern, Überprüfungen nach dem tatsächlichen Zugriff auf den Puffer, Bufferüberläufe und die Verwendung von nicht initialisierten Variablen.

In der neuen Version:

  • Die folgenden Prüfungen wurden in den Kern des Analysewerkzeugs integriert:
    • Fehlender return-Operator im Funktionskörper;
    • Schreiben von überlappenden Daten, Bestimmung von undefiniertem Verhalten;
    • Vergleichswert liegt außerhalb des gültigen Bereichs des Typs;
    • Optimierung der Kopie wird nicht für return std::move(local) angewendet;
    • Eine Datei kann nicht gleichzeitig in unterschiedlichen Streams zum Lesen und Schreiben geöffnet werden;
  • Für Unix-Plattformen wurde die Unterstützung für die Ausgabe von Diagnosemeldungen in verschiedenen Farben hinzugefügt;
  • Die Zeichenanalyse für ValueFlow wurde hinzugefügt. Eine einfache Delta-Methode wird verwendet, um die Unterschiede zwischen zwei unbekannten Variablen zu berechnen.
  • Die Regeln, die für die Tokenliste „define“ verwendet werden, können auch auf #include angewendet werden.
  • Der Bibliotheks-Tag kann jetzt den Tag enthalten. Entsprechend können Funktionen wie free, die solche Container wie std::size, std::empty, std::begin, std::end usw. akzeptieren, yeld oder action für Container angeben.
  • Der Bibliotheks-Tag kann jetzt den Tag für intelligente Zeiger enthalten, die ein einzigartiges Eigentum (unique ownership) haben. Es wird jetzt eine Warnung bezüglich „hängender“ Verweise auf solche intelligenten Zeiger ausgegeben.
  • Probleme mit der Verarbeitung des Parameters —cppcheck-build-dir wurden behoben.
  • htmlreport kann jetzt Informationen über den Autor (mithilfe von git blame) ausgeben.
  • Die Warnungen zu Variablen, die nicht konstant sind, aber konstant sein könnten, wurden erweitert.
  • Ansammelnde Fehler und Unvollkommenheiten des Analysators wurden behoben.

Zusätzlich wurden die Prüfungen aus Misra C 2012, einschließlich der Änderungen 1 und 2, vollständig implementiert, mit Ausnahme der Regeln 1.1, 1.2 und 17.3. Die Prüfungen 1.1 und 1.2 müssen vom Compiler durchgeführt werden. Die Prüfung 17.3 kann beispielsweise vom GCC-Compiler durchgeführt werden.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster