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 |
---|---|
Usando a memória não inicializada |
|
Cancelar a referência de ponteiro Null |
|
Uso de valor não verificado |
|
Valor de retorno ignorado |
|
Zero terminação de chamada |
|
Zero a terminação ausente |
|
Concatenação incorreta |
|
Sem o argumento de seqüência de caracteres para a função Format |
|
Argumento de inteiro ausente para a função Format |
|
Argumento ausente do ponteiro para função Format |
|
Sem o argumento de ponteiro de seqüência de caracteres para a função Format |
|
Retornando a memória não inicializada |
|
Índice excede o máximo de Buffer |
|
Índice excede o máximo de Buffer de pilha |
|
Elenco inválido HRESULT para BOOL |
|
Elenco inválido BOOL para HRESULT |
|
Reforço de compilador-inserido inválido BOOL para HRESULT |
|
Teste HRESULT inválido com não |
|
Comparação HRESULT inválida como -1 |
|
Atribuição de HRESULT inválida como -1 |
|
Uso inválido de HRESULT como booleano |
|
Constante de Zero com lógica- ou |
|
Lógico- ou com a constante diferente de Zero |
|
Zero com lógica- E perde efeitos colaterais |
|
Local desenrolamento forçado |
|
Criando Null DACL |
|
Realizar descritores de endereço |
|
Uso desprotegido de Alloca |
|
Usando encerrar o segmento |
|
Código morto no bit a bit- ou limitada Switch |
|
Uso de aritmética de Byte |
|
Uso excessivo de pilha |
|
Usando Alloca em Loop |
|
Parênteses faltando na projeção |
|
Referência de ponteiro ignorado |
|
Sem o argumento Float para função Format |
|
Argumento extra para a função Format |
|
Argumento para a função Format não Float |
|
Argumen não inteiro para a função Format |
|
Caractere não argumento para função Format |
|
Elenco inválido de seqüência de caracteres |
|
Chamada de CreateProcess inválida |
|
Incompatibilidade de novo para a matriz escalar-Delete |
|
Incompatibilidade de excluir a matriz escalar-novo |
|
Incompatibilidade de desalocação de alocação de memória |
|
Precedência de relação bit a bit |
|
Atribuição substitui o teste |
|
Incompatibilidade de Scalar-Delete Array-novo primitivo |
|
Argumento de objeto inválido para a função Format |
|
Lógico- ou das constantes |
|
Diferente de Zero lógico- ou perder efeitos colaterais |
|
Teste redundante |
|
Inclusão mútua sobre lógico- E for falsa |
|
Exclusão mútua sobre lógico- ou é verdadeiro |
|
Não-lógico bit a bit- E precedência |
|
Não-lógico bit a bit- ou precedência |
|
Loop conta de máximo |
|
Loop conta do mínimo |
|
Corpo do loop nunca executado |
|
Loop infinito |
|
Loop executado apenas uma vez |
|
Resultado da Shift convertidas em tamanho maior |
|
Junte a comparação booleanos |
|
Argumento de seqüência de caracteres inválido para função Format |
|
Inválido grande argumento de seqüência de caracteres para a função Format |
|
Sem correspondência de tamanho e uso de contagem |
|
Chamada de função de argumento variável incorreto |
|
Vazamento de possível realocar |
|
Constante de filtro de exceção ilegal |
|
Exceção continuar execução Loop |
|
Bit a bit- ou precedência |
|
Complemento não não |
|
Exceção continuar a pesquisa |
|
Ignorado por vírgula |
|
Cópia de seqüência de caracteres em vez de comparação de seqüência de caracteres |
|
Incompatibilidade de tipo de argumento potencial |
|
Sinalizadores inválidos de VirtualFree |
|
Parâmetro inválido VirtualFree |
|
Tamanho inválido VirtualFree |
|
Vazamento de identificador de processo |
|
Falta de informações de desligamento |
|
Contagem de elemento de Byte-contagem de saturação de Buffer |
|
Divisão de tamanho do ponteiro |
|
Saturação de leitura |
|
Saturação de gravação. |
|
Valor de parâmetro inválido |
|
Valor de parâmetro inválido |
|
Propriedade de atributo inválido |
|
Valores de propriedade de atributo conflitantes |
|
Referências não podem ser nulas |
|
Nulo não ponteiro |
|
MustCheck em Void |
|
Tamanho do buffer no não-ponteiro ou matriz |
|
Incompatibilidade de nula em Zero de cancelamento de referência |
|
Acesso de gravação em constante |
|
Retorno usado na pré-condição |
|
Terminada no ponteiro de não nula |
|
MustCheck deve ser Sim ou não |
|
Tamanho do elemento sem o tamanho do Buffer |
|
Tamanho da matriz excede o tamanho do buffer |
|
Tamanho do buffer no ponteiro-não |
|
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' deve ser Sim ou não |
|
Cancelamento de referência de seqüência de caracteres de tamanho inválido |
|
Tipo de seqüência de caracteres de tamanho inválido |
|
Parâmetro de seqüência de caracteres de tamanho inválido |
|
Seqüência inválida de tamanho local inacessível |
|
Tipo de Buffer de seqüência de caracteres de tamanho inválido |
|
Anotação inválido: propriedade 'NeedsRelease' não pode ser usada nos valores do tipo void |
|
Estilo de seqüência de caracteres de formato não reconhecido |
|
O uso de atributo anotações sobre esta função invalidará todas suas anotações existentes do __declspec |
|
Especificação de tamanho inválido: não é passível de análise de expressão |
|
Deref inválido = ou Notref =: expressão não analisável |
|
O valor não é um valor válido de Sim/não/talvez |
|
O valor não é um valor de seqüência |
|
O valor não é um número |
|
Erro inesperado de expressão de anotação |
|
Número esperado de argumentos para a anotação não corresponde ao número real de argumentos para anotação |
|
Erro inesperado de anotação para anotação |
|
Falha ao salvar o arquivo de Log XML |
|
Condição de corrida |
|
Não usar a operação sincronizada corretamente |
|
Deixar de manter o bloqueio do chamador |
|
Falha ao liberar bloqueio do chamador |
|
Chamador não pode conter qualquer bloqueio. |
|
Falha ao liberar bloqueio |
|
Com falha para adquirir ou mantenha a tecla de bloqueio |
|
Liberar bloqueio unheld |
|
Erro de anotação de SAL de concorrência |
|
A expressão não se aplica nesta chamada |
|
O parâmetro sendo anotado deve ser um ponteiro |
|
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. |
|
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) |
|
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. |
|
O tipo do parâmetro real deve corresponder exatamente o tipo |
|
Uma variável que é acessada por meio de uma função Interlocked sempre deve ser acessada por meio de uma função Interlocked. |
|
Acessando uma variável local por meio de uma função Interlocked |
|
A função deve ser chamada de dentro de um bloco try / exceto bloco |
|
O argumento variável deve ser uma constante (literal) |
|
O argumento constante deve ser variável |
|
Considere usar outra função. |
|
Anotação de erro |
|
A função nunca deve ser chamada de dentro de um bloco try / exceto bloco |
|
O argumento está sendo passado para uma função que espera um ponteiro para um objeto (não um ponteiro para um ponteiro) |
|
Cancelar a referência de ponteiro NULL.O ponteiro contém o mesmo valor nulo como fez de outro ponteiro. |
|
O argumento pode ser um valor e uma cópia do valor que for encontrada no ponteiro |
|
A variável contém um valor que deve ser examinado. |
|
O requisito não é satisfeito.(A expressão não é avaliada como true.) |
|
Referência ilegal para membro não estático |
|
Referência ambígua ao membro de classe. |
|
_Success_ ou _On_failure_ usados em um contexto ilegal |
|
Pontos de operando da esquerda para uma struct, use '->' |
|
Operando esquerdo é uma struct, use '.' |
|
A declaração do símbolo possui uma declaração conflitante |
|
Anotações para o contexto de __on_failure não devem estar no contexto de pré explícita |
|
Nome de contexto estático esperado para SAL_context |
|
Expressão do ponteiro esperado para anotação |
|
A anotação de _Use_decl_annotations_ deve ser usada para fazer referência, sem modificações, uma declaração anterior. |
|
Nomes de parâmetro de atributo devem ser p1... p9 |
|
O typefix não pode ser aplicado a um parâmetro que já tem um typefix |
|
A anotação checkReturn só se aplica para posteriores para o parâmetro de função específica. |
|
Para a função, o número de parâmetros para a anotação não corresponde ao que foi encontrado no arquivo |
|
Para a função paramteer, parâmetro da anotação, o não corresponde que encontradas no arquivo |
|
Membro da enumeração esperado para a anotação do parâmetro na anotação |
|
Expressão de inteiro esperada para a anotação do parâmetro na anotação |
|
Expressão de seqüência esperado para o parâmetro na anotação |
|
__yes, __no ou __maybe esperado para anotação |
|
Não encontrou Token/identificador esperado para a anotação, parâmetro |
|
Anotação requer parâmetros |
|
Não encontrou o número correto de parâmetros necessários na anotação |
|
Anotação não pode ser também um PrimOp (em uma declaração atual) |
|
Anotação não pode ser também um PrimOp (consulte a declaração anterior) |
|
O parâmetro de anotação: não é possível usar o tipo em anotações |
|
Anotação não oferece suporte a parâmetros |
|
O tipo do parâmetro não tem nenhum membro. |
|
Anotação só é válida no array |
|
Pre, postar ou deref não aplicada a qualquer anotação. |
|
Pre, postar ou aplicados a um bloco de deref |
|
__at expressão não é aplicável a função atual |
|
A função não pode ser autônoma como uma anotação |
|
A anotação não pode ser usada em uma expressão |
|
A anotação no parâmetro não é mais suportada |
|
A anotação no parâmetro tem mais de um valor, stringValue e longValue.Usar paramn = xxx |
|
A anotação no parâmetro tem valor, stringValue ou longValue; e paramn = xxx.Use somente paramn = xxx |
|
A anotação no parâmetro tem param2 mas nenhum param1 |
|
A anotação para a função no parâmetro não é reconhecida. |
|
Cancela a anotação para a função no parâmetro requer mais referência que o tipo real anotado |
|
A anotação para a função possui uma anotação de parâmetro não analisável/externas |
|
A anotação para função anota 'this' em uma não-membro-função |
|
A anotação de parâmetro para a função não coincide com o tipo do parâmetro |
|
Anotação inconsistente para função: a instância anterior tem um erro. |
|
Anotação inconsistente para função: esta instância tem um erro. |
|
Anotação inconsistente para função: o parâmetro tem outro anotações nesta instância. |
|
Anotação inconsistente para função: o parâmetro tem outro anotações nesta instância. |
|
() do dynamic_cast < > não há anotações |
|
Um erro de sintaxe na anotação foi encontrado na função, para anotação |
|
Um erro de sintaxe em uma anotação condicional foi encontrado para a anotação intrínseca |
|
Valores de listas de resultados devem ser constantes. |
|
Um erro de sintaxe nas anotações foi encontrado a anotação na função. |
|
A anotação para a função, o parâmetro durante o exame é inconsistente com a declaração da função |
|
Para a função, as dicas são inconsistentes com a declaração de função |
|
O parâmetro _Macro_value_ é nulo |
|
Símbolo, de um 'começar' foi encontrada sem correspondência 'end' |
|
Símbolo, 'end' foi encontrado sem uma 'Iniciar' |
|
Seqüências de caracteres de formato devem estar no pré-condições |
|
Para a função, erro de sintaxe no parâmetro |
|
Para a função, erro de sintaxe próximo ao final |
|
Para a função, erro de sintaxe em anotação de _At_() (nome de parâmetro não reconhecido) |
|
Para a função, erro de sintaxe em anotação de _At_() (nome de parâmetro inválido) |
|
Função: ReadableTo ou WritableTo não tinha uma especificação de limite como um parâmetro. |
|
a anotação para função contém mais itens externos que o número real de parâmetros |
|
POST null/notnull em deref nível 0 não faz sentido para a função. |
|
Operandos da expressão de tipos incompatíveis para operador |
|
Não há anotações para a primeira declaração da função. |
|
Um operador de _Deref_ extra foi encontrado na anotação. |
|
Um operador ambígua _Deref_ foi encontrado na anotação. |
|
Um operador de _Notref_ inserido incorretamente foi encontrado aplicados ao token. |
|
Um erro ao analisar um token foi descoberto. |
|
A anotação no parâmetro é obsolescent |
|
A anotação no parâmetro é obsolescent |
|
A anotação descreve uma situação que não é aplicável condicionalmente. |
|
A anotação descreve onde um valor dinâmico (uma variável) não pode ser usado na condição. |
|
Os tipos que possuem campos descartáveis devem ser descartáveis |
|
Declarar os manipuladores de eventos corretamente |
|
Assemblies de marca com AssemblyVersionAttribute |
|
Métodos de interface devem ser chamados por tipos de filho |
|
Os tipos que possuem recursos nativos devem ser descartáveis |
|
Mover P/Invokes à classe NativeMethods |
|
Não ocultar métodos da classe base |
|
Implementar IDisposable corretamente |
|
Não aumente exceções em locais inesperados |
|
Evite aceleradores duplicados |
|
Os pontos de entrada de P/Invoke devem existir. |
|
P/Invokes não deverá ser visível |
|
Tipos de layout automático não devem ser visível em COM |
|
Chamar GetLastError imediatamente após P/Invoke. |
|
Tipos base do tipo visível COM devem estar visível em COM |
|
Métodos de registro COM devem ser correspondidos. |
|
Declarar P/Invokes corretamente |
|
Remover os finalizadores vazios |
|
Campos do tipo de valor devem ser portátil |
|
Declarações P/Invoke devem ser portátil |
|
Não bloquear em objetos com identidade fraco |
|
Analisar consultas SQL para vulnerabilidades de segurança |
|
Especificar o empacotamento para argumentos de seqüência de caracteres de P/Invoke. |
|
Revisão de segurança declarativos sobre tipos de valor |
|
Ponteiros não deverá ser visíveis |
|
Tipos protegidos não devem expor campos |
|
A segurança do método deve ser um superconjunto do tipo |
|
Métodos APTCA só deverá chamar métodos APTCA |
|
Tipos APTCA só devem estender tipos básicos de APTCA |
|
Não exponha indiretamente métodos com as demandas de link |
|
As demandas de link de substituição devem ser idênticas para basear |
|
Quebra automática de linha vulnerável finalmente tente cláusulas no exterior |
|
As demandas de link do tipo exigem demandas de herança |
|
Tipos de críticos de segurança não podem participar de equivalência de tipo |
|
Construtores padrão devem ser pelo menos tão importantes como construtores do tipo base padrão |
|
Delegados devem ligar para métodos com transparência consistente |
|
Métodos devem manter a transparência consistente quando os métodos base |
|
Métodos transparentes devem conter apenas IL verificável |
|
Métodos transparentes não devem chamar métodos com o atributo SuppressUnmanagedCodeSecurity |
|
Código Transparent não deve fazer referência a itens essenciais de segurança |
|
Métodos transparentes não devem atender a LinkDemands |
|
Os tipos devem ser pelo menos, tão importantes quanto seus tipos base e interfaces |
|
Métodos transparentes não podem usar a segurança asserts |
|
Métodos transparentes não devem chamar código nativo |
|
Relançar para preservar os detalhes de pilha |
|
Não dispor objetos várias vezes |
|
Inicializar o tipo de valor campos estáticos in-line |
|
Não marque os componentes de serviço com WebMethod |
|
Campos descartáveis devem ser descartados. |
|
Não chamar métodos substituíveis em construtores |
|
Tipos descartáveis devem declarar o finalizador |
|
Os finalizadores devem chamar o finalizador da classe base |
|
Implementar os construtores de serialização |
|
Sobrecarga de operador é igual a sobre a anulação de ValueType.Equals |
|
Pontos de entrada da marca Windows Forms com STAThread |
|
Marcar todos os campos não serializáveis |
|
Chamar métodos da classe base em tipos ISerializable |
|
Tipos de ISerializable de marca com o SerializableAttribute |
|
Implementar métodos de serialização corretamente |
|
Implementa ISerializable corretamente |
|
Fornecer argumentos corretos para métodos de formatação. |
|
Testar NaN corretamente |