Compartilhar via


Conjunto de regras de regras recomendado mista

As regras recomendado misto do Microsoft focalizar os problemas mais comuns e essenciais em seus projetos do C++ que oferecem suporte a Common Language Runtime, incluindo possíveis brechas de segurança, travamentos de aplicativos e outros erros de lógica e de design importantes.Você deve incluir essa regra definida em qualquer conjunto de regras personalizadas que você cria para seus projetos do C++ que oferecem suporte a Common Language Runtime.Esse conjunto de regras é projetado para ser configurado com a edição profissional de Visual Studio e superiores.

Regra

Descrição

C6001

Usando a memória não inicializada

C6011

Cancelar a referência de ponteiro Null

C6029

Uso de valor não verificado

C6031

Valor de retorno ignorado

C6053

Zero terminação de chamada

C6054

Zero a terminação ausente

C6059

Concatenação incorreta

C6063

Sem o argumento de seqüência de caracteres para a função Format

C6064

Argumento de inteiro ausente para a função Format

C6066

Argumento ausente do ponteiro para função Format

C6067

Sem o argumento de ponteiro de seqüência de caracteres para a função Format

C6101

Retornando a memória não inicializada

C6200

Índice excede o máximo de Buffer

C6201

Índice excede o máximo de Buffer de pilha

C6214

Elenco inválido HRESULT para BOOL

C6215

Elenco inválido BOOL para HRESULT

C6216

Reforço de compilador-inserido inválido BOOL para HRESULT

C6217

Teste HRESULT inválido com não

C6220

Comparação HRESULT inválida como -1

C6226

Atribuição de HRESULT inválida como -1

C6230

Uso inválido de HRESULT como booleano

C6235

Constante de Zero com lógica- ou

C6236

Lógico- ou com a constante diferente de Zero

C6237

Zero com lógica- E perde efeitos colaterais

C6242

Local desenrolamento forçado

C6248

Criando Null DACL

C6250

Realizar descritores de endereço

C6255

Uso desprotegido de Alloca

C6258

Usando encerrar o segmento

C6259

Código morto no bit a bit- ou limitada Switch

C6260

Uso de aritmética de Byte

C6262

Uso excessivo de pilha

C6263

Usando Alloca em Loop

C6268

Parênteses faltando na projeção

C6269

Referência de ponteiro ignorado

C6270

Sem o argumento Float para função Format

C6271

Argumento extra para a função Format

C6272

Argumento para a função Format não Float

C6273

Argumen não inteiro para a função Format

C6274

Caractere não argumento para função Format

C6276

Elenco inválido de seqüência de caracteres

C6277

Chamada de CreateProcess inválida

C6278

Incompatibilidade de novo para a matriz escalar-Delete

C6279

Incompatibilidade de excluir a matriz escalar-novo

C6280

Incompatibilidade de desalocação de alocação de memória

C6281

Precedência de relação bit a bit

C6282

Atribuição substitui o teste

C6283

Incompatibilidade de Scalar-Delete Array-novo primitivo

C6284

Argumento de objeto inválido para a função Format

C6285

Lógico- ou das constantes

C6286

Diferente de Zero lógico- ou perder efeitos colaterais

C6287

Teste redundante

C6288

Inclusão mútua sobre lógico- E for falsa

C6289

Exclusão mútua sobre lógico- ou é verdadeiro

C6290

Não-lógico bit a bit- E precedência

C6291

Não-lógico bit a bit- ou precedência

C6292

Loop conta de máximo

C6293

Loop conta do mínimo

C6294

Corpo do loop nunca executado

C6295

Loop infinito

C6296

Loop executado apenas uma vez

C6297

Resultado da Shift convertidas em tamanho maior

C6299

Junte a comparação booleanos

C6302

Argumento de seqüência de caracteres inválido para função Format

C6303

Inválido grande argumento de seqüência de caracteres para a função Format

C6305

Sem correspondência de tamanho e uso de contagem

C6306

Chamada de função de argumento variável incorreto

C6308

Vazamento de possível realocar

C6310

Constante de filtro de exceção ilegal

C6312

Exceção continuar execução Loop

C6314

Bit a bit- ou precedência

C6317

Complemento não não

C6318

Exceção continuar a pesquisa

C6319

Ignorado por vírgula

C6324

Cópia de seqüência de caracteres em vez de comparação de seqüência de caracteres

C6328

Incompatibilidade de tipo de argumento potencial

C6331

Sinalizadores inválidos de VirtualFree

C6332

Parâmetro inválido VirtualFree

C6333

Tamanho inválido VirtualFree

C6335

Vazamento de identificador de processo

C6381

Falta de informações de desligamento

