Referência do verificador de Diretrizes Principais do C++

Esta seção lista os avisos do Verificador de Diretrizes Principais do C++. Para obter informações sobre a Análise de Código, confira /analyze (Análise de Código) e Início Rápido: Análise de Código para C/C++.

Observação

Alguns avisos pertencem a mais de um grupo e nem todos os avisos têm um tópico de referência completo.

Grupo OWNER_POINTER

C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT
Retorne um objeto com escopo em vez de um alocado por heap se ele tiver um construtor de movimentação. Confira Diretrizes Principais do C++ R.3.

C26403 RESET_OR_DELETE_OWNER
Redefina ou exclua explicitamente uma "variable" de ponteiro owner<T>. Confira Diretrizes Principais do C++ R.3.

C26404 DONT_DELETE_INVALID
Não exclua nenhum owner<T> que possa estar em estado inválido. Confira Diretrizes Principais do C++ R.3.

C26405 DONT_ASSIGN_TO_VALID
Não atribua a nenhum owner<T> que possa estar em estado inválido. Confira Diretrizes Principais do C++ R.3.

C26406 DONT_ASSIGN_RAW_TO_OWNER
Não atribua nenhum ponteiro bruto a um owner<T>. Confira Diretrizes Principais do C++ R.3.

C26407 DONT_HEAP_ALLOCATE_UNNECESSARILY
Prefira objetos com escopo, não faça alocação por heap desnecessariamente. Confira Diretrizes Principais do C++ R.5.

C26429 USE_NOTNULL
O símbolo "symbol" nunca é testado quanto à nulidade, ele pode ser marcado como not_null. Confira Diretrizes Principais do C++ F.23.

C26430 TEST_ON_ALL_PATHS
O símbolo "symbol" não é testado quanto à nulidade em todos os caminhos. Confira Diretrizes Principais do C++ F.23.

C26431 DONT_TEST_NOTNULL
O tipo de expressão "expr" já é gsl::not_null. Não teste-a quanto à nulidade. Confira Diretrizes Principais do C++ F.23.

RAW_POINTER Group

C26400 NO_RAW_POINTER_ASSIGNMENT
Não atribua o resultado de uma alocação ou de uma chamada de função com um valor retornado de owner<T> a um ponteiro bruto, use o owner<T> em vez disso. Confira Diretrizes Principais do C++ I.11.

C26401 DONT_DELETE_NON_OWNER
Não exclua um ponteiro bruto que não seja um owner<T>. Confira Diretrizes Principais do C++ I.11.

C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT
Retorne um objeto com escopo em vez de um alocado por heap se ele tiver um construtor de movimentação. Confira Diretrizes Principais do C++ R.3.

C26408 NO_MALLOC_FREE
Evite malloc() e free(), prefira a versão nothrow de new com delete. Confira Diretrizes Principais do C++ R.10.

C26409 NO_NEW_DELETE
Evite chamar new e delete explicitamente, use std::make_unique<T> em vez disso. Confira Diretrizes Principais do C++ R.11.

C26429 USE_NOTNULL
O símbolo "symbol" nunca é testado quanto à nulidade, ele pode ser marcado como not_null. Confira Diretrizes Principais do C++ F.23.

C26430 TEST_ON_ALL_PATHS
O símbolo "symbol" não é testado quanto à nulidade em todos os caminhos. Confira Diretrizes Principais do C++ F.23.

C26431 DONT_TEST_NOTNULL
O tipo de expressão "expr" já é gsl::not_null. Não teste-a quanto à nulidade. Confira Diretrizes Principais do C++ F.23.

C26481 NO_POINTER_ARITHMETIC
Não use aritmética de ponteiro. Use span em vez disso. Confira Diretrizes Principais do C++ Bounds.1.

C26485 NO_ARRAY_TO_POINTER_DECAY
Expressão "expr": não usar matriz para decaimento de ponteiro. Confira Diretrizes Principais do C++ Bounds.3.

UNIQUE_POINTER Group

C26410 NO_REF_TO_CONST_UNIQUE_PTR
O parâmetro 'parâmetro' é uma referência ao const ponteiro exclusivo, use const T* ou const T& em vez disso. Confira Diretrizes Principais do C++ R.32.

C26411 NO_REF_TO_UNIQUE_PTR
O parâmetro 'parâmetro' é uma referência ao ponteiro exclusivo e nunca é reatribuído ou redefinido, use T* ou T& em vez disso. Confira Diretrizes Principais do C++ R.33.

C26414 RESET_LOCAL_SMART_PTR
Mova, copie, reatribua ou redefina um ponteiro inteligente local "symbol". Confira Diretrizes Principais do C++ R.5.

C26415 SMART_PTR_NOT_NEEDED
O parâmetro de ponteiro inteligente "symbol" é usado apenas para acessar um ponteiro contido. Use T* ou T& em vez disso. Confira Diretrizes Principais do C++ R.30.

SHARED_POINTER Group

C26414 RESET_LOCAL_SMART_PTR
Mova, copie, reatribua ou redefina um ponteiro inteligente local "symbol". Confira Diretrizes Principais do C++ R.5.

