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