Conjunto de regras de correção estendido para código gerenciado
O conjunto estendido a Microsoft na regra das regras de correção maximiza os erros de uso da lógica e da estrutura que são relatados pela análise de código.Dar ênfase adicional é colocada em cenários específicos como aplicativos de interoperabilidade desconectados e do COM.Você deve considerar incluir esta regra definida se um desses cenários se aplica ao seu projeto ou encontrar problemas adicionais no projeto.
O conjunto estendido a Microsoft na regra das regras de correção inclui as regras que estão no conjunto básico da regra das regras de correção da Microsoft.As regras básicas de exatidão incluem regras que estão no conjunto mínimo recomendado da regra das regras da Microsoft.Para obter mais informações Conjunto de regras de correção básico para código gerenciado e Conjunto de regras recomendadas gerenciado para código gerenciado
A tabela a seguir descreve todas as regras em conjunto estendido a Microsoft na regra das regras de correção.
Regra |
Descrição |
---|---|
Tipos que possui campos descartáveis deve ser descartável |
|
Declare manipuladores de eventos corretamente |
|
Marcar os assemblies com AssemblyVersionAttribute |
|
Os métodos da interface devem estar acessíveis por tipos de filho |
|
Tipos que possui recursos nativos deve ser descartável |
|
Mover P/Invokes à classe de NativeMethods |
|
Não ocultar métodos da classe base |
|
Implemente corretamente IDisposable |
|
Não digite as exceções em locais inesperados |
|
Evite aceleradores duplicados |
|
Os pontos de entrada de P/Invoke devem existir |
|
P/Invokes não deve ser visível |
|
Os tipos de layout automático não deve ser visível COM |
|
Chame GetLastError imediatamente depois de P/Invoke |
|
Os tipos de base visíveis de tipo COM o devem ser visível COM |
|
Os métodos de registro COM o devem ser correspondidos |
|
Declare P/Invokes corretamente |
|
Remova os finalizers vazias |
|
Os campos do tipo de valor devem ser portáteis |
|
As declarações de P/Invoke devem ser portáteis |
|
Não bloqueie em objetos de identidade fraco |
|
Revise consultas SQL para vulnerabilidades de segurança |
|
Especifique que o marshaling para argumentos de cadeia de caracteres de P/Invoke |
|
Segurança declarativa revisão em tipos de valor |
|
Os ponteiros não devem ser visíveis |
|
Os tipos não seguros deve expor campos |
|
A segurança do método deve ser um superconjunto do tipo |
|
Os métodos de APTCA só devem chamar métodos de APTCA |
|
Os tipos de APTCA só devem estender tipos de base de APTCA |
|
Não expõe métodos indiretamente com as demandas de link |
|
As demandas do link de substituição devem ser idênticas com base |
|
Cláusulas vulneráveis de quebra automática finalmente tente externa |
|
As demandas do link do tipo exigem demandas de herança |
|
Os tipos críticos de segurança não podem participar da equivalência do tipo |
|
Os construtores padrão devem ser pelo menos críticos quanto construtores padrão do tipo de base |
|
O delega devem associar a transparência consistente com métodos |
|
Os métodos devem manter a transparência consistente ao substituir métodos de base |
|
Os métodos transparentes devem conter apenas o IL verificável |
|
Os métodos transparentes não devem chamar métodos com o atributo de SuppressUnmanagedCodeSecurity |
|
O código transparente não deve referenciar itens críticos de segurança |
|
Os métodos transparentes não devem satisfazer LinkDemands |
|
Os tipos devem ser pelo menos críticos quanto os tipos de base e interfaces |
|
Os métodos transparentes não podem usar segurança afirmam |
|
Os métodos transparentes não devem chamar em código nativo |
|
Lançar novamente para preservar detalhes da pilha |
|
Não remove objetos várias vezes |
|
Inicializar os campos estáticos de tipo de valor de tabela embutida |
|
Não marque componentes atendidos com WebMethod |
|
Os campos descartáveis devem ser removidos |
|
Não chame métodos overridable nos construtores |
|
Os tipos descartáveis devem declarar o finalizador |
|
Finalizers deve chamar o finalizador da classe base |
|
Construtores de serialização de ferramentas |
|
Operador de igual de sobrecarga em substituir ValueType.Equals |
|
Pontos de entrada do Windows Forms de marca a STAThread |
|
Marcar todos os campos não serializáveis |
|
Chamar métodos da classe base em tipos de ISerializable |
|
Marcar tipos de ISerializable com SerializableAttribute |
|
Implementar os métodos de serialização corretamente |
|
Implementar ISerializable corretamente |
|
Forneça argumentos corretos para formatação métodos |
|
Teste para NaN corretamente |
|
Os enum devem ter o valor zero |
|
Carga do operador que equivale ao sobrecarregamento adicionam e subtraia-o |
|
Não transmita literais como parâmetros localizados |
|
Normalização cadeias de caracteres para letras maiúsculas |
|
Não ignore resultados do método |
|
Chame GC.SuppressFinalize corretamente |
|
As propriedades não devem retornar matrizes |
|
Teste para cadeias de caracteres vazias usando o comprimento da cadeia de caracteres |
|
Use apenas a API da estrutura de destino |
|
Remover chamadas a GC.KeepAlive |
|
Use SafeHandle para encapsular recursos nativos |
|
Exceções non-CLSCompliant de captura em manipuladores gerais |
|
Não declarar tipos mutáveis somente leitura de referência |
|
Os campos de matriz não devem ser somente leitura |
|
Afirma Seguro |
|
Chame GC.KeepAlive ao usar recursos nativos |
|
Métodos do selo que satisfazem interfaces privadas |
|
Construtores de serialização seguros |
|
Os construtores estáticos devem ser privados |
|
As constantes críticos de segurança devem ser transparentes |
|
Use equivalentes gerenciados da API do Win32 |
|
Disponha métodos deve chamar a classe base descartado |
|
Finalizers deve ser protegido |
|
Não diminuir a visibilidade herdada do membro |
|
Os membros precisarem ser diferentes por mais do que o tipo de retorno |
|
Iguais de substituição em sobrecarregar iguais do operador |
|
Os operadores devem ter sobrecargas simétricas |
|
As propriedades da coleção devem ser somente leitura |
|
Fornecer métodos de desserialização para campos opcionais |
|
Implementar construtores padrão de exceção |
|
Os parâmetros de URI não devem ser cadeias de caracteres |
|
Os valores de retorno de URI não devem ser cadeias de caracteres |
|
As propriedades do URI não devem ser cadeias de caracteres |
|
As sobrecargas do URI de cadeia de caracteres chamam sobrecargas de System.Uri |
|
Evite sobrecargas visíveis em interfaces COM |
|
Evite os argumentos Int64 para clientes do Visual Basic 6 |
|
Evite membros estáticos em tipos visíveis COM |
|
Não use AutoDual ClassInterfaceType |
|
Os tipos de visíveis COM o devem ser creatable |
|
Os métodos de registro COM não devem ser visíveis |
|
Interfaces de ComSource da marca como IDispatch |
|
Evite campos de não utilitário em tipos de valores visíveis COM |
|
Marcar argumentos boolianos de P/Invoke com MarshalAs |
|
Não use a prioridade de ociosidade de processo |
|
Não use os timers que impeçam alterações de estado do poder |
|
Marcar os assemblies com NeutralResourcesLanguageAttribute |
|
Evite chamar métodos problemáticos |
|
Não tratar fibras como threads |
|
Os assemblies de nível 2 não devem conter LinkDemands |
|
Os membros não devem ter conflitantes anotações de transparência |
|
Os métodos transparentes não podem usar o atributo de HandleProcessCorruptingExceptions |
|
O código transparente não deve ser protegido com LinkDemands |
|
Os métodos transparentes não devem usar as demandas de segurança |
|
O código transparente não deve carregar os assemblies das matrizes de bytes |
|
Os métodos transparentes não devem ser decorados com o SuppressUnmanagedCodeSecurityAttribute |
|
Literais devem ser correta |
|
Os campos de não constante não devem ser visíveis |
|
Não marque enum com FlagsAttribute |
|
Substituir GetHashCode em substituir iguais |
|
Não digite as exceções em cláusulas de exceção |
|
As sobrecargas do operador denominado substituições |
|
Não enviar formatos não-editados de recursos |
|
Param use para argumentos variáveis |
|
As operações não devem transbordar |
|
Objetos de passagem System.Uri em vez de cadeias de caracteres |
|
Literais de atributo devem analisar corretamente |