Referenz zur C++ Core Guidelines-Prüferreferenz

In diesem Abschnitt werden C++ Core Guidelines Checker-Warnungen aufgeführt. Informationen zur Codeanalyse finden Sie unter /analyze (Codeanalyse) und Schnellstart: Codeanalyse für C/C++.

Hinweis

Einige Warnungen gehören zu mehreren Gruppen, und nicht alle Warnungen weisen ein vollständiges Referenzthema auf.

OWNER_POINTER Gruppe

C26402-DONT_HEAP_ALLOCATE_MOVABLE_RESULT
Zurückgeben eines bereichsbezogenen Objekts anstelle eines zugewiesenen Heaps, wenn es über einen Verschiebungskonstruktor verfügt. Siehe C++ Core Guidelines R.3.

C26403-RESET_OR_DELETE_OWNER
Setzen Sie einen T-Zeiger des Besitzers<> "Variable" zurück oder löschen Sie sie explizit. Siehe C++ Core Guidelines R.3.

C26404-DONT_DELETE_INVALID
Löschen Sie keinen Besitzer<T> , der möglicherweise ungültig ist. Siehe C++ Core Guidelines R.3.

C26405-DONT_ASSIGN_TO_VALID
Weisen Sie keinem Besitzer<T> zu, der sich möglicherweise im gültigen Zustand befindet. Siehe C++ Core Guidelines R.3.

C26406-DONT_ASSIGN_RAW_TO_OWNER
Weisen Sie einem Besitzer<T> keinen unformatierten Zeiger zu. Siehe C++ Core Guidelines R.3.

C26407 DONT_HEAP_ALLOCATE_UNNECESSARILY
Bevorzugen Sie bereichsbezogene Objekte, nicht unnötig zuordnen. Siehe C++ Core Guidelines R.5.

C26429-USE_NOTNULL
Symbol "Symbol" wird nie auf Nullwerte getestet, es kann als not_null markiert werden. Siehe C++ Core Guidelines F.23.

C26430-TEST_ON_ALL_PATHS
Das Symbol "Symbol" wird nicht auf Nullwerte für alle Pfade getestet. Siehe C++ Core Guidelines F.23.

C26431-DONT_TEST_NOTNULL
Der Ausdruckstyp "Ausdruck" ist bereits gsl::not_null. Testen Sie sie nicht auf Nullwerte. Siehe C++ Core Guidelines F.23.

RAW_POINTER Gruppe

C26400-NO_RAW_POINTER_ASSIGNMENT
Weisen Sie das Ergebnis einer Zuordnung oder eines Funktionsaufrufs mit einem Besitzer<T-Rückgabewert> nicht einem unformatierten Zeiger zu. Verwenden Sie stattdessen "Owner T>"<. Siehe C++ Core Guidelines I.11.

C26401-DONT_DELETE_NON_OWNER
Löschen Sie keinen unformatierten Zeiger, der kein Besitzer<T> ist. Siehe C++ Core Guidelines I.11.

C26402-DONT_HEAP_ALLOCATE_MOVABLE_RESULT
Zurückgeben eines bereichsbezogenen Objekts anstelle eines zugewiesenen Heaps, wenn es über einen Verschiebungskonstruktor verfügt. Siehe C++ Core Guidelines R.3.

C26408 NO_MALLOC_FREE
Vermeiden Sie malloc() und free(), bevorzugen Sie die nothrow-Version von "neu" mit "delete". Siehe C++ Core Guidelines R.10.

C26409-NO_NEW_DELETE
Vermeiden Sie das explizite Aufrufen von neuen und löschen, verwenden Sie stattdessen "std::make_unique<T> ". Siehe C++ Core Guidelines R.11.

C26429-USE_NOTNULL
Symbol "Symbol" wird nie auf Nullwerte getestet, es kann als not_null markiert werden. Siehe C++ Core Guidelines F.23.

C26430-TEST_ON_ALL_PATHS
Das Symbol "Symbol" wird nicht auf Nullwerte für alle Pfade getestet. Siehe C++ Core Guidelines F.23.

C26431-DONT_TEST_NOTNULL
Der Ausdruckstyp "Ausdruck" ist bereits gsl::not_null. Testen Sie sie nicht auf Nullwerte. Siehe C++ Core Guidelines F.23.

C26481-NO_POINTER_ARITHMETIC
Verwenden Sie keine Zeigerarithmetik. Verwenden Sie stattdessen Span. Siehe C++ Core Guidelines Bounds.1.

C26485-NO_ARRAY_TO_POINTER_DECAY
Ausdruck 'Ausdruck': Kein Array zum Zeigerzerfall. Siehe C++ Core Guidelines Bounds.3.

