Partilhar via


Conjunto de regras de análise de regras de código de correção do Basic da Microsoft

O conjunto de regras de regras de correção básicas do Microsoft aborda os erros de lógica e erros comuns do uso de APIs de framework. As regras básicas de correção incluem as regras no conjunto de regras de regras de recomendado mínimo de Microsoft. Para obter mais informações, consulte Microsoft mínimo recomendado de conjunto de regras de análise de código de regras você deve incluir essa regra definida para expandir a lista de avisos que o mínimo recomendado relatório de regras.

A tabela a seguir descreve todas as regras do conjunto de regras de regras de correção básicas da Microsoft.

Regra

Descrição

CA1008: Enums devem ter o valor zero

O valor padrão de uma enumeração inicializada, assim como outros tipos de valor é zero. Uma enumeração de não-atribuídos sinalizadores deve definir um membro com o valor de zero para que o valor padrão é um valor válido da enumeração. Se uma enumeração que tem o atributo FlagsAttribute aplicado define um membro com valor zero, seu nome deve ser "None" para indicar que os valores não foram definido na enumeração.

CA1013: É igual a operador de sobrecarga em sobrecarga, adicionar e subtrair

Um tipo de público ou protegido implementa os operadores de adição ou subtração sem implementar o operador de igualdade.

CA1303: Não passe os literais como parâmetros localizados

Um método visível externamente passa uma seqüência de caracteres literal como um parâmetro para um construtor ou um método na.NET Framework class library, e a seqüência de caracteres deve ser localizável.

CA1308: Normalizar seqüências de caracteres em maiúsculas

Seqüências de caracteres devem ser normalizadas em maiúsculas. Há um pequeno grupo de caracteres que não pode fazer uma viagem quando eles são convertidos em minúsculos.

CA1806: Não ignorar os resultados do método

Um novo objeto é criado, mas nunca é usado, um método que cria e retorna uma nova seqüência de caracteres é chamado e a nova seqüência nunca é usada ou um método COM ou P/Invoke retorna um código de erro ou o HRESULT que nunca é usado.

CA1816: Chame GC.SuppressFinalize corretamente

Um método que é uma implementação de Dispose não chama GC.SuppressFinalize ou um método que não é uma implementação de Dispose chama GC.SuppressFinalize ou um método chama GC.SuppressFinalize e passagens algo diferente neste (Me em Visual Basic).

CA1819: Propriedades não devem retornar arrays

Arrays retornados pelas propriedades não são protegidos contra gravação, mesmo se a propriedade é somente leitura. Para manter a matriz à prova de violação, a propriedade deve retornar uma cópia da matriz. Normalmente, os usuários não compreenderá as implicações de desempenho adverso de chamar essa propriedade.

CA1820: Testar usando o comprimento da seqüência de cadeias de caracteres vazias

Comparando seqüências de caracteres usando a propriedade String. length ou string. IsNullOrEmpty método é significativamente mais rápido do que usando igual.

CA1903: Usar somente a API do framework de destino

Um tipo ou membro está usando um membro ou um tipo que foi introduzido em um service pack que não foi incluído com o framework de destino do projeto.

CA2004: Remova as chamadas para GC.Manutenção de atividade

Se a conversão para o uso de SafeHandle, remova todas as chamadas para GC.KeepAlive (objeto). Nesse caso, as classes não devem ter que chamar GC.KeepAlive, supondo que eles não possuem um finalizador, mas dependem de SafeHandle para finalizar o SO lidar com eles.

CA2006: Usar o SafeHandle para encapsular os recursos nativos

O uso de IntPtr em código gerenciado pode indicar um possível problema de segurança e confiabilidade. Todos os usos de IntPtr devem ser examinados para determinar se usa um SafeHandle, ou uma tecnologia semelhante, é necessário em seu lugar.

CA2102: Catch não CLSCompliant exceções nos manipuladores gerais

Um membro em um assembly que não está marcado com o RuntimeCompatibilityAttribute ou está marcado como RuntimeCompatibility(WrapNonExceptionThrows = false) contém um bloco catch que manipula Exception e não contém um bloco catch geral de imediatamente a seguir.