C6383

Contagem de elemento de Byte-contagem de saturação de Buffer

C6384

Divisão de tamanho do ponteiro

C6385

Saturação de leitura

C6386

Saturação de gravação.

C6387

Valor de parâmetro inválido

C6388

Valor de parâmetro inválido

C6500

Propriedade de atributo inválido

C6501

Valores de propriedade de atributo conflitantes

C6503

Referências não podem ser nulas

C6504

Nulo não ponteiro

C6505

MustCheck em Void

C6506

Tamanho do buffer no não-ponteiro ou matriz

C6507

Incompatibilidade de nula em Zero de cancelamento de referência

C6508

Acesso de gravação em constante

C6509

Retorno usado na pré-condição

C6510

Terminada no ponteiro de não nula

C6511

MustCheck deve ser Sim ou não

C6513

Tamanho do elemento sem o tamanho do Buffer

C6514

Tamanho da matriz excede o tamanho do buffer

C6515

Tamanho do buffer no ponteiro-não

C6516

Nenhuma propriedade no atributo

C6517

Tamanho válido no Buffer ilegível

C6518

Tamanho gravável no Buffer não gravável

C6519

Anotação inválido: o valor da propriedade 'NeedsRelease' deve ser Sim ou não

C6521

Cancelamento de referência de seqüência de caracteres de tamanho inválido

C6522

Tipo de seqüência de caracteres de tamanho inválido

C6523

Parâmetro de seqüência de caracteres de tamanho inválido

C6525

Seqüência inválida de tamanho local inacessível

C6526

Tipo de Buffer de seqüência de caracteres de tamanho inválido

C6527

Anotação inválido: propriedade 'NeedsRelease' não pode ser usada nos valores do tipo void

C6530

Estilo de seqüência de caracteres de formato não reconhecido

C6540

O uso de atributo anotações sobre esta função invalidará todas suas anotações existentes do __declspec

C6551

Especificação de tamanho inválido: não é passível de análise de expressão

C6552

Deref inválido = ou Notref =: expressão não analisável

C6701

O valor não é um valor válido de Sim/não/talvez

C6702

O valor não é um valor de seqüência

C6703

O valor não é um número

C6704

Erro inesperado de expressão de anotação

C6705

Número esperado de argumentos para a anotação não corresponde ao número real de argumentos para anotação

C6706

Erro inesperado de anotação para anotação

C6995

Falha ao salvar o arquivo de Log XML

C26100

Condição de corrida

C26101

Não usar a operação sincronizada corretamente

C26110

Deixar de manter o bloqueio do chamador

C26111

Falha ao liberar bloqueio do chamador

C26112

Chamador não pode conter qualquer bloqueio.

C26115

Falha ao liberar bloqueio

C26116

Com falha para adquirir ou mantenha a tecla de bloqueio

C26117

Liberar bloqueio unheld

C26140

Erro de anotação de SAL de concorrência

C28020

A expressão não se aplica nesta chamada

C28021

O parâmetro sendo anotado deve ser um ponteiro

C28022

A classe (s) função sobre esta função não coincidem com a classe (s) função sobre o typedef usado para defini-la.

C28023

A função que está sendo atribuído ou passado deve ter uma anotação de _Function_class_ para pelo menos um da classe (s)

C28024

O ponteiro de função que está sendo atribuído a será marcado com a classe de função, que não está na lista de classe (s) de função.

C28039

O tipo do parâmetro real deve corresponder exatamente o tipo

C28112

Uma variável que é acessada por meio de uma função Interlocked sempre deve ser acessada por meio de uma função Interlocked.

C28113

Acessando uma variável local por meio de uma função Interlocked

C28125

A função deve ser chamada de dentro de um bloco try / exceto bloco

C28137

O argumento variável deve ser uma constante (literal)

C28138

O argumento constante deve ser variável

C28159

Considere usar outra função.

C28160

Anotação de erro

C28163

A função nunca deve ser chamada de dentro de um bloco try / exceto bloco

C28164

O argumento está sendo passado para uma função que espera um ponteiro para um objeto (não um ponteiro para um ponteiro)

C28182

Cancelar a referência de ponteiro NULL.O ponteiro contém o mesmo valor nulo como fez de outro ponteiro.

C28183

O argumento pode ser um valor e uma cópia do valor que for encontrada no ponteiro

C28193

A variável contém um valor que deve ser examinado.

C28196

O requisito não é satisfeito.(A expressão não é avaliada como true.)

C28202

Referência ilegal para membro não estático

C28203

Referência ambígua ao membro de classe.

C28205

_Success_ ou _On_failure_ usados em um contexto ilegal

C28206