UNIQUE_POINTER Gruppe

C26410 NO_REF_TO_CONST_UNIQUE_PTR
Der Parameter "parameter" ist ein Verweis auf const eindeutigen Zeiger, verwenden Sie stattdessen const T* oder const T&. Siehe C++ Core Guidelines R.32.

C26411 NO_REF_TO_UNIQUE_PTR
Der Parameter "parameter" ist ein Verweis auf einen eindeutigen Zeiger, der nie neu zugewiesen oder zurückgesetzt wird, stattdessen T* oder T& verwenden. Siehe C++ Core Guidelines R.33.

C26414-RESET_LOCAL_SMART_PTR
Verschieben, Kopieren, Erneutes Zuweisen oder Zurücksetzen eines lokalen smarten Zeigers "Symbol". Siehe C++ Core Guidelines R.5.

C26415 SMART_PTR_NOT_NEEDED
Der Intelligente Zeigerparameter "symbol" wird nur für den Zugriff auf den enthaltenen Zeiger verwendet. Verwenden Sie stattdessen T* oder T& Siehe C++ Core Guidelines R.30.

SHARED_POINTER Gruppe

C26414-RESET_LOCAL_SMART_PTR
Verschieben, Kopieren, Erneutes Zuweisen oder Zurücksetzen eines lokalen smarten Zeigers "Symbol". Siehe C++ Core Guidelines R.5.

C26415 SMART_PTR_NOT_NEEDED
Der Intelligente Zeigerparameter "symbol" wird nur für den Zugriff auf den enthaltenen Zeiger verwendet. Verwenden Sie stattdessen T* oder T& Siehe C++ Core Guidelines R.30.

C26416-NO_RVALUE_REF_SHARED_PTR
Der freigegebene Zeigerparameter "symbol" wird von rvalue reference übergeben. Übergeben Sie stattdessen den Wert. Siehe C++ Core Guidelines R.34.

C26417 NO_LVALUE_REF_SHARED_PTR
Der freigegebene Zeigerparameter "symbol" wird durch Verweis übergeben und nicht zurückgesetzt oder neu zugewiesen. Verwenden Sie stattdessen T* oder T& Siehe C++ Core Guidelines R.35.

C26418-NO_VALUE_OR_CONST_REF_SHARED_PTR
Der freigegebene Zeigerparameter "symbol" wird nicht kopiert oder verschoben. Verwenden Sie stattdessen T* oder T& Siehe C++ Core Guidelines R.36.

DEKLARATIONsgruppe

C26426 NO_GLOBAL_INIT_CALLS
Der globale Initialisierer ruft eine Nicht-Constexpr-Funktion "Symbol" auf. Siehe C++ Core Guidelines I.22.

C26427 NO_GLOBAL_INIT_EXTERNS
Der globale Initialisierer greift auf das externe Objekt "Symbol" zu. Siehe C++ Core Guidelines I.22.

C26444 NO_UNNAMED_RAII_OBJECTS
Vermeiden Sie unbenannte Objekte mit benutzerdefinierter Konstruktion und Zerstörung. Siehe ES.84: Deklarieren Sie keine lokale Variable ohne Namen (versuchen Sie es).

CLASS Group

C26432 DEFINE_OR_DELETE_SPECIAL_OPS
Wenn Sie einen Standardvorgang im Typ "Symbol" definieren oder löschen, definieren oder löschen Sie sie alle. Siehe C++ Core Guidelines C.21.

C26433-OVERRIDE_EXPLICITLY
Die Funktion "Symbol" sollte mit "Außerkraftsetzung" gekennzeichnet werden. Siehe C.128: Virtuelle Funktionen sollten genau eine der virtuellen Funktionen angeben, außer Kraft setzen oder endgültig sein.

C26434-DONT_HIDE_METHODS
Die Funktion "symbol_1" blendet eine nicht virtuelle Funktion "symbol_2" aus. Siehe C++ Core Guidelines C.128.

C26435-SINGLE_VIRTUAL_SPECIFICATION
Die Funktion "Symbol" sollte genau eine von "virtual", "override" oder "final" angeben. Siehe C.128: Virtuelle Funktionen sollten genau eine der virtuellen Funktionen angeben, außer Kraft setzen oder endgültig sein.

C26436-NEED_VIRTUAL_DTOR
Der Typ "Symbol" mit einer virtuellen Funktion benötigt entweder öffentliche virtuelle oder geschützte nicht virtuelle Destruktor. Siehe C++ Core Guidelines C.35.