CA2104: Não declarar os tipos de referência mutáveis somente leitura

Um tipo visível externamente contém um campo visível externamente de somente leitura que é um tipo de referência mutáveis. Um tipo de mutável é um tipo de dados cujos instância podem ser modificados.

CA2105: Campos de matriz não devem ser lidos apenas

Quando você aplica o modificador de read-only (somente leitura em Visual Basic) a um campo que contém uma matriz, o campo não pode ser alterado para fazer referência a uma matriz diferente. No entanto, os elementos da matriz armazenada em um campo somente leitura podem ser alterados.

CA2106: Declarações de seguro

Um método declara que uma permissão e verificações de segurança não são executadas no chamador. Declarar uma permissão de segurança sem executar qualquer verificações de segurança podem deixar uma fraqueza de segurança pode ser explorada em seu código.

CA2115: Chame GC.Ao usar os recursos nativos de KeepAlive

Essa regra detecta erros que podem ocorrer devido um recurso não gerenciado está sendo finalizado enquanto ainda estiver sendo usado no código não gerenciado.

CA2119: Lacrar métodos que satisfaçam às interfaces privadas

Um tipo de público herdável fornece uma implementação do método substituível de uma interface interna do (amigo em Visual Basic). Para corrigir uma violação desta regra, impedir que o método seja substituído fora do assembly.

CA2120: Proteger os construtores de serialização

Esse tipo tem um construtor que leva a um objeto de System.Runtime.Serialization.SerializationInfo e um objeto de System.Runtime.Serialization.StreamingContext (a assinatura do construtor de serialização). Este construtor não é protegido por uma verificação de segurança, mas um ou mais dos construtores regulares no tipo estão protegidos.

CA2121: Construtores estáticos devem ser particulares

O sistema chama o construtor estático antes da primeira instância do tipo é criada ou quaisquer membros estáticos são referenciados. Se um construtor estático não é particular, pode ser chamado pelo código diferente do sistema. Dependendo das operações são executadas no construtor, isso pode causar um comportamento inesperado.

CA2205: Use o gerenciado equivalentes da API do Win32

Uma plataforma chamar método está definido e um método com a funcionalidade equivalente existe na.Biblioteca de classes do NET Framework.

CA2215: Métodos Dispose devem chamar dispose de classe base

Se um tipo herda a partir de um tipo descartável, ele deve chamar o método Dispose do tipo base do seu próprio método Dispose.

CA2221: Os finalizadores devem ser protegidos.

Os finalizadores devem usar o modificador de acesso da família.

CA2222: Não diminuir a visibilidade de membro herdado

Você não deve alterar o modificador de acesso para membros herdados. A alteração de um membro herdado para private não impede que chamadores acessem a implementação de classe base do método.

CA2223: Os membros devem diferir por tipo de retorno de mais de

Embora o common language runtime permite o uso de tipos de retorno para diferenciar entre membros idênticos, esse recurso não está no Common Language Specification, nem é um recurso comum do.NET linguagens de programação.

CA2224: É igual a substituição na sobrecarga de operador equals

Um tipo público implementa o operador de igualdade, mas não substitui Object. Equals.

CA2226: Os operadores devem ter sobrecargas simétricas

Um tipo implementa a igualdade ou desigualdade e não implementa o operador oposto.

CA2227: Propriedades da coleção devem ser somente leitura

Uma propriedade de coleção gravável permite que um usuário substituir a coleção com uma coleção diferente. Uma propriedade somente leitura pára a coleção seja substituída, mas ainda permite que os membros individuais sejam definidas.

CA2231: Sobrecarga de operador equals em substituição a ValueType.Equals

Um tipo de valor substitui Object. Equals, mas não implementa o operador de igualdade.

CA2239: Fornecer métodos de desserialização de campos opcionais

Um tipo tem um campo que está marcado com o atributo OptionalFieldAttribute e o tipo não fornece métodos de manipulação de eventos de desserialização.