C26415 SMART_PTR_NOT_NEEDED
O parâmetro de ponteiro inteligente "symbol" é usado apenas para acessar um ponteiro contido. Use T* ou T& em vez disso. Confira Diretrizes Principais do C++ R.30.

C26416 NO_RVALUE_REF_SHARED_PTR
O parâmetro de ponteiro compartilhado "symbol" é passado pela referência rvalue. Passe por valor, nesse caso. Confira Diretrizes Principais do C++ R.34.

C26417 NO_LVALUE_REF_SHARED_PTR
O parâmetro de ponteiro compartilhado "symbol" é passado por referência e não é redefinido nem reatribuído. Use T* ou T& em vez disso. Confira Diretrizes Principais do C++ R.35.

C26418 NO_VALUE_OR_CONST_REF_SHARED_PTR
O parâmetro de ponteiro compartilhado "symbol" não é copiado nem movido. Use T* ou T& em vez disso. Confira Diretrizes Principais do C++ R.36.

Grupo DECLARATION

C26426 NO_GLOBAL_INIT_CALLS
O inicializador global chama uma função não constexpr "symbol". Confira Diretrizes Principais do C++ I.22.

C26427 NO_GLOBAL_INIT_EXTERNS
O inicializador global acessa o objeto extern "symbol". Confira Diretrizes Principais do C++ I.22.

C26444 NO_UNNAMED_RAII_OBJECTS
Evite objetos não nomeados com construção e destruição personalizadas. Confira ES.84: Não (tente) declarar uma variável local sem nome.

Grupo CLASS

C26432 DEFINE_OR_DELETE_SPECIAL_OPS
Se você definir ou excluir qualquer operação padrão no tipo "symbol", defina ou exclua todas. Confira Diretrizes Principais do C++ C.21.

C26433 OVERRIDE_EXPLICITLY
A função "symbol" deve ser marcada com "override". Confira C.128: Funções virtuais devem especificar exatamente uma das seguintes opções: virtual, override ou final.

C26434 DONT_HIDE_METHODS
A função "symbol_1" oculta uma função não virtual "symbol_2". Confira Diretrizes Principais do C++ C.128.

C26435 SINGLE_VIRTUAL_SPECIFICATION
A função "symbol" deve especificar exatamente uma das seguintes opções: "virtual", "override" ou "final". Confira C.128: Funções virtuais devem especificar exatamente uma das seguintes opções: virtual, override ou final.

C26436 NEED_VIRTUAL_DTOR
Um tipo "symbol" com uma função virtual precisa de um destruidor público virtual ou protegido não virtual. Confira Diretrizes Principais do C++ C.35.

C26443 NO_EXPLICIT_DTOR_OVERRIDE
O destruidor de substituição não deve usar especificadores "override" nem "virtual" explícitos. Confira C.128: Funções virtuais devem especificar exatamente uma das seguintes opções: virtual, override ou final.

Grupo STYLE

C26438 NO_GOTO
Evite goto. Confira Diretrizes Principais do C++ ES.76.

Grupo FUNCTION

C26439 SPECIAL_NOEXCEPT
Esse tipo de função pode não ser lançada. Declare-a noexcept. Confira Diretrizes Principais do C++ F.6.

C26440 DECLARE_NOEXCEPT
A função "symbol" pode ser declarada noexcept. Confira Diretrizes Principais do C++ F.6.

C26447 DONT_THROW_IN_NOEXCEPT
A função é declarada noexcept, mas chama uma função que pode gerar exceções. Confira Diretrizes Principais do C++: F.6: Se houver possibilidade de sua função não ser lançada, declare-a noexcept.

Grupo CONCURRENCY

C26441 NO_UNNAMED_GUARDS
Objetos de proteção devem ser nomeados. Confira Diretrizes Principais do C++ cp.44.

Grupo CONST

C26460 USE_CONST_REFERENCE_ARGUMENTS
O argumento de referência "argument" para a função "function" pode ser marcado como const. Confira Diretrizes Principais do C++ con.3.

C26461 USE_CONST_POINTER_ARGUMENTS:
O argumento de ponteiro "argument" para a função "function" pode ser marcado como um ponteiro para const. Confira Diretrizes Principais do C++ con.3.

C26462 USE_CONST_POINTER_FOR_VARIABLE
O valor apontado por "variable" é atribuído somente uma vez, marque-o como um ponteiro para const. Confira Diretrizes Principais do C++ con.4.

C26463 USE_CONST_FOR_ELEMENTS
Os elementos da matriz "array" são atribuídos somente uma vez. Marque os elementos como const. Confira Diretrizes Principais do C++ con.4.

C26464 USE_CONST_POINTER_FOR_ELEMENTS
Os valores apontados pelos elementos da matriz "array" são atribuídos somente uma vez. Marque os elementos como ponteiros para const. Confira Diretrizes Principais do C++ con.4.

C26496 USE_CONST_FOR_VARIABLE
A variável "variable" é atribuída apenas uma vez, marque-a como const. Confira Diretrizes Principais do C++ con.4.

