Regra básica de correção de regras definidas para código gerenciado
O conjunto de regras de regras básicas de correção enfoca os erros lógicos e erros comuns do uso de APIs de framework.As regras básicas de correção incluem as regras no conjunto de regras do mínimo recomendado regras.Para obter mais informações, consulte Gerenciado regras recomendado conjunto de regras para código gerenciado você deve incluir essa regra definida para expandir a lista de avisos que o mínimo recomendado de relatório de regras.
A tabela a seguir descreve todas as regras no conjunto de regras de regras de correção básicas 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 |