C26443-NO_EXPLICIT_DTOR_OVERRIDE
Außerkraftsetzungsdestruktoren sollten keine expliziten "Außerkraftsetzungen" oder "virtuellen" Bezeichner verwenden. Siehe C.128: Virtuelle Funktionen sollten genau eine der virtuellen Funktionen angeben, außer Kraft setzen oder endgültig sein.

STYLE-Gruppe

C26438 NO_GOTO
Vermeiden Sie goto. Siehe C++ Core Guidelines ES.76.

FUNCTION-Gruppe

C26439-SPECIAL_NOEXCEPT
Diese Art von Funktion kann nicht ausgelöst werden. Deklarieren Sie es noexcept. Siehe C++ Core Guidelines F.6.

C26440-DECLARE_NOEXCEPT
Funktion 'Symbol' kann deklariert noexceptwerden. Siehe C++ Core Guidelines F.6.

C26447-DONT_THROW_IN_NOEXCEPT
Die Funktion wird deklariert noexcept , ruft aber eine Funktion auf, die Ausnahmen auslösen kann. Siehe C++ Core Guidelines: F.6: Wenn Ihre Funktion möglicherweise nicht ausgelöst wird, deklarieren Sie sie noexcept.

PARALLELITÄTsgruppe

C26441-NO_UNNAMED_GUARDS
Guard-Objekte müssen benannt werden. Siehe C++ Core Guidelines cp.44.

CONST-Gruppe

C26460-USE_CONST_REFERENCE_ARGUMENTS
Das Bezugsargument 'Argument' für Die Funktion 'Funktion' kann als constmarkiert werden. Siehe C++ Core Guidelines con.3.

C26461 USE_CONST_POINTER_ARGUMENTS:
Das Zeigerargument 'Argument' für die Funktion 'Funktion' kann als Zeiger constmarkiert werden. Siehe C++ Core Guidelines con.3.

C26462-USE_CONST_POINTER_FOR_VARIABLE
Der wert, auf den durch "Variable" verwiesen wird, wird nur einmal zugewiesen und als Zeiger markiert const. Siehe C++ Core Guidelines con.4.

C26463-USE_CONST_FOR_ELEMENTS
Die Elemente des Arrays "Array" werden nur einmal zugewiesen, markieren Sie Elemente const. Siehe C++ Core Guidelines con.4.

C26464-USE_CONST_POINTER_FOR_ELEMENTS
Die werte, auf die von Elementen des Arrays "array" verwiesen wird, werden nur einmal zugewiesen, markieren Sie Elemente als Zeiger.const Siehe C++ Core Guidelines con.4.

C26496-USE_CONST_FOR_VARIABLE
Die Variable 'Variable' wird nur einmal zugewiesen, und sie wird als const. Siehe C++ Core Guidelines con.4.

C26497-USE_CONSTEXPR_FOR_FUNCTION
Diese Funktion kann markiert constexpr werden, wenn die Kompilierungszeitauswertung gewünscht ist. Siehe C++ Core Guidelines F.4.

C26498-USE_CONSTEXPR_FOR_FUNCTIONCALL
Diese Funktionsaufruffunktion kann verwendet werdenconstexpr, wenn die Kompilierungszeitauswertung gewünscht ist. Siehe C++ Core Guidelines con.5.

TYPE-Gruppe

C26437-DONT_SLICE
Nicht segmentieren. Siehe C++ Core Guidelines ES.63.

C26465-NO_CONST_CAST_UNNECESSARY
Verwenden const_cast Sie nicht, um wegzukehren const. const_cast ist nicht erforderlich; Constness oder Volatilität wird von dieser Konvertierung nicht entfernt. Siehe C++ Core Guidelines Type.3.

C26466 NO_STATIC_DOWNCAST_POLYMORPHIC
Verwenden static_cast Sie keine Downcasts. Eine Umwandlung aus einem polymorphen Typ sollte dynamic_cast verwenden. Siehe C++ Core Guidelines Type.2.

C26471-NO_REINTERPRET_CAST_FROM_VOID_PTR
Nicht reinterpret_cast verwenden. Eine Umwandlung von void* kann verwendet werden static_cast. Siehe C++ Core Guidelines Type.1.

C26472-NO_CASTS_FOR_ARITHMETIC_CONVERSION
Verwenden static_cast Sie keine arithmetischen Konvertierungen. Verwenden Sie die Klammerninitialisierung, gsl::narrow_cast oder gsl::narrow. Siehe C++ Core Guidelines Type.1.

C26473-NO_IDENTITY_CAST
Wechseln Sie nicht zwischen Zeigertypen, bei denen der Quelltyp und der Zieltyp identisch sind. Siehe C++ Core Guidelines Type.1.

