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 DynamicInterfaceCastableImplementationAttribute atribuí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. |
Colabore connosco no GitHub
A origem deste conteúdo pode ser encontrada no GitHub, onde também pode criar e rever problemas e pedidos Pull. Para mais informações, consulte o nosso guia do contribuidor.