Regra de regras de correção ampliada definido para código gerenciado
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 é colocada 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 encontrar 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 Regra básica de correção de regras definidas para código gerenciado eGerenciado regras recomendado conjunto de regras para código gerenciado
A tabela a seguir descreve todas as regras no conjunto de regras de regras de correção estendido da Microsoft.
Regra |
Descriçã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 |
|
Enums devem ter o valor zero |
|
É igual a operador de sobrecarga em sobrecarga, adicionar e subtrair |
|
Não passe os literais como parâmetros localizados |
|
Normalizar seqüências de caracteres em maiúsculas |
|
Não ignore os resultados do método |
|
Chama GC.SuppressFinalize corretamente |
|
Propriedades não devem retornar arrays |
|
Testar usando o comprimento da seqüência de cadeias de caracteres vazias |
|
Usar somente a API do framework de destino |
|
Remova chamadas para GC.Manutenção de atividade |
|
Usar o SafeHandle para encapsular os recursos nativos |
|
Capturar exceções de não-CLSCompliant nos manipuladores gerais |
|
Não declarar tipos de referência mutáveis somente leitura |
|
Campos de matriz não devem ser lidos apenas |
|
Declarações de seguro |
|
Chama GC.Ao usar os recursos nativos de KeepAlive |
|
Métodos de selo que satisfaçam às interfaces privadas |
|
Construtores de serialização seguro |
|
Construtores estáticos devem ser particulares |
|
Constantes críticas de segurança devem ser transparentes |
|
Use o gerenciado equivalentes da API do Win32 |
|
Métodos Dispose devem chamar dispose de classe base |
|
Os finalizadores devem ser protegidos. |
|
Não diminuir a visibilidade de membro herdado |
|
Os membros devem diferir por tipo de retorno de mais de |
|
É igual a substituição na sobrecarga de operador equals |
|
Os operadores devem ter sobrecargas simétricas |
|
Propriedades da coleção devem ser somente leitura |
|
Fornecer métodos de desserialização nos campos opcionais |
|
Implementar os construtores de exceção padrão |
|
Parâmetros da URI não devem ser seqüências de caracteres |
|
URI retornar valores não devem ser seqüências de caracteres |
|
Propriedades URI não devem ser seqüências de caracteres |
|
Sobrecargas URI de seqüência de caracteres chamada System. URI sobrecargas |
|
Evitar sobrecargas em interfaces de COM visíveis |
|
Evite Int64 argumentos para os clientes de 6 Visual Basic |
|
Evite membros estáticos em tipos de visíveis COM |
|
Não use AutoDual ClassInterfaceType |
|
Tipos de visíveis com devem ser criados |
|
Métodos de registro COM não deverá ser visíveis |
|
Marcar ComSource Interfaces como IDispatch |
|
Evite campos não públicos em tipos de valor visível COM |
|
Marcar os argumentos de P/Invoke booleanos com MarshalAs |
|
Não use a prioridade do processo ocioso |
|
Não usam cronômetros de impedem alterações de estado de energia |
|
Assemblies de marca com o NeutralResourcesLanguageAttribute |
|
Evite chamar métodos problemáticos |
|
Não trata fibras threads |
|
Assemblies de nível 2 não devem conter a LinkDemands |
|
Os membros não devem ter anotações conflitantes de transparência |
|
Métodos transparentes não podem usar o atributo HandleProcessCorruptingExceptions |
|
Código Transparent não deve ser protegido por LinkDemands |
|
Métodos transparentes não devem usar demandas de segurança |
|
Código Transparent não deve carregar assemblies de matrizes de bytes |
|
Métodos transparentes não devem ser decorados com o SuppressUnmanagedCodeSecurityAttribute. |
|
Literais devem ser escritos corretamente |
|
Campos não constante não deverá ser visíveis |
|
Não marque enums com FlagsAttribute |
|
Substituir GetHashCode no substituindo Equals |
|
Não aumente exceções em cláusulas de exceção |
|
Operador sobrecargas nomeou alternativas |
|
Não são fornecidos para realizar recurso formatos |
|
Use params para argumentos de variáveis |
|
As operações não devem estouro |
|
Passar objetos System. URI em vez de seqüências de caracteres |
|
Literais de seqüência de atributo devem analisar corretamente |