Microsoft estendeu o conjunto de regras de análise de código de regras de correção

O conjunto de regras de regras de correção do Microsoft Extended maximiza a lógica e framework uso erros relatados pela análise de código. Ênfase adicional é colocado em cenários específicos, como interoperabilidade COM e aplicativos móveis. Você deve considerar incluindo esta regra definir se uma das seguintes situações se aplica ao seu projeto ou para localizar problemas adicionais em seu projeto.

O conjunto de regras de regras de correção do Microsoft Extended inclui as regras que estão na regra de regras de correção básicas do Microsoft definidas. As regras básicas de correção incluem as regras que estão na regra as Microsoft mínimo recomendado regras definidas. Para obter mais informações, consulte Conjunto de regras de análise de regras de código de correção do Basic da Microsoft e Microsoft mínimo recomendado de conjunto de regras de análise de código de regras

A tabela a seguir descreve todas as regras no conjunto de regras de regras de correção estendido da Microsoft.

Regra

Descrição

CA1032: Implementar os construtores de exceção padrão

Falha ao fornecer o conjunto completo de construtores pode dificultar o lidar corretamente com exceções.

CA1054: Parâmetros da URI não devem ser seqüências de caracteres

Se um método leva uma representação de seqüência de caracteres de um URI, uma sobrecarga correspondente deve ser fornecido que leva a uma instância da classe URI, que fornece esses serviços de maneira segura e protegida.

CA1055: URI retornar valores não devem ser seqüências de caracteres

Esta regra pressupõe que o método retorna um identificador de recursos uniforme (URI). Uma representação de seqüência de caracteres de um URI está sujeita a análise e erros de codificação e pode levar a vulnerabilidades de segurança. A classe System. URI fornece esses serviços de maneira segura e protegida.

CA1056: Propriedades URI não devem ser seqüências de caracteres

Esta regra pressupõe que a propriedade representa um identificador de recursos uniforme (URI). Uma representação de seqüência de caracteres de um URI está sujeita a análise e erros de codificação e pode levar a vulnerabilidades de segurança. A classe System. URI fornece esses serviços de maneira segura e protegida.

CA1057: Sobrecargas URI de seqüência de caracteres chamada System. URI sobrecargas

Um tipo declara sobrecargas do método que diferem somente de substituição de um parâmetro de seqüência de caracteres com um parâmetro System. URI. A sobrecarga que aceita o parâmetro de seqüência de caracteres não chamar a sobrecarga que aceita o parâmetro URI.

CA1402: Evitar sobrecargas em interfaces de COM visíveis

Quando os métodos sobrecarregados estão expostos a clientes COM, somente a primeira sobrecarga de método manterá seu nome. Sobrecargas subseqüentes são exclusivamente renomeadas anexando o nome de um caractere de sublinhado (_) e um número inteiro que corresponde à ordem de declaração de que a sobrecarga.

CA1406: Evite argumentos de Int64 para os clientes Visual Basic 6

Clientes COM 6 de Visual Basic não podem acessar os inteiros de 64 bits.

CA1407: Evite membros estáticos em tipos de visíveis COM

COM não oferece suporte a métodos estáticos.

CA1408: Não use ClassInterfaceType de AutoDual

Tipos de uma interface dupla habilitam clientes vincular a um layout de interface específica. Quaisquer alterações em uma versão futura do layout do tipo ou quaisquer tipos base interromperá os clientes COM que vincule à interface. Por padrão, se o atributo ClassInterfaceAttribute não for especificado, uma interface somente de distribuição é usada.

CA1409: Tipos de visíveis com devem ser criados

Um tipo de referência é marcado como visível para COM especificamente contém um construtor parametrizado público, mas não tem um construtor público padrão (sem parâmetros). Um tipo sem um construtor público padrão não é criado por clientes COM.

CA1411: Métodos de registro COM não devem ser visíveis

Um método marcado com o atributo de System.Runtime.InteropServices.ComRegisterFunctionAttribute ou o atributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute é visível externamente.

CA1412: Interfaces de marca ComSource como IDispatch

Um tipo é marcado com o atributo System.Runtime.InteropServices.ComSourceInterfacesAttribute e pelo menos uma das interfaces especificadas não está marcada com o atributo System.Runtime.InteropServices.InterfaceTypeAttribute definido como ComInterfaceType.InterfaceIsIDispatch.

CA1413: Evitar os tipos de valor visível COM campos não públicos

