Conjunto de regras recomendadas misto
Microsoft misturado as regras para o mouse em na maioria dos problemas comuns e críticas em seus C++ projeto que dão suporte a Common Language Runtime, incluindo buracos na segurança em potencial, o aplicativo falhará, e outros erros importantes de lógica e de design.Você deve incluir esta regra definida em qualquer regra personalizada e cria C++ para seus projetos que dão suporte a Common Language Runtime.Este ruleset é criado para ser configurado com a edição do Visual Studio Professional ou superior.
Regra |
Descrição |
---|---|
Usando a memória não inicializada |
|
Desreferenciando o ponteiro nulo |
|
Uso do valor desmarcado |
|
Valor de retorno ignorado |
|
Terminação nula de chamada |
|
Ausentes zero de término |
|
Concatenação incorreto |
|
Argumento ausente de cadeia de caracteres para formatar a função |
|
Argumento ausente de inteiro para formatar a função |
|
Argumento ausente do ponteiro para formatar a função |
|
Argumento ausente do ponteiro de cadeia de caracteres para formatar a função |
|
Retornando a memória não inicializada |
|
O índice exceder o máximo de buffer |
|
O índice exceder o máximo do buffer de pilha |
|
Conversão inválido HRESULT a BOOL |
|
Conversão inválido BOOL a HRESULT |
|
Conversão completo inserida inválido BOOL a HRESULT |
|
Teste inválido de HRESULT com NOT |
|
HRESULT inválidos comparam a -1 |
|
Atribuição inválido de HRESULT a -1 |
|
Uso inválido de HRESULT como booliano |
|
Constante diferente de zero com ou realização |
|
Realização ou com constante diferente de zero |
|
Realização de zero com e perder efeitos colaterais |
|
O local desenrola forçado |
|
Criando uma DACL nulo |
|
Descritores de endereço não-editados |
|
Uso de Alloca desprotegido |
|
Usar encerra o thread |
|
Código inoperante em Bit a bit ou alternar limitado |
|
Uso de aritmética de byte |
|
Uso excessivo da pilha |
|
Usando Alloca no loop |
|
Parênteses ausentes em conversão |
|
O ponteiro cancelará ignorado |
|
Argumento ausente flutuante para formatar a função |
|
Argumento adicional para formatar a função |
|
Argumento de não float para formatar a função |
|
Não inteiro Argumen para formatar a função |
|
Argumento de não caracteres para formatar a função |
|
Conversão de cadeia de caracteres inválido |
|
Chame inválido de CreateProcess |
|
Matriz- novo incompatibilidade de escalar DELETE |
|
Escalar novo incompatibilidade de Matriz- DELETE |
|
Incompatibilidade de Alocação- desalocação de memória |
|
Precedência de bit a bit da relação |
|
A atribuição substitui o teste |
|
Matriz- novo incompatibilidade primitiva de escalar DELETE |
|
Argumento inválido de objeto para a função format |
|
Realização ou de constantes |
|
Efeitos colaterais diferentes de zero ou perder realização |
|
Teste redundante |
|
A inclusão mútua sobre for falsa e realização |
|
A exclusão mútua sobre for verdadeira ou realização |
|
- Não lógico Bit a bit e precedência |
|
- Não lógico Bit a bit ou precedência |
|
O loop conta acima do máximo |
|
O loop conta para baixo do mínimo |
|
O corpo de loop nunca executado |
|
Loop infinito |
|
Loop executado apenas uma vez |
|
Resultado da conversão do turno para o maior tamanho |
|
Bitfield a comparação booliana |
|
Argumento inválido de cadeia de caracteres para formatar a função |
|
Todo o argumento inválido de cadeia de caracteres para formatar a função |
|
Use incompatível de tamanho e de contagem |
|
Chamada de função incorreta argumento de variável |
|
Escape de Realloc |
|
Constante ilegal de filtro de exceção |
|
A exceção continua o loop de execução |
|
Bit a bit ou precedência |
|
Não complemento |
|
A exceção continua Pesquisa |
|
Ignorado por vírgula |
|
A cópia da cadeia de caracteres em vez de cadeia de caracteres compara |
|
Tipos incompatíveis potenciais de argumento |
|
Sinalizadores de VirtualFree inválidos |
|
Parâmetro inválido de VirtualFree |
|
Tamanho de VirtualFree inválido |
|
Identificador de escape do processo |
|
Ausentes de informações de desligamento |
|
Excesso de buffer de Byte- contagem de elementos contagem |
|
Divisão do tamanho do ponteiro |
|
Excesso de leitura |
|
Excesso de gravação |
|
Valor de parâmetro inválido |
|
Valor de parâmetro inválido |
|
Propriedade inválido de atributo |
|
Conflitante valores de propriedade do atributo |
|
As referências não podem ser nulas |
|
Zero não no ponteiro |
|
MustCheck em void |
|
Tamanho do buffer não no ponteiro ou matriz |
|
A incompatibilidade nula em cancelará zero |
|
Acesso de gravação na constante |
|
Retorno usado em pré-requisito |
|
Zero não terminado no ponteiro |
|
MustCheck deve ser Sim ou não |
|
Tamanho do elemento sem tamanho do buffer |
|
O tamanho do buffer excede o tamanho da matriz |
|
Tamanho do buffer não no ponteiro |
|
Nenhuma propriedade no atributo |
|
Tamanho válido no buffer ilegível |
|
Tamanho gravável no buffer não gravável |
|
Anotação inválido: o valor da propriedade “NeedsRelease” Sim ou não deve ser |
|
A cadeia de caracteres inválido de tamanho cancelará |
|
Tipo inválido de cadeia de caracteres de tamanho |
|
Parâmetro inválido de cadeia de caracteres de tamanho |
|
Local acessível de cadeia de caracteres inválido de tamanho |
|
Tipo de buffer inválido de cadeia de caracteres de tamanho |
|
Anotação inválido: A propriedade “NeedsRelease” não pode ser usada em valores de tipo void |
|
Estilo não reconhecido da cadeia de caracteres de formato |
|
O uso de anotações de atributo nesta função invalidará todas as anotações existentes de __declspec |
|
Especificação inválida de tamanho: expressão não parsable |
|
Deref= inválido ou Notref=: expressão não parsable |
|
O valor não é um válido e sim/não avalia talvez |
|
O valor não é um valor de cadeia de caracteres |
|
O valor não é um número) |
|
Erro inesperado de expressão de anotação |
|
O número esperado de argumentos da anotação não corresponde ao número real de casos da anotação |
|
Erro inesperado de anotação de anotação |
|
Falha ao salvar o arquivo de log de XML |
|
Condição de corrida |
|
Falha ao usar corretamente a operação bloqueada |
|
O chamador não mantém o bloqueio |
|
O chamador não liberar o bloqueio |
|
O chamador não pode conter nenhum bloqueio |
|
Falha ao liberar o bloqueio |
|
Falha ao adquirir ou mantendo o bloqueio |
|
Liberando o bloqueio de unheld |
|
Erro de anotação de SAL de simultaneidade |
|
A expressão não for verdadeira nessa chamada |
|
O parâmetro que está sendo anotado deve ser um ponteiro |
|
As classes da função nessa função não correspondem a classe da função no typedef usado para defini-lo. |
|
A função que está sendo atribuído ou transmitidas deve ter uma anotação no mínimo uma de _Function_class_ da classe |
|
O ponteiro de função que está sendo atribuído a for anotado com a classe da função, que não está presente na lista de classe da função. |
|
O tipo de parâmetro real deve corresponder exatamente ao tipo |
|
Uma variável que é acessado através de uma função bloqueada sempre deve ser acessado através de uma função bloqueada. |
|
Acessando uma variável local por uma função bloqueada |
|
A função deve ser chamada de uma exceto o bloco try/catch |
|
O argumento de variável deve ser em vez de literal constante () |
|
O argumento deve ser constante em vez de variável |
|
Considere usar outra função em seu lugar. |
|
Anotação de erro |
|
A função nunca deve ser chamado de dentro de uma exceto o bloco try/catch |
|
O argumento está sendo passado a uma função que espera um ponteiro para um objeto (não um ponteiro para um ponteiro) |
|
Desreferenciando o ponteiro NULL.O ponteiro contém o mesmo valor NULO que outro ponteiro fez. |
|
O argumento pode ser um valor, e é uma cópia do valor localizado no ponteiro |
|
A variável contém um valor que deve ser verificado |
|
O requisito não estiver satisfeito. (A expressão não é avaliada como true.) |
|
Referência ilegal do membro não estático |
|
Referência ambígua ao membro da classe. |
|
_Success_ ou _On_failure_ usado em um contexto ilegal |
|
Pontos à esquerda do operando a uma estrutura, use “->” |
|
O operando esquerdo é uma estrutura, use “.” |
|
A declaração do símbolo tem uma declaração conflitante |
|
As anotações para o contexto de __on_failure não devem estar pre no contexto explícita |
|
Nome do contexto estático esperado para SAL_context |
|
Expressão do ponteiro esperada de anotação |
|
A anotação de _Use_decl_annotations_ deve ser usada para fazer referência, sem alteração, instrução anterior. |
|
Os nomes de parâmetro de atributo devem ser p1 p9… |
|
O typefix não pode ser aplicado a um parâmetro que já tenha um typefix |
|
A anotação de checkReturn se aplica apenas aos postconditions para o parâmetro da função específica. |
|
Para a função, o número de parâmetros para a anotação não corresponde ao localizado no arquivo |
|
Para o paramteer de função, o parâmetro da anotação não corresponde ao localizado no arquivo |
|
O membro de enumeração esperado para a anotação o parâmetro na anotação |
|
A expressão de inteiro esperado para a anotação o parâmetro na anotação |
|
Expressão de cadeia de caracteres esperada para o parâmetro na anotação |
|
__yes, __no, ou __maybe esperado para a anotação |
|
Não encontrou o token/identificador esperados da anotação, parâmetro |
|
A anotação requer parâmetros |
|
Não encontrou o número correto de parâmetros requeridos na anotação |
|
A anotação não pode também ser um PrimOp (na instrução atual) |
|
A anotação não pode também ser um PrimOp (consulte a instrução anterior) |
|
Parâmetro da anotação: não pode ser usado em anotações |
|
A anotação não da suporte a parâmetros |
|
O tipo de parâmetro não tem nenhum membro. |
|
A anotação é válida apenas na matriz |
|
pre, postagem, ou deref não aplicado a qualquer anotação |
|
pre, postagem, ou deref aplicado a um bloco |
|
a expressão de __at não se aplica à função atual |
|
A função pode não estar bem como uma anotação |
|
A anotação não pode ser usada em uma expressão |
|
A anotação no parâmetro não tem mais suporte |
|
A anotação no parâmetro tem mais de um valor de, o stringValue, e de longValue.Use paramn=xxx |
|
A anotação no parâmetro tem ambos, avaliar o stringValue, ou o longValue; e paramn=xxx.Use somente paramn=xxx |
|
A anotação no parâmetro não tiver param2 mas nenhum param1 |
|
A anotação para a função no parâmetro não é reconhecida |
|
A anotação para a função no parâmetro requer mais cancelará do tipo real anotado reserva |
|
A anotação para a função tem um parâmetro unparseable/anotação externo |
|
A anotação para a função “anota essa” em uma função não-membro- |
|
A anotação do parâmetro da função não corresponde ao tipo do parâmetro |
|
Anotação inconsistente para a função: a instância anterior tem um erro. |
|
Anotação inconsistente para a função: esta instância tiver um erro. |
|
Anotação inconsistente para a função: o parâmetro tem uma outras anotações nesta instância. |
|
Anotação inconsistente para a função: o parâmetro tem uma outras anotações nesta instância. |
|
o dynamic_cast<>() não têm suporte nas anotações |
|
Um erro de sintaxe na anotação foi encontrado na função, para a anotação |
|
Um erro de sintaxe em uma anotação condicional foi localizado para a anotação intrínseca |
|
Os valores das listas de resultados devem ser constantes. |
|
Um erro de sintaxe nas anotações anotação foi encontrada na função. |
|
A anotação para a função, revise parâmetro quando for inconsistente com a declaração de função |
|
Para a função, encontrar pistas forem inconsistentes com a declaração de função |
|
O parâmetro para o _Macro_value_ for nulo |
|
Para iniciar o símbolo “,” foi encontrado “sem uma extremidade correspondente” |
|
Para o símbolo, uma “end” não foi encontrada uma correspondência “iniciado” |
|
As cadeias de formato devem estar nas condições anteriores |
|
Para a função, erro de sintaxe do parâmetro |
|
Para a função, erro de sintaxe na extremidade |
|
Para a função, erro de sintaxe na anotação de _At_() (nome do parâmetro não reconhecido) |
|
Para a função, erro de sintaxe na anotação de _At_() (nome de parâmetro inválido) |
|
Para a função: ReadableTo ou WritableTo não tinha as especificações associado como um parâmetro. |
|
a anotação para a função Externals contém mais do que o número real de parâmetros |
|
nulo/notnull de postagem no nível 0 de deref não tem sentido para a função. |
|
Operandos da expressão de tipo incompatíveis para o operador |
|
Nenhuma anotações para a primeira declaração da função. |
|
Um operador adicional de _Deref_ foi encontrado na anotação. |
|
Um operador ambíguo de _Deref_ foi encontrado na anotação. |
|
Um operador de forma incorreta colocado de _Notref_ foi encontrado aplicado ao token. |
|
Um erro quando analisar um token foi descoberta. |
|
A anotação no parâmetro é obsoleto |
|
A anotação no parâmetro é obsoleto |
|
A anotação descreve uma situação que não é condicional aplicável. |
|
A anotação descreve onde um valor dinâmico uma variável () não pode ser usado na condição. |
|
Tipos que possui campos descartáveis deve ser descartável |
|
Declare manipuladores de eventos corretamente |
|
Marcar os assemblies com AssemblyVersionAttribute |
|
Os métodos da interface devem estar acessíveis por tipos de filho |
|
Tipos que possui recursos nativos deve ser descartável |
|
Mover P/Invokes à classe de NativeMethods |
|
Não ocultar métodos da classe base |
|
Implemente corretamente IDisposable |
|
Não digite as exceções em locais inesperados |
|
Evite aceleradores duplicados |
|
Os pontos de entrada de P/Invoke devem existir |
|
P/Invokes não deve ser visível |
|
Os tipos de layout automático não deve ser visível COM |
|
Chame GetLastError imediatamente depois de P/Invoke |
|
Os tipos de base visíveis de tipo COM o devem ser visível COM |
|
Os métodos de registro COM o devem ser correspondidos |
|
Declare P/Invokes corretamente |
|
Remova os finalizers vazias |
|
Os campos do tipo de valor devem ser portáteis |
|
As declarações de P/Invoke devem ser portáteis |
|
Não bloqueie em objetos de identidade fraco |
|
Revise consultas SQL para vulnerabilidades de segurança |
|
Especifique que o marshaling para argumentos de cadeia de caracteres de P/Invoke |
|
Segurança declarativa revisão em tipos de valor |
|
Os ponteiros não devem ser visíveis |
|
Os tipos não seguros deve expor campos |
|
A segurança do método deve ser um superconjunto do tipo |
|
Os métodos de APTCA só devem chamar métodos de APTCA |
|
Os tipos de APTCA só devem estender tipos de base de APTCA |
|
Não expõe métodos indiretamente com as demandas de link |
|
As demandas do link de substituição devem ser idênticas com base |
|
Cláusulas vulneráveis de quebra automática finalmente tente externa |
|
As demandas do link do tipo exigem demandas de herança |
|
Os tipos críticos de segurança não podem participar da equivalência do tipo |
|
Os construtores padrão devem ser pelo menos críticos quanto construtores padrão do tipo de base |
|
O delega devem associar a transparência consistente com métodos |
|
Os métodos devem manter a transparência consistente ao substituir métodos de base |
|
Os métodos transparentes devem conter apenas o IL verificável |
|
Os métodos transparentes não devem chamar métodos com o atributo de SuppressUnmanagedCodeSecurity |
|
O código transparente não deve referenciar itens críticos de segurança |
|
Os métodos transparentes não devem satisfazer LinkDemands |
|
Os tipos devem ser pelo menos críticos quanto os tipos de base e interfaces |
|
Os métodos transparentes não podem usar segurança afirmam |
|
Os métodos transparentes não devem chamar em código nativo |
|
Lançar novamente para preservar detalhes da pilha |
|
Não remove objetos várias vezes |
|
Inicializar os campos estáticos de tipo de valor de tabela embutida |
|
Não marque componentes atendidos com WebMethod |
|
Os campos descartáveis devem ser removidos |
|
Não chame métodos overridable nos construtores |
|
Os tipos descartáveis devem declarar o finalizador |
|
Finalizers deve chamar o finalizador da classe base |
|
Construtores de serialização de ferramentas |
|
Operador de igual de sobrecarga em substituir ValueType.Equals |
|
Pontos de entrada do Windows Forms de marca a STAThread |
|
Marcar todos os campos não serializáveis |
|
Chamar métodos da classe base em tipos de ISerializable |
|
Marcar tipos de ISerializable com SerializableAttribute |
|
Implementar os métodos de serialização corretamente |
|
Implementar ISerializable corretamente |
|
Forneça argumentos corretos para formatação métodos |
|
Teste para NaN corretamente |