C26497 USE_CONSTEXPR_FOR_FUNCTION
Essa função function poderá ser marcada como constexpr se a avaliação em tempo de compilação for desejada. Confira Diretrizes Principais do C++ F.4.

C26498 USE_CONSTEXPR_FOR_FUNCTIONCALL
Essa chamada de função function poderá usar constexpr se a avaliação em tempo de compilação for desejada. Confira Diretrizes Principais do C++ con.5.

Grupo TYPE

C26437 DONT_SLICE
Não fatiar. Confira Diretrizes Principais do C++ ES.63.

C26465 NO_CONST_CAST_UNNECESSARY
Não use const_cast para remover a conversão const. const_cast não é necessário; a qualidade de constante ou a volatilidade não vai ser removida por essa conversão. Confira Diretrizes Principais do C++ Type.3.

C26466 NO_STATIC_DOWNCAST_POLYMORPHIC
Não use downcasts static_cast. Uma conversão de um tipo polimórfico deve usar dynamic_cast. Confira Diretrizes Principais do C++ Type.2.

C26471 NO_REINTERPRET_CAST_FROM_VOID_PTR
Não use reinterpret_cast. Uma conversão de void* pode usar static_cast. Confira Diretrizes Principais do C++ Type.1.

C26472 NO_CASTS_FOR_ARITHMETIC_CONVERSION
Não use uma static_cast para conversões aritméticas. Use inicialização de chave, gsl::narrow_cast ou gsl::narrow. Confira Diretrizes Principais do C++ Type.1.

C26473 NO_IDENTITY_CAST
Não converta os tipos de ponteiro nos quais o tipo de origem e o de destino são os mesmos. Confira Diretrizes Principais do C++ Type.1.

C26474 NO_IMPLICIT_CAST
Não converta os tipos ponteiro quando a conversão puder ser implícita. Confira Diretrizes Principais do C++ Type.1.

C26475 NO_FUNCTION_STYLE_CASTS
Não use conversões C do estilo de função. Confira Diretrizes Principais do C++ ES.49.

C26490 NO_REINTERPRET_CAST
Não use reinterpret_cast. Confira Diretrizes Principais do C++ Type.1.

C26491 NO_STATIC_DOWNCAST
Não use downcasts static_cast. Confira Diretrizes Principais do C++ Type.2.

C26492 NO_CONST_CAST
Não use const_cast para remover a conversão const. Confira Diretrizes Principais do C++ Type.3.

C26493 NO_CSTYLE_CAST
Não use conversões de estilo C. Confira Diretrizes Principais do C++ Type.4.

C26494 VAR_USE_BEFORE_INIT
A variável "variable" não é inicializada. Sempre inicialize um objeto. Confira Diretrizes Principais do C++ Type.5.

C26495 MEMBER_UNINIT
A variável "variable" não é inicializada. Sempre inicialize uma variável de membro. Confira Diretrizes Principais do C++ Type.6.

Grupo BOUNDS

C26446 USE_GSL_AT
Dê preferência ao uso de gsl::at() em vez do operador subscrito desmarcado. Confira Diretrizes Principais do C++: Bounds.4: Não use funções da biblioteca padrão nem tipos que não tem limites verificados.

C26481 NO_POINTER_ARITHMETIC
Não use aritmética de ponteiro. Use span em vez disso. Confira Diretrizes Principais do C++ Bounds.1

C26482 NO_DYNAMIC_ARRAY_INDEXING
Somente indexe em matrizes usando expressões de constante. Confira Diretrizes Principais do C++ Bounds.2

C26483 STATIC_INDEX_OUT_OF_RANGE
O valor value está fora dos limites (0, bound) da variável "variable". Indexe em matrizes somente usando expressões de constante que estejam dentro dos limites da matriz. Confira Diretrizes Principais do C++ Bounds.2

C26485 NO_ARRAY_TO_POINTER_DECAY
Expressão "expr": não usar matriz para decaimento de ponteiro. Confira Diretrizes Principais do C++ Bounds.3

Grupo GSL

C26445 NO_SPAN_REF
Uma referência a gsl::span ou std::string_view pode ser uma indicação de um problema de tempo de vida. Confira Diretrizes Principais do C++ GSL.view: Exibições

C26446 USE_GSL_AT
Dê preferência ao uso de gsl::at() em vez do operador subscrito desmarcado. Confira Diretrizes Principais do C++: Bounds.4: Não use funções da biblioteca padrão nem tipos que não tem limites verificados.

C26448 USE_GSL_FINALLY
Considere o uso de gsl::finally se a ação final for pretendida. Confira Diretrizes Principais do C++ GSL.util: Utilitários.

C26449 NO_SPAN_FROM_TEMPORARY
gsl::span ou std::string_view criado com base em um temporário será inválido quando o temporário for invalidado. Confira Diretrizes Principais do C++: GSL.view: Exibições.

Avisos preteridos

Os avisos a seguir estão presentes em um conjunto de regras experimentais anterior do verificador de diretrizes principais, mas agora estão preteridos e podem ser ignorados com segurança. Os avisos foram substituídos por avisos da lista acima.

  • 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

Confira também

Usando os Verificadores de Diretrizes Principais do C++