C++-Audits

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu C++-Audits-Konfiguration (Dialogfeld)


Die folgende Tabelle enthält C++-Quelltext-Audits mit einer Kurzbeschreibung.

C++-Audits

Audit Beschreibung
Basis-Audits:
AdjustedReturnValue – Funktionsaufruf gibt nicht den erwarteten Wert zurück

Funktionsaufruf gibt nicht den erwarteten Wert zurück.

AttributeNonNull

Überprüfung auf als Argumente an eine Funktion übergebene Null-Zeiger, deren Argumente mit dem Attribut nonnull gekennzeichnet sind.

BoolAssignment

Warnung bei Zuweisung von anderen Werten als {0,1} zu booleschen Variablen.

CastSize

Ü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.

CastToStruct – Umwandlung eines Nicht-struct- in einen struct-Zeiger

Überprüfung auf Typumwandlung eines Nicht-struct-Zeigers in einen struct-Zeiger.

FixedAddr – Zuweisung einer festen Adresse zu einem Zeiger

Überprüfung auf Zuweisung einer festen Adresse zu einem Zeiger.

PointerArithm

Überprüfung auf Zeigerarithmetik außerhalb von Array-Elementen.

PointerSub – Ermitteln der Größe durch Zeigersubtraktion

Überprüfung auf Zeigersubtraktionen bei zwei Zeigern, die auf unterschiedliche Speicherblöcke zeigen.

SizeofPtr – Verwendung von sizeof() für einen Zeigertyp

Warnung bei unbeabsichtigter Verwendung von sizeof() bei Zeigerausdrücken.

NullDereference

Überprüfung auf Dereferenzierungen von Null-Zeigern.

DivideZero – Überprüfung auf Division durch Null

Überprüfung auf Division durch Null.

NoReturnFunctions – Funktionen, die nicht zurückkehren

Überprüfung auf Funktionen, die nicht zum Aufrufer zurückkehren.

UndefReturn

Überprüfung auf an den Aufrufer zurückgegebene, nicht initialisierte Werte.

Branch

Überprüfung auf als Verzweigungsbedingungen verwendete, nicht initialisierte Werte.

ArraySubscript

Überprüfung auf als Array-Indizes verwendete, nicht initialisierte Werte.

Assign

Überprüfung auf Zuweisung von nicht initialisierten Werten.

StackAddressEscape

Überprüfung, ob Adressen auf dem Stack-Speicher von der Funktion genutzt werden.

UndefinedBinaryOperatorResult

Überprüfung auf undefinierte Ergebnisse von binären Nicht-Zuweisungsoperatoren.

VLASize – Array mit variabler Länge mit undefinierter Größe

Überprüfung auf Deklarationen von Arrays mit variabler Länge (Variable LängeArrays) mit undefinierter Größe oder einer Größe von null.

Sicherheit:
ArrayBound – Zugriff auf ein Element außerhalb der Array-Grenzen

Warnung bei Pufferüberläufen (ältere Prüfung).

ArrayBoundV2 – Zugriff auf ein Element außerhalb der Array-Grenzen

Warnung bei Pufferüberläufen (neuere Prüfung).

ReturnPtrRange – Zurückgegebener Zeiger zeigt auf eine Position außerhalb des Objekts

Überprüfung auf einen an die Aufrufer zurückgegebenen Zeiger, der sich außerhalb des Bereichs befindet.

FloatLoopCounter

Warnung bei Verwendung von Gleitkommawerten als Schleifenzähler.

"Toter" Quellcode:
DeadStores – Ausdruckswert wird nicht verwendet

Überprüfung auf in Variablen gespeicherte Werte, die nie gelesen werden.

IdempotentOperations – Warnung bei idempotenten Operationen

Warnung bei idempotenten Operationen.

UnreachableCode – Überprüfung auf unerreichbaren Code

Überprüfung auf unerreichbaren Code.

Sonstiges :
CFPV – Vergleich von Gleitkommawerten

Vergleich von Gleitkommawerten (Comparing floating-point values).

CVFCD – Aufrufen von virtuellen Funktionen aus Konstruktoren und dem Destruktor

Aufruf von virtuellen Funktionen aus Konstruktoren und dem Destruktor (Calling virtual functions from constructors and destructor).

DCPC – Definieren des Kopierkonstruktors

Definition des Kopierkonstruktors (Define copy constructor).

IVNU – Iterationsvariable wird im Schleifenrumpf nicht verwendet

Iterationsvariable wird im Schleifenrumpf nicht verwendet (Iteration variable is not used in loop body).

OPM – Überschreiben der "private"-Methode

Überschreiben der "private"-Methode (Overriding private method).

RINF – Neudefinition einer geerbten nicht-virtuellen Funktion

Neudefinition einer geerbten nicht-virtuellen Funktion (Redefining an inherited nonvirtual function).

SFS – Verdächtige for-Anweisung

Verdächtige for-Anweisung (Suspicious for statement).

SSSIDC – switch-Anweisung sollte den default-Fall enthalten

switch-Anweisung sollte default-case enthalten (switch statement should include the default case).

NC – Namenskonventionen

Namenskonventionen (Naming conventions).

OROT – Überschreiben von zusammengehörigen Operatoren als Ganzes

Überschreiben von zusammengehörigen Operatoren als Ganzes (Overwrite related operators together).

PVD – Bereitstellen eines virtuellen Destruktors

Bereitstellung eines virtuellen Destruktors (Provide virtual destructor).

UCSC – Verwendung von Typumwandlungen im C++-Stil

Verwendung von Typumwandlungen im C++-Stil (Use C++ style casts).

PMSNT – Methoden mit demselben Namen zusammen platzieren

Methoden mit demselben Namen zusammen platzieren (Place Methods with Same Name Together).

RCD – Eingeschränkte Klassendeklaration

Eingeschränkte Klassendeklaration (Restricted Class Declaration).

ASO

Zuweisungsoperator (Assignment operator).

CIUCFL

Komplexe Initialisierung oder Update-Klausel in for-Schleife (Complex Initialization or Update Clause in for Loop).

CIL

Konstruktor-Initialisierungsliste (Constructor Initialization List).

Siehe auch