Pontos de operando da esquerda para uma struct, use '->'

C28207

Operando esquerdo é uma struct, use '.'

C28209

A declaração do símbolo possui uma declaração conflitante

C28210

Anotações para o contexto de __on_failure não devem estar no contexto de pré explícita

C28211

Nome de contexto estático esperado para SAL_context

C28212

Expressão do ponteiro esperado para anotação

C28213

A anotação de _Use_decl_annotations_ deve ser usada para fazer referência, sem modificações, uma declaração anterior.

C28214

Nomes de parâmetro de atributo devem ser p1... p9

C28215

O typefix não pode ser aplicado a um parâmetro que já tem um typefix

C28216

A anotação checkReturn só se aplica para posteriores para o parâmetro de função específica.

C28217

Para a função, o número de parâmetros para a anotação não corresponde ao que foi encontrado no arquivo

C28218

Para a função paramteer, parâmetro da anotação, o não corresponde que encontradas no arquivo

C28219

Membro da enumeração esperado para a anotação do parâmetro na anotação

C28220

Expressão de inteiro esperada para a anotação do parâmetro na anotação

C28221

Expressão de seqüência esperado para o parâmetro na anotação

C28222

__yes, __no ou __maybe esperado para anotação

C28223

Não encontrou Token/identificador esperado para a anotação, parâmetro

C28224

Anotação requer parâmetros

C28225

Não encontrou o número correto de parâmetros necessários na anotação

C28226

Anotação não pode ser também um PrimOp (em uma declaração atual)

C28227

Anotação não pode ser também um PrimOp (consulte a declaração anterior)

C28228

O parâmetro de anotação: não é possível usar o tipo em anotações

C28229

Anotação não oferece suporte a parâmetros

C28230

O tipo do parâmetro não tem nenhum membro.

C28231

Anotação só é válida no array

C28232

Pre, postar ou deref não aplicada a qualquer anotação.

C28233

Pre, postar ou aplicados a um bloco de deref

C28234

__at expressão não é aplicável a função atual

C28235

A função não pode ser autônoma como uma anotação

C28236

A anotação não pode ser usada em uma expressão

C28237

A anotação no parâmetro não é mais suportada

C28238

A anotação no parâmetro tem mais de um valor, stringValue e longValue.Usar paramn = xxx

C28239

A anotação no parâmetro tem valor, stringValue ou longValue; e paramn = xxx.Use somente paramn = xxx

C28240

A anotação no parâmetro tem param2 mas nenhum param1

C28241

A anotação para a função no parâmetro não é reconhecida.

C28243

Cancela a anotação para a função no parâmetro requer mais referência que o tipo real anotado

C28244

A anotação para a função possui uma anotação de parâmetro não analisável/externas

C28245

A anotação para função anota 'this' em uma não-membro-função

C28246

A anotação de parâmetro para a função não coincide com o tipo do parâmetro

C28250

Anotação inconsistente para função: a instância anterior tem um erro.

C28251

Anotação inconsistente para função: esta instância tem um erro.

C28252

Anotação inconsistente para função: o parâmetro tem outro anotações nesta instância.

C28253

Anotação inconsistente para função: o parâmetro tem outro anotações nesta instância.

C28254

() do dynamic_cast < > não há anotações

C28262

Um erro de sintaxe na anotação foi encontrado na função, para anotação

C28263

Um erro de sintaxe em uma anotação condicional foi encontrado para a anotação intrínseca

C28264

Valores de listas de resultados devem ser constantes.

C28267

Um erro de sintaxe nas anotações foi encontrado a anotação na função.

C28272

A anotação para a função, o parâmetro durante o exame é inconsistente com a declaração da função

C28273

Para a função, as dicas são inconsistentes com a declaração de função

C28275

O parâmetro _Macro_value_ é nulo

C28279

Símbolo, de um 'começar' foi encontrada sem correspondência 'end'

C28280

Símbolo, 'end' foi encontrado sem uma 'Iniciar'

C28282

Seqüências de caracteres de formato devem estar no pré-condições

C28285

Para a função, erro de sintaxe no parâmetro

C28286

Para a função, erro de sintaxe próximo ao final

C28287

Para a função, erro de sintaxe em anotação de _At_() (nome de parâmetro não reconhecido)

C28288

Para a função, erro de sintaxe em anotação de _At_() (nome de parâmetro inválido)

C28289

Função: ReadableTo ou WritableTo não tinha uma especificação de limite como um parâmetro.

C28290

a anotação para função contém mais itens externos que o número real de parâmetros

C28291

POST null/notnull em deref nível 0 não faz sentido para a função.

C28300

Operandos da expressão de tipos incompatíveis para operador

C28301