Campos de instância de público não visível em COM tipos de valor são visíveis para os clientes COM. Analise o conteúdo dos campos de informações que não deve ser exposta ou que terá efeitos indesejados de design ou de segurança.

CA1414: Marcar os argumentos de P/Invoke booleanos com MarshalAs

O tipo de dados booleano tem diversas representações em código não gerenciado.

CA1600: Não use a prioridade do processo ocioso

Não defina a prioridade do processo para ocioso. Processos com System.Diagnostics.ProcessPriorityClass.Idle ocupará a CPU quando ele seria contrário ociosa e, portanto, bloquear o modo de espera.

CA1601: Não usam cronômetros de impedir alterações de estado de energia

Atividade periódica de maior freqüência manterá a CPU ocupada e interferir com temporizadores de ociosidade de economia de energia que desativar a exibição e os discos rígidos.

CA1821: Remover os finalizadores vazios

Sempre que possível, evite finalizadores causa da sobrecarga de desempenho adicional envolvida no controle de tempo de vida do objeto. Um finalizador vazio provoca adicionado a sobrecarga sem qualquer benefício.

CA1824: Assemblies de marca com o NeutralResourcesLanguageAttribute

O atributo NeutralResourcesLanguage informa o ResourceManager da linguagem que foi usado para exibir os recursos da cultura neutra para um assembly. Isso melhora o desempenho da pesquisa do primeiro recurso que você carregar e pode reduzir o seu conjunto de trabalho.

CA2001: Evite chamar métodos problemáticos

Um membro chama um método de potencialmente perigoso ou problemático.

CA2003: Não trata fibras threads

Um segmento gerenciado está sendo tratado como um thread do Win32.

CA2204: Literais devem ser escritos corretamente

Uma seqüência de caracteres literal no corpo do método contém uma ou mais palavras que não são reconhecidas pela biblioteca do verificador ortográfico do Microsoft.

CA2211: Os campos não constante não deverá ser visíveis

Os campos estáticos que não são constantes nem são somente leitura não thread-safe. Acesso a tal campo deve ser cuidadosamente controlado e requer técnicas avançadas de programação para sincronizar o acesso ao objeto de classe.

CA2217: Não marque enums com FlagsAttribute

Uma enumeração visível externamente é marcada com FlagsAttribute e tem um ou mais valores que não são potências de dois, ou uma combinação de outros valores definidos na enumeração.

CA2218: Substituir GetHashCode na substituição Equals

GetHashCode retorna um valor, com base na instância atual, que é adequada para os algoritmos de hash e estruturas de dados como, por exemplo, uma tabela de hash. Dois objetos que são do mesmo tipo e são iguais devem retornar o mesmo código de hash.

CA2219: Não aumente exceções em cláusulas de exceção

Quando uma exceção em um finalmente ou cláusula de falhas, new exception oculta a exceção de ativa. Quando uma exceção é gerada em uma cláusula de filtro, o tempo de execução silenciosamente captura a exceção. Isso torna difícil detectar e depurar o erro original.

CA2225: Sobrecargas de operador nomeou alternativas

Uma sobrecarga de operador foi detectada e o método alternativo nomeado esperado não foi encontrado. O membro nomeado de alternativo fornece acesso para a mesma funcionalidade que o operador e é fornecido para os desenvolvedores que programam em idiomas que não oferecem suporte a operadores sobrecarregados.

CA2228: Não são fornecidos para realizar recurso formatos

Os arquivos de recursos que foram criados usando versões de pré-lançamento do.NET Framework pode não ser utilizável por versões compatíveis com o.NET Framework.

CA2230: Use params para argumentos de variáveis

Um tipo de público ou protegido contém um método público ou protegido que usa a convenção de chamada VarArgs em vez da palavra-chave params.

CA2233: As operações não devem estouro.

Operações aritméticas não devem ser executadas sem primeiro validar os operandos, para certificar-se de que o resultado da operação não está fora do intervalo de valores possíveis para os tipos de dados envolvidos.

CA2234: Passar objetos de System. URI em vez de seqüências de caracteres

É feita uma chamada para um método que possui um parâmetro de seqüência de caracteres cujo nome contém "uri", "uri", "urn", "URN", "url" ou "URL". O tipo declarativo do método contém uma sobrecarga de método correspondente que possui um parâmetro System. URI.

CA2243: Literais de seqüência de caracteres de atributo devem analisar corretamente

Parâmetro de literal de seqüência de caracteres do atributo não analisa corretamente para uma URL, um GUID ou uma versão.