C26474-NO_IMPLICIT_CAST
Wandeln Sie nicht zwischen Zeigertypen um, wenn die Konvertierung implizit sein könnte. Siehe C++ Core Guidelines Type.1.

C26475 NO_FUNCTION_STYLE_CASTS
Verwenden Sie keine Funktionsstil-C-Umwandlungen. Siehe C++ Core Guidelines ES.49.

C26490-NO_REINTERPRET_CAST
Nicht reinterpret_cast verwenden. Siehe C++ Core Guidelines Type.1.

C26491-NO_STATIC_DOWNCAST
Verwenden static_cast Sie keine Downcasts. Siehe C++ Core Guidelines Type.2.

C26492-NO_CONST_CAST
Verwenden const_cast Sie nicht, um wegzukehren const. Siehe C++ Core Guidelines Type.3.

C26493-NO_CSTYLE_CAST
Verwenden Sie keine C-Format-Umwandlungen. Siehe C++ Core Guidelines Type.4.

C26494-VAR_USE_BEFORE_INIT
Variable 'Variable' ist nicht initialisiert. Initialisieren Sie immer ein Objekt. Siehe C++ Core Guidelines Type.5.

C26495-MEMBER_UNINIT
Variable 'Variable' ist nicht initialisiert. Initialisieren Sie immer eine Membervariable. Siehe C++ Core Guidelines Type.6.

BOUNDS-Gruppe

C26446-USE_GSL_AT
gsl::at() Verwenden Sie lieber den nicht deaktivierten Tiefstellungsoperator. Siehe C++-Kernrichtlinien: Bounds.4: Verwenden Sie keine Standardbibliotheksfunktionen und Typen, die nicht gebunden sind.

C26481-NO_POINTER_ARITHMETIC
Verwenden Sie keine Zeigerarithmetik. Verwenden Sie stattdessen Span. Siehe C++ Core Guidelines Bounds.1

C26482-NO_DYNAMIC_ARRAY_INDEXING
Nur Index in Arrays mit Konstantenausdrücken. Siehe C++ Core Guidelines Bounds.2

C26483-STATIC_INDEX_OUT_OF_RANGE
Der Wertwert liegt außerhalb der Grenzen (0, gebunden) der Variablen "Variable". Index in Arrays mit Konstantenausdrücken, die sich innerhalb der Grenzen des Arrays befinden. Siehe C++ Core Guidelines Bounds.2

C26485-NO_ARRAY_TO_POINTER_DECAY
Ausdruck 'Ausdruck': Kein Array zum Zeigerzerfall. Siehe C++ Core Guidelines Bounds.3

GSL-Gruppe

C26445-NO_SPAN_REF
Ein Verweis auf gsl::span oder std::string_view kann ein Hinweis auf ein Lebenszeitproblem sein. Siehe C++ Core Guidelines GSL.view: Views

C26446-USE_GSL_AT
gsl::at() Verwenden Sie lieber den nicht deaktivierten Tiefstellungsoperator. Siehe C++-Kernrichtlinien: Bounds.4: Verwenden Sie keine Standardbibliotheksfunktionen und Typen, die nicht gebunden sind.

C26448-USE_GSL_FINALLY
Erwägen Sie die Verwendung gsl::finally , wenn die endgültige Aktion beabsichtigt ist. Siehe C++ Core Guidelines: GSL.util: Utilities.

C26449-NO_SPAN_FROM_TEMPORARY
gsl::span oder std::string_view aus einem Temporären erstellt wird, ist ungültig, wenn der temporäre Wert ungültig ist. Siehe C++ Core Guidelines: GSL.view: Views.

Veraltete Warnungen

Die folgenden Warnungen sind in einem frühen experimentellen Regelsatz der Kernrichtlinienprüfer vorhanden, sind jedoch veraltet und können sicher ignoriert werden. Die Warnungen werden durch Warnungen aus der obigen Liste ersetzt.

  • 26412 DEREF_INVALID_POINTER
  • 26413 DEREF_NULLPTR
  • 26420 ASSIGN_NONOWNER_TO_EXPLICIT_OWNER
  • 26421 ASSIGN_VALID_OWNER
  • 26422 VALID_OWNER_LEAVING_SCOPE
  • 26423 ALLOCATION_NOT_ASSIGNED_TO_OWNER
  • 26424 VALID_ALLOCATION_LEAVING_SCOPE
  • 26425 ASSIGNING_TO_STATIC
  • 26499 NO_LIFETIME_TRACKING

Siehe auch

Verwenden der C++-Kernrichtlinien-Prüfer