Não há anotações para a primeira declaração da função.

C28302

Um operador de _Deref_ extra foi encontrado na anotação.

C28303

Um operador ambígua _Deref_ foi encontrado na anotação.

C28304

Um operador de _Notref_ inserido incorretamente foi encontrado aplicados ao token.

C28305

Um erro ao analisar um token foi descoberto.

C28306

A anotação no parâmetro é obsolescent

C28307

A anotação no parâmetro é obsolescent

C28350

A anotação descreve uma situação que não é aplicável condicionalmente.

C28351

A anotação descreve onde um valor dinâmico (uma variável) não pode ser usado na condição.

CA1001

Os tipos que possuem campos descartáveis devem ser descartáveis

CA1009

Declarar os manipuladores de eventos corretamente

CA1016

Assemblies de marca com AssemblyVersionAttribute

CA1033

Métodos de interface devem ser chamados por tipos de filho

CA1049

Os tipos que possuem recursos nativos devem ser descartáveis

CA1060

Mover P/Invokes à classe NativeMethods

CA1061

Não ocultar métodos da classe base

CA1063

Implementar IDisposable corretamente

CA1065

Não aumente exceções em locais inesperados

CA1301

Evite aceleradores duplicados

CA1400

Os pontos de entrada de P/Invoke devem existir.

CA1401

P/Invokes não deverá ser visível

CA1403

Tipos de layout automático não devem ser visível em COM

CA1404

Chamar GetLastError imediatamente após P/Invoke.

CA1405

Tipos base do tipo visível COM devem estar visível em COM

CA1410

Métodos de registro COM devem ser correspondidos.

CA1415

Declarar P/Invokes corretamente

CA1821

Remover os finalizadores vazios

CA1900

Campos do tipo de valor devem ser portátil

CA1901

Declarações P/Invoke devem ser portátil

CA2002

Não bloquear em objetos com identidade fraco

CA2100

Analisar consultas SQL para vulnerabilidades de segurança

CA2101

Especificar o empacotamento para argumentos de seqüência de caracteres de P/Invoke.

CA2108

Revisão de segurança declarativos sobre tipos de valor

CA2111

Ponteiros não deverá ser visíveis

CA2112

Tipos protegidos não devem expor campos

CA2114

A segurança do método deve ser um superconjunto do tipo

CA2116

Métodos APTCA só deverá chamar métodos APTCA

CA2117

Tipos APTCA só devem estender tipos básicos de APTCA

CA2122

Não exponha indiretamente métodos com as demandas de link

CA2123

As demandas de link de substituição devem ser idênticas para basear

CA2124

Quebra automática de linha vulnerável finalmente tente cláusulas no exterior

CA2126

As demandas de link do tipo exigem demandas de herança

CA2131

Tipos de críticos de segurança não podem participar de equivalência de tipo

CA2132

Construtores padrão devem ser pelo menos tão importantes como construtores do tipo base padrão

CA2133

Delegados devem ligar para métodos com transparência consistente

CA2134

Métodos devem manter a transparência consistente quando os métodos base

CA2137

Métodos transparentes devem conter apenas IL verificável

CA2138

Métodos transparentes não devem chamar métodos com o atributo SuppressUnmanagedCodeSecurity

CA2140

Código Transparent não deve fazer referência a itens essenciais de segurança

CA2141

Métodos transparentes não devem atender a LinkDemands

CA2146

Os tipos devem ser pelo menos, tão importantes quanto seus tipos base e interfaces

CA2147

Métodos transparentes não podem usar a segurança asserts

CA2149

Métodos transparentes não devem chamar código nativo

CA2200

Relançar para preservar os detalhes de pilha

CA2202

Não dispor objetos várias vezes

CA2207

Inicializar o tipo de valor campos estáticos in-line

CA2212

Não marque os componentes de serviço com WebMethod

CA2213

Campos descartáveis devem ser descartados.

CA2214

Não chamar métodos substituíveis em construtores

CA2216

Tipos descartáveis devem declarar o finalizador

CA2220

Os finalizadores devem chamar o finalizador da classe base

CA2229

Implementar os construtores de serialização

CA2231

Sobrecarga de operador é igual a sobre a anulação de ValueType.Equals

CA2232

Pontos de entrada da marca Windows Forms com STAThread

CA2235

Marcar todos os campos não serializáveis

CA2236

Chamar métodos da classe base em tipos ISerializable

CA2237

Tipos de ISerializable de marca com o SerializableAttribute

CA2238

Implementar métodos de serialização corretamente

CA2240

Implementa ISerializable corretamente

CA2241

Fornecer argumentos corretos para métodos de formatação.

CA2242

Testar NaN corretamente