Partilhar via


Regras de utilização

As regras de uso suportam o uso adequado do .NET.

Nesta secção

Regra Description
CA1801: Rever parâmetros não utilizados Uma assinatura de método inclui um parâmetro que não é usado no corpo do método.
CA1816: Ligue para GC. SuppressFinalize corretamente Um método que é uma implementação de Dispose não chama GC.SuppressFinalize; ou um método que não é uma implementação de Dispose chamadas GC.SuppressFinalize; ou um método chama GC.SuppressFinalize e passa algo diferente de this (Me no Visual Basic).
CA2200: Relançar para preservar os detalhes da pilha Uma exceção é relançada e a exceção é explicitamente especificada na instrução throw. Se uma exceção for relançada especificando a exceção na instrução throw, a lista de chamadas de método entre o método original que lançou a exceção e o método atual será perdida.
CA2201: Não gerar tipos de exceção reservados Isso torna o erro original difícil de detetar e depurar.
CA2207: Inicializar campos estáticos de tipo de valor embutidos Um tipo de valor declara um construtor estático explícito. Para corrigir uma violação dessa regra, inicialize todos os dados estáticos quando eles forem declarados e remova o construtor estático.
CA2208: Instanciar exceções de argumento corretamente Uma chamada é feita para o construtor padrão (sem parâmetros) de um tipo de exceção que é ou deriva de ArgumentException, ou um argumento de cadeia de caracteres incorreto é passado para um construtor parametrizado de um tipo de exceção que é ou deriva de ArgumentException.
CA2211: Campos não constantes não devem ser visíveis Os campos estáticos que não são constantes ou somente leitura não são thread-safe. O 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.
CA2213: Os campos descartáveis devem ser eliminados Um tipo que implementa System.IDisposable declara campos que são de tipos que também implementam IDisposable. O Dispose método do campo não é chamado pelo Dispose método do tipo declarante.
CA2214: Não chamar métodos substituíveis em construtores Quando um construtor chama um método virtual, é possível que o construtor para a instância que invoca o método não tenha sido executado.
CA2215: Os métodos de descarte devem chamar a classe base dispose Se um tipo herda de um tipo descartável, ele deve chamar o Dispose método do tipo base de seu próprio Dispose método.
CA2216: Tipos descartáveis devem declarar finalizador Um tipo que implementa e tem campos que sugerem o uso de recursos não gerenciados System.IDisposable, não implementa um finalizador conforme descrito por Object.Finalize.
CA2217: Não marcar 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 dos outros valores definidos na enumeração.
CA2218: Substituir GetHashCode ao substituir Equals Um tipo público substitui, System.Object.Equals mas não substitui System.Object.GetHashCode.
CA2219: Não levante exceções em cláusulas de exceção Quando uma exceção é gerada em uma cláusula final ou de falha, a nova exceção oculta a exceção ativa. Quando uma exceção é gerada em uma cláusula de filtro, o tempo de execução captura silenciosamente a exceção. Isso torna o erro original difícil de detetar e depurar.
CA2224: Substituição é igual a sobrecarga do operador Um tipo público implementa o operador de igualdade, mas não substitui System.Object.Equals.
CA2225: As sobrecargas do operador nomearam suplentes Uma sobrecarga do operador foi detetada e o método alternativo nomeado esperado não foi encontrado. O membro alternativo nomeado fornece acesso à mesma funcionalidade que o operador e é fornecido para desenvolvedores que programam em idiomas que não suportam operadores sobrecarregados.
CA2226: Os operadores devem ter sobrecargas simétricas Um tipo implementa o operador de igualdade ou desigualdade e não implementa o operador oposto.
CA2227: As propriedades da coleção devem ser somente leitura Uma propriedade de coleção gravável permite que um usuário substitua a coleção por uma coleção diferente. Uma propriedade somente leitura impede que a coleção seja substituída, mas ainda permite que os membros individuais sejam definidos.
CA2229: Implementar construtores de serialização Para corrigir uma violação dessa regra, implemente o construtor de serialização. Para uma classe selada, torne o construtor privado; caso contrário, torne-o protegido.
CA2231: Operador de sobrecarga é igual ao substituir ValueType.Equals Um tipo de valor substitui, Object.Equals mas não implementa o operador de igualdade.
CA2234: Passar objetos System.Uri em vez de cadeias de caracteres Uma chamada é feita para um método que tem um parâmetro string cujo nome contém "uri", "URI", "urn", "URN", "url" ou "URL". O tipo de declaração do método contém uma sobrecarga de método correspondente que tem um System.Uri parâmetro.
CA2235: Marcar todos os campos não serializáveis Um campo de instância de um tipo que não é serializável é declarado em um tipo que é serializável.
CA2237: Marcar tipos ISerializable com SerializableAttribute Para serem reconhecidos pelo common language runtime como serializáveis, os tipos devem ser marcados com o atributo SerializableAttribute, mesmo que o tipo use uma rotina de serialização personalizada por meio da implementação da ISerializable interface.
CA2241: Fornecer argumentos corretos para métodos de formatação O argumento format passado para String.Format não contém um item de formato que corresponda a cada argumento de objeto, ou vice-versa.
CA2242: Teste para NaN corretamente Esta expressão testa um valor contra Single.Nan ou Double.Nan. Use Single.IsNan(Single) ou Double.IsNan(Double) para testar o valor.
CA2243: Literais de cadeia de caracteres de atributo devem analisar corretamente O parâmetro literal de cadeia de caracteres de um atributo não analisa corretamente para uma URL, um GUID ou uma versão.
CA2244: Não duplicar inicializações de elementos indexados Um inicializador de objeto tem mais de um inicializador de elemento indexado com o mesmo índice constante. Todos, exceto o último inicializador, são redundantes.
CA2245: Não atribua uma propriedade a si mesmo Um imóvel foi acidentalmente cedido a si mesmo.
CA2246: Não atribua um símbolo e seu membro na mesma instrução Não é recomendável atribuir um símbolo e seu membro, ou seja, um campo ou uma propriedade, na mesma instrução. Não está claro se o acesso do membro foi destinado a usar o valor antigo do símbolo antes da atribuição ou o novo valor da atribuição nesta declaração.
CA2247: Argumento passado para TaskCompletionSource construtor deve ser TaskCreationOptions enum em vez de TaskContinuationOptions enum TaskCompletionSource tem construtores que usam TaskCreationOptions que controlam a Task subjacente e construtores que usam o estado do objeto armazenado na tarefa. Passar acidentalmente um TaskContinuationOptions em vez de um TaskCreationOptions resultará na chamada tratando as opções como estado.
CA2248: Forneça o argumento 'enum' correto para 'Enum.HasFlag' O tipo enum passado como um argumento para a chamada de HasFlag método é diferente do tipo enum chamador.
CA2249: Considere usar String.Contains em vez de String.IndexOf As chamadas para string.IndexOf onde o resultado é usado para verificar a presença ou ausência de uma substring podem ser substituídas por string.Contains.
CA2250: Utilização ThrowIfCancellationRequested ThrowIfCancellationRequested verifica automaticamente se o token foi cancelado e lança um OperationCanceledException se foi.
CA2251: Use String.Equals mais String.Compare É mais claro e provavelmente mais rápido de usar String.Equals em vez de comparar o resultado de String.Compare zero.
CA2252: Opte por visualizar recursos Opte por visualizar recursos antes de usar APIs de visualização.
CA2253: Os espaços reservados nomeados não devem ser valores numéricos Os espaços reservados nomeados no modelo de mensagem de registo não devem ser compostos apenas por carateres numéricos.
CA2254: O modelo deve ser uma expressão estática O modelo de mensagem de registro não deve variar entre chamadas.
CA2255: O ModuleInitializer atributo não deve ser usado em bibliotecas Os inicializadores de módulo destinam-se a ser usados pelo código do aplicativo para garantir que os componentes de um aplicativo sejam inicializados antes que o código do aplicativo comece a ser executado.
CA2256: Todos os membros declarados em interfaces pai devem ter uma implementação em uma interface atribuída a DynamicInterfaceCastableImplementation. Os tipos atribuídos atuam DynamicInterfaceCastableImplementationAttribute como uma implementação de interface para um tipo que implementa o IDynamicInterfaceCastable tipo. Como resultado, ele deve fornecer uma implementação de todos os membros definidos nas interfaces herdadas, porque o tipo que implementa IDynamicInterfaceCastable não irá fornecê-los de outra forma.
CA2257: Membros definidos em uma interface com 'DynamicInterfaceCastableImplementationAttribute' devem ser 'estáticos' Como um tipo que implementa pode não implementar uma interface dinâmica em metadados, as chamadas para um membro da interface de IDynamicInterfaceCastable instância que não é uma implementação explícita definida nesse tipo provavelmente falharão em tempo de execução. Marque novos membros static da interface para evitar erros em tempo de execução.
CA2258: Não há suporte para fornecer uma interface 'DynamicInterfaceCastableImplementation' no Visual Basic Fornecer uma interface funcional DynamicInterfaceCastableImplementationAttributeatribuída requer o recurso Membros da Interface Padrão, que não é suportado no Visual Basic.
CA2259: Certifique-se de ThreadStatic que só é usado com campos estáticos ThreadStaticAttribute afeta static apenas (Shared no Visual Basic) campos. Quando aplicado a campos de instância, o atributo não tem impacto no comportamento.
CA2260: Implementar interfaces matemáticas genéricas corretamente Interfaces matemáticas genéricas exigem que o próprio tipo derivado seja usado para o parâmetro de tipo auto-recorrente.
CA2261: Não utilizar ConfigureAwaitOptions.SuppressThrowing com Task<TResult> A ConfigureAwaitOptions.SuppressThrowing opção não é suportada pelo genéricoTask<TResult>, uma vez que isso pode levar à devolução de um arquivo .TResult
CA2262: Definir MaxResponseHeadersLength corretamente Verifique se o MaxResponseHeadersLength valor é fornecido corretamente. Este valor é medido em kilobytes.
CA2264: Não passe um valor não anulável para 'ArgumentNullException.ThrowIfNull' 'ArgumentNullException.ThrowIfNull' é lançado quando o argumento passado é 'null'. Certas construções, como structs não anuláveis e expressões 'nameof()' e 'new' são conhecidas por nunca serem nulas, então 'ArgumentNullException.ThrowIfNull' nunca será lançado.
CA2265: Não comparar Span<T> com null ou default Comparar um período com null ou default pode não fazer o que você pretendia. default e os literais null são implicitamente convertidos em Span<T>.Empty.
CA2263: Prefira sobrecarga genérica quando o tipo é conhecido Usar uma sobrecarga genérica é preferível a passar um System.Type argumento quando o tipo é conhecido, porque eles promovem um código mais limpo e seguro para o tipo com verificações de tempo de compilação aprimoradas.