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 |
---|---|
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. |
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. |
COM não oferece suporte a métodos estáticos. |
|
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. |
|
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. |
|
Um método marcado com o atributo de System.Runtime.InteropServices.ComRegisterFunctionAttribute ou o atributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute é visível externamente. |
|
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. |
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. |
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. |
Um membro chama um método de potencialmente perigoso ou problemático. |
|
Um segmento gerenciado está sendo tratado como um thread do Win32. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |