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 |
---|---|
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. |
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. |
|
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. |
|
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. |
|
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). |
|
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. |
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. |
|
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. |
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. |
|
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. |
|
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. |
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. |
|
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. |
|
Uma plataforma chamar método está definido e um método com a funcionalidade equivalente existe na.Biblioteca de classes do NET Framework. |
|
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. |
|
Os finalizadores devem usar o modificador de acesso da família. |
|
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. |
Um tipo implementa a igualdade ou desigualdade e não implementa o operador oposto. |
|
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. |