C++-Audits
Nach oben zu C++-Audits-Konfiguration (Dialogfeld)
Die folgende Tabelle enthält C++-Quelltext-Audits mit einer Kurzbeschreibung.
C++-Audits
Audit | Beschreibung |
---|---|
Basis-Audits: | |
Funktionsaufruf gibt nicht den erwarteten Wert zurück. | |
Überprüfung auf als Argumente an eine Funktion übergebene Null-Zeiger, deren Argumente mit dem Attribut nonnull gekennzeichnet sind. | |
Warnung bei Zuweisung von anderen Werten als {0,1} zu booleschen Variablen. | |
Überprüfung, ob bei der Typumwandlung einer symbolischen Region in den Typ T (mit malloc) die Größe ein Vielfaches der Größe von T ist. | |
Überprüfung auf Typumwandlung eines Nicht-struct-Zeigers in einen struct-Zeiger. | |
Überprüfung auf Zuweisung einer festen Adresse zu einem Zeiger. | |
Überprüfung auf Zeigerarithmetik außerhalb von Array-Elementen. | |
Überprüfung auf Zeigersubtraktionen bei zwei Zeigern, die auf unterschiedliche Speicherblöcke zeigen. | |
Warnung bei unbeabsichtigter Verwendung von sizeof() bei Zeigerausdrücken. | |
Überprüfung auf Dereferenzierungen von Null-Zeigern. | |
Überprüfung auf Division durch Null. | |
Überprüfung auf Funktionen, die nicht zum Aufrufer zurückkehren. | |
Überprüfung auf an den Aufrufer zurückgegebene, nicht initialisierte Werte. | |
Überprüfung auf als Verzweigungsbedingungen verwendete, nicht initialisierte Werte. | |
Überprüfung auf als Array-Indizes verwendete, nicht initialisierte Werte. | |
Überprüfung auf Zuweisung von nicht initialisierten Werten. | |
Überprüfung, ob Adressen auf dem Stack-Speicher von der Funktion genutzt werden. | |
Überprüfung auf undefinierte Ergebnisse von binären Nicht-Zuweisungsoperatoren. | |
Überprüfung auf Deklarationen von Arrays mit variabler Länge (Variable LängeArrays) mit undefinierter Größe oder einer Größe von null. | |
Sicherheit: | |
Warnung bei Pufferüberläufen (ältere Prüfung). | |
Warnung bei Pufferüberläufen (neuere Prüfung). | |
Überprüfung auf einen an die Aufrufer zurückgegebenen Zeiger, der sich außerhalb des Bereichs befindet. | |
Warnung bei Verwendung von Gleitkommawerten als Schleifenzähler. | |
"Toter" Quellcode: | |
Überprüfung auf in Variablen gespeicherte Werte, die nie gelesen werden. | |
Warnung bei idempotenten Operationen. | |
Überprüfung auf unerreichbaren Code. | |
Sonstiges : | |
Vergleich von Gleitkommawerten (Comparing floating-point values). | |
Aufruf von virtuellen Funktionen aus Konstruktoren und dem Destruktor (Calling virtual functions from constructors and destructor). | |
Definition des Kopierkonstruktors (Define copy constructor). | |
Iterationsvariable wird im Schleifenrumpf nicht verwendet (Iteration variable is not used in loop body). | |
Überschreiben der "private"-Methode (Overriding private method). | |
Neudefinition einer geerbten nicht-virtuellen Funktion (Redefining an inherited nonvirtual function). | |
Verdächtige for-Anweisung (Suspicious for statement). | |
switch-Anweisung sollte default-case enthalten (switch statement should include the default case). | |
Namenskonventionen (Naming conventions). | |
Überschreiben von zusammengehörigen Operatoren als Ganzes (Overwrite related operators together). | |
Bereitstellung eines virtuellen Destruktors (Provide virtual destructor). | |
Verwendung von Typumwandlungen im C++-Stil (Use C++ style casts). | |
Methoden mit demselben Namen zusammen platzieren (Place Methods with Same Name Together). | |
Eingeschränkte Klassendeklaration (Restricted Class Declaration). | |
Zuweisungsoperator (Assignment operator). | |
Komplexe Initialisierung oder Update-Klausel in for-Schleife (Complex Initialization or Update Clause in for Loop). | |
Konstruktor-Initialisierungsliste (Constructor Initialization List). |