Informations de référence sur le vérificateur des recommandations de base C++
Cette section répertorie les avertissements du vérificateur des instructions principales C++. Pour plus d’informations sur l’analyse du code, consultez /analyze
(Analyse du code) et Démarrage rapide : Analyse du code pour C/C++.
Remarque
Certains avertissements appartiennent à plusieurs groupes, et tous les avertissements n’ont pas de rubrique de référence complète.
groupe OWNER_POINTER
C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT
Retourne un objet délimité au lieu d’un tas alloué s’il a un constructeur de déplacement. Consultez les instructions de base C++ R.3.
C26403 RESET_OR_DELETE_OWNER
Réinitialisez ou supprimez explicitement un pointeur T> propriétaire<« variable ». Consultez les instructions de base C++ R.3.
C26404 DONT_DELETE_INVALID
Ne supprimez pas un propriétaire<T> qui peut être dans un état non valide. Consultez les instructions de base C++ R.3.
C26405 DONT_ASSIGN_TO_VALID
Ne pas affecter à un propriétaire<T> qui peut être dans un état valide. Consultez les instructions de base C++ R.3.
C26406 DONT_ASSIGN_RAW_TO_OWNER
N’affectez pas de pointeur brut à un T propriétaire<>. Consultez les instructions de base C++ R.3.
C26407 DONT_HEAP_ALLOCATE_UNNECESSARILY
Préférez les objets délimités, ne pas allouer inutilement de tas. Consultez C++ Core Guidelines R.5.
C26429 USE_NOTNULL
Le symbole 'symbole' n’est jamais testé pour la nullité, il peut être marqué comme not_null. Consultez les instructions de base C++ F.23.
C26430 TEST_ON_ALL_PATHS
Le symbole 'symbol' n’est pas testé pour la nullité sur tous les chemins. Consultez les instructions de base C++ F.23.
C26431 DONT_TEST_NOTNULL
Le type d’expression 'expr' est déjà gsl ::not_null. Ne testez pas la valeur null. Consultez les instructions de base C++ F.23.
groupe RAW_POINTER
C26400 NO_RAW_POINTER_ASSIGNMENT
N’affectez pas le résultat d’une allocation ou d’un appel de fonction avec une valeur de retour T> propriétaire<à un pointeur brut ; utilisez le propriétaire<T> à la place. Consultez les instructions de base C++ I.11.
C26401 DONT_DELETE_NON_OWNER
Ne supprimez pas un pointeur brut qui n’est pas un T propriétaire<>. Consultez les instructions de base C++ I.11.
C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT
Retourne un objet délimité au lieu d’un tas alloué s’il a un constructeur de déplacement. Consultez les instructions de base C++ R.3.
C26408 NO_MALLOC_FREE
Évitez malloc() et free(), préférez la version nothrow de la nouvelle avec suppression. Consultez les instructions de base C++ R.10.
C26409 NO_NEW_DELETE
Évitez d’appeler explicitement et supprimer, utilisez std ::make_unique<T> à la place. Consultez les instructions de base C++ R.11.
C26429 USE_NOTNULL
Le symbole 'symbole' n’est jamais testé pour la nullité, il peut être marqué comme not_null. Consultez les instructions de base C++ F.23.
C26430 TEST_ON_ALL_PATHS
Le symbole 'symbol' n’est pas testé pour la nullité sur tous les chemins. Consultez les instructions de base C++ F.23.
C26431 DONT_TEST_NOTNULL
Le type d’expression 'expr' est déjà gsl ::not_null. Ne testez pas la valeur null. Consultez les instructions de base C++ F.23.
C26481 NO_POINTER_ARITHMETIC
N’utilisez pas l’arithmétique du pointeur. Utilisez plutôt l’étendue. Consultez les limites des instructions de base C++.1.
C26485 NO_ARRAY_TO_POINTER_DECAY
Expression 'expr' : aucun tableau pour la décomposition du pointeur. Consultez les limites des instructions de base C++.3.
groupe UNIQUE_POINTER
C26410 NO_REF_TO_CONST_UNIQUE_PTR
Le paramètre 'parameter' est une référence à const
un pointeur unique, utilisez const T* ou const T& à la place. Consultez C++ Core Guidelines R.32.
C26411 NO_REF_TO_UNIQUE_PTR
Le paramètre 'parameter' est une référence à un pointeur unique et il n’est jamais réaffecté ou réinitialisé, utilisez T* ou T& à la place. Consultez les instructions de base C++ R.33.
C26414 RESET_LOCAL_SMART_PTR
Déplacez, copiez, réaffectez ou réinitialisez un pointeur intelligent local « symbole ». Consultez C++ Core Guidelines R.5.
C26415 SMART_PTR_NOT_NEEDED
Le paramètre de pointeur intelligent « symbol » est utilisé uniquement pour accéder au pointeur autonome. Utilisez plutôt T* ou T>. Consultez les instructions de base C++ R.30.
groupe SHARED_POINTER
C26414 RESET_LOCAL_SMART_PTR
Déplacez, copiez, réaffectez ou réinitialisez un pointeur intelligent local « symbole ». Consultez C++ Core Guidelines R.5.
C26415 SMART_PTR_NOT_NEEDED
Le paramètre de pointeur intelligent « symbol » est utilisé uniquement pour accéder au pointeur autonome. Utilisez plutôt T* ou T>. Consultez les instructions de base C++ R.30.
C26416 NO_RVALUE_REF_SHARED_PTR
Le paramètre de pointeur partagé 'symbol' est passé par référence rvalue. Passez plutôt par valeur. Consultez les instructions de base C++ R.34.
C26417 NO_LVALUE_REF_SHARED_PTR
Le paramètre de pointeur partagé 'symbol' est passé par référence et n’est pas réinitialisé ou réaffecté. Utilisez plutôt T* ou T>. Consultez les instructions de base C++ R.35.
C26418 NO_VALUE_OR_CONST_REF_SHARED_PTR
Le paramètre de pointeur partagé 'symbol' n’est pas copié ni déplacé. Utilisez plutôt T* ou T>. Consultez les instructions de base C++ R.36.
GROUPE DECLARATION
C26426 NO_GLOBAL_INIT_CALLS
L’initialiseur global appelle une fonction non constexpr 'symbol'. Consultez les instructions de base C++ I.22.
C26427 NO_GLOBAL_INIT_EXTERNS
L’initialiseur global accède à l’objet extern 'symbol'. Consultez les instructions de base C++ I.22.
C26444 NO_UNNAMED_RAII_OBJECTS
Évitez les objets sans nom avec la construction et la destruction personnalisées. Voir ES.84 : Ne déclarez pas (essayez de) déclarer une variable locale sans nom.
Groupe DE CLASSES
C26432 DEFINE_OR_DELETE_SPECIAL_OPS
Si vous définissez ou supprimez une opération par défaut dans le type « symbole », définissez ou supprimez-les tous. Consultez C++ Core Guidelines C.21.
C26433 OVERRIDE_EXPLICITLY
La fonction 'symbol' doit être marquée avec 'override'. Voir C.128 : Les fonctions virtuelles doivent spécifier exactement l’une des fonctions virtuelles, remplacées ou finales.
C26434 DONT_HIDE_METHODS
La fonction 'symbol_1' masque une fonction non virtuelle 'symbol_2'. Consultez C++ Core Guidelines C.128.
C26435 SINGLE_VIRTUAL_SPECIFICATION
La fonction 'symbol' doit spécifier exactement l’une des valeurs 'virtual', 'override' ou 'final'. Voir C.128 : Les fonctions virtuelles doivent spécifier exactement l’une des fonctions virtuelles, remplacées ou finales.
C26436 NEED_VIRTUAL_DTOR
Le type « symbol » avec une fonction virtuelle a besoin d’un destructeur virtuel public ou non virtuel protégé. Consultez C++ Core Guidelines C.35.
C26443 NO_EXPLICIT_DTOR_OVERRIDE
Le destructeur de substitution ne doit pas utiliser de spécificateurs explicites « override » ou « virtual ». Voir C.128 : Les fonctions virtuelles doivent spécifier exactement l’une des fonctions virtuelles, remplacées ou finales.
Groupe STYLE
C26438 NO_GOTO
Évitez goto
. Consultez les instructions de base C++ ES.76.
GROUPE DE FONCTIONS
C26439 SPECIAL_NOEXCEPT
Ce type de fonction peut ne pas lever. Déclarez-le noexcept
. Consultez les instructions de base C++ F.6.
C26440 DECLARE_NOEXCEPT
La fonction 'symbol' peut être déclarée noexcept
. Consultez les instructions de base C++ F.6.
C26447 DONT_THROW_IN_NOEXCEPT
La fonction est déclarée noexcept
, mais appelle une fonction qui peut lever des exceptions.
Consultez les instructions de base C++ : F.6 : Si votre fonction peut ne pas lever, déclarez-la non-cept.
Groupe CONCURRENCY
C26441 NO_UNNAMED_GUARDS
Les objets Guard doivent être nommés. Consultez les instructions de base C++ cp.44.
Groupe CONST
C26460 USE_CONST_REFERENCE_ARGUMENTS
L’argument de référence 'argument' pour la fonction 'function' peut être marqué comme const
. Consultez C++ Core Guidelines con.3.
C26461 USE_CONST_POINTER_ARGUMENTS :
L’argument de pointeur 'argument' pour la fonction 'function' peut être marqué comme pointeur vers const
. Consultez C++ Core Guidelines con.3.
C26462 USE_CONST_POINTER_FOR_VARIABLE
La valeur pointée par 'variable' n’est attribuée qu’une seule fois, marquez-la comme pointeur vers const
. Consultez C++ Core Guidelines con.4.
C26463 USE_CONST_FOR_ELEMENTS
Les éléments du tableau 'array' ne sont attribués qu’une seule fois, marquer les éléments const
. Consultez C++ Core Guidelines con.4.
C26464 USE_CONST_POINTER_FOR_ELEMENTS
Les valeurs pointées par les éléments du tableau 'array' ne sont attribuées qu’une seule fois, marquez les éléments comme pointeur vers const
. Consultez C++ Core Guidelines con.4.
C26496 USE_CONST_FOR_VARIABLE
La variable 'variable' n’est affectée qu’une seule fois, marquez-la comme const
. Consultez C++ Core Guidelines con.4.
C26497 USE_CONSTEXPR_FOR_FUNCTION
Cette fonction de fonction peut être marquée constexpr
si l’évaluation au moment de la compilation est souhaitée. Consultez les instructions de base C++ F.4.
C26498 USE_CONSTEXPR_FOR_FUNCTIONCALL
Cette fonction d’appel de fonction peut être utilisée constexpr
si l’évaluation au moment de la compilation est souhaitée. Consultez C++ Core Guidelines con.5.
Groupe TYPE
C26437 DONT_SLICE
Ne pas trancher. Consultez les instructions de base C++ ES.63.
C26465 NO_CONST_CAST_UNNECESSARY
N’utilisez const_cast
pas de caster const
. const_cast
n’est pas obligatoire ; la constness ou la volatilité n’est pas supprimée par cette conversion. Consultez C++ Core Guidelines Type.3.
C26466 NO_STATIC_DOWNCAST_POLYMORPHIC
N’utilisez static_cast
pas de pannes. Un cast d’un type polymorphe doit utiliser dynamic_cast. Consultez C++ Core Guidelines Type.2.
C26471 NO_REINTERPRET_CAST_FROM_VOID_PTR
N’utilisez pas reinterpret_cast
. Un cast de void* peut utiliser static_cast
. Consultez C++ Core Guidelines Type.1.
C26472 NO_CASTS_FOR_ARITHMETIC_CONVERSION
N’utilisez pas de static_cast
conversions arithmétiques. Utilisez l’initialisation d’accolades, gsl ::narrow_cast ou gsl ::narrow. Consultez C++ Core Guidelines Type.1.
C26473 NO_IDENTITY_CAST
N’effectuez pas de cast entre les types de pointeurs où le type source et le type cible sont identiques. Consultez C++ Core Guidelines Type.1.
C26474 NO_IMPLICIT_CAST
Ne pas effectuer de conversion entre les types de pointeur lorsque la conversion peut être implicite. Consultez C++ Core Guidelines Type.1.
C26475 NO_FUNCTION_STYLE_CASTS
N’utilisez pas de casts C de style de fonction. Consultez les instructions de base C++ ES.49.
C26490 NO_REINTERPRET_CAST
N’utilisez pas reinterpret_cast
. Consultez C++ Core Guidelines Type.1.
C26491 NO_STATIC_DOWNCAST
N’utilisez static_cast
pas de pannes. Consultez C++ Core Guidelines Type.2.
C26492 NO_CONST_CAST
N’utilisez const_cast
pas de caster const
. Consultez C++ Core Guidelines Type.3.
C26493 NO_CSTYLE_CAST
N’utilisez pas de casts de style C. Consultez C++ Core Guidelines Type.4.
C26494 VAR_USE_BEFORE_INIT
La variable 'variable' n’est pas initialisée. Initialisez toujours un objet. Consultez C++ Core Guidelines Type.5.
C26495 MEMBER_UNINIT
La variable 'variable' n’est pas initialisée. Initialisez toujours une variable membre. Consultez C++ Core Guidelines Type.6.
Groupe BOUNDS
C26446 USE_GSL_AT
Préférez utiliser au lieu d’un gsl::at()
opérateur d’indice non vérifié. Consultez les instructions principales C++ : Bounds.4 : N’utilisez pas de fonctions de bibliothèque standard et de types qui ne sont pas vérifiés par limites.
C26481 NO_POINTER_ARITHMETIC
N’utilisez pas l’arithmétique du pointeur. Utilisez plutôt l’étendue. Consultez les limites des directives de base C++.1
C26482 NO_DYNAMIC_ARRAY_INDEXING
Indexer uniquement dans des tableaux à l’aide d’expressions constantes. Consultez les limites des directives de base C++.2
C26483 STATIC_INDEX_OUT_OF_RANGE
La valeur est en dehors des limites (0, limites) de la variable 'variable'. Indexer uniquement dans des tableaux à l’aide d’expressions constantes qui se trouvent dans des limites du tableau. Consultez les limites des directives de base C++.2
C26485 NO_ARRAY_TO_POINTER_DECAY
Expression 'expr' : aucun tableau pour la décomposition du pointeur. Consultez les limites des instructions de base C++.3
Groupe GSL
C26445 NO_SPAN_REF
Une référence à gsl::span
ou std::string_view
peut être une indication d’un problème de durée de vie.
Voir C++ Core Guidelines GSL.view : Vues
C26446 USE_GSL_AT
Préférez utiliser au lieu d’un gsl::at()
opérateur d’indice non vérifié. Consultez les instructions principales C++ : Bounds.4 : N’utilisez pas de fonctions de bibliothèque standard et de types qui ne sont pas vérifiés par limites.
C26448 USE_GSL_FINALLY
Envisagez d’utiliser gsl::finally
si l’action finale est prévue. Consultez les instructions de base C++ : GSL.util : Utilitaires.
C26449 NO_SPAN_FROM_TEMPORARY
gsl::span
ou std::string_view
créé à partir d’un temporaire n’est pas valide lorsque le temporaire est invalidé. Consultez les instructions principales C++ : GSL.view : Vues.
Avertissements déconseillés
Les avertissements suivants sont présents dans un ensemble de règles expérimentales précoces du vérificateur des directives principales, mais sont désormais déconseillés et peuvent être ignorés en toute sécurité. Les avertissements sont remplacés par des avertissements de la liste ci-dessus.
- 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
Voir aussi
Utilisation des vérificateurs des instructions principales C++