Avisos de uso
Avisos de uso suportam o uso correto da.NET Framework.
Nesta seção
Regra |
Descrição |
---|---|
Uma assinatura do método inclui um parâmetro que não é usado no corpo do método. |
|
Um novo objeto é criado, mas nunca usado; ou um método que cria e retorna uma nova seqüência de caracteres é chamado e a nova seqüência nunca é usada; ou um método COM ou P/Invoke retorna um código de erro ou HRESULT nunca é usado. |
|
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 chama GC.SuppressFinalize; ou um método chama GC.SuppressFinalize e passagens algo diferente neste (Me em Visual Basic). |
|
Uma exceção é relançada e a exceção é explicitamente especificada na instrução throw. Se uma exceção é re-thrown, 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 é perdida. |
|
Isso torna difícil detectar e depurar o erro original. |
|
Uma implementação do método contém caminhos de código que poderiam causar várias chamadas para System.IDisposable.Dispose ou um equivalente de Dispose (como um método Close () em alguns tipos) no mesmo objeto. |
|
Uma seqüência de caracteres literal no corpo do método contém uma ou mais palavras que não são reconhecidas pela biblioteca do verificador ortográfico do Microsoft. |
|
Uma plataforma chamar método está definido e um método com a funcionalidade equivalente existe na.Biblioteca de classes do NET Framework. |
|
CA2207: Inicializar o tipo de valor campos estáticos in-line |
Um tipo de valor declara um construtor estático explícito. Para corrigir uma violação desta regra, inicializar todos os dados estáticos quando ela é declarada e remover o construtor estático. |
CA2208: Criar uma instância de exceções do argumento corretamente |
É feita uma chamada ao construtor padrão (sem parâmetros) de um tipo de exceção que é ou deriva de ArgumentException ou um argumento de seqüência de caracteres incorreto é passado para um construtor parametrizado de um tipo de exceção que é ou deriva de ArgumentException. |
Os campos estáticos que não são constantes nem são somente leitura não thread-safe. 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. |
|
Um método em um tipo que herda de System.EnterpriseServices.ServicedComponent é marcado com System.Web.Services.WebMethodAttribute. Como WebMethodAttribute e um método de ServicedComponent têm comportamento conflitante e requisitos de fluxo de contexto e a transação, o comportamento do método estarão incorreto em alguns cenários. |
|
Um tipo que implementa o System. IDisposable declara os campos que são de tipos também implementam IDisposable. O método Dispose do campo não é chamado pelo método Dispose do tipo declarativo. |
|
Quando um construtor chama um método virtual, é possível que o construtor para a instância que invoca o método não foi executado. |
|
Se um tipo herda a partir de um tipo descartável, ele deve chamar o método Dispose do tipo base do seu próprio método Dispose. |
|
Um tipo que implementa o System. IDisposable e possui campos que sugerem o uso de recursos não gerenciados, não implementar um finalizador, conforme descrito pelo Object.Finalize. |
|
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 de outros valores definidos na enumeração. |
|
GetHashCode retorna um valor, com base na instância atual, que é adequada para os algoritmos de hash e estruturas de dados como, por exemplo, uma tabela de hash. Dois objetos que são do mesmo tipo e são iguais devem retornar o mesmo código de hash. |
|
Quando uma exceção em um finalmente ou cláusula de falhas, new exception oculta a exceção de ativa. Quando uma exceção é gerada em uma cláusula de filtro, o tempo de execução silenciosamente captura a exceção. Isso torna difícil detectar e depurar o erro original. |
|
CA2220: Os finalizadores devem chamar o finalizador da classe base |
Finalização deve ser propagada por meio da hierarquia de herança. Para garantir isso, tipos devem chamar o método Finalize de classe base no seu próprio método Finalize. |
Os finalizadores devem usar o modificador de acesso da família. |
|
Você não deve alterar o modificador de acesso para membros herdados. A alteração de um membro herdado para private não impede que chamadores acessem a implementação de classe base do método. |
|
CA2223: Os membros devem diferir por tipo de retorno de mais de |
Embora o common language runtime permite o uso de tipos de retorno para diferenciar entre membros idênticos, esse recurso não está no Common Language Specification, nem é um recurso comum do.NET linguagens de programação. |
CA2224: É igual a substituição na sobrecarga de operador equals |
Um tipo público implementa o operador de igualdade, mas não substitui Object. Equals. |
Uma sobrecarga de operador foi detectada e o método alternativo nomeado esperado não foi encontrado. O membro nomeado de alternativo fornece acesso para a mesma funcionalidade que o operador e é fornecido para os desenvolvedores que programam em idiomas que não oferecem suporte a operadores sobrecarregados. |
|
Um tipo implementa a igualdade ou desigualdade e não implementa o operador oposto. |
|
Uma propriedade de coleção gravável permite que um usuário substituir a coleção com uma coleção diferente. Uma propriedade somente leitura pára a coleção seja substituída, mas ainda permite que os membros individuais sejam definidas. |
|
Os arquivos de recursos que foram criados usando versões de pré-lançamento do.NET Framework pode não ser utilizável por versões compatíveis com o.NET Framework. |
|
Para corrigir uma violação desta regra, implemente o construtor de serialização. Para uma classe selada, tornar o construtor particular; Caso contrário, tornam protegido. |
|
Um tipo de público ou protegido contém um método público ou protegido que usa a convenção de chamada VarArgs em vez da palavra-chave params. |
|
CA2231: Sobrecarga de operador equals em substituição a ValueType.Equals |
Um tipo de valor substitui Object. Equals, mas não implementa o operador de igualdade. |
CA2232: Pontos de entrada da marca Windows Forms com STAThread |
STAThreadAttribute indica que o COM o modelo para o aplicativo de threading é um single-threaded apartment. Este atributo deve estar presente no ponto de entrada de qualquer aplicativo que usa o Windows Forms; Se for omitido, os componentes do Windows podem não funcionar corretamente. |
Operações aritméticas não devem ser executadas sem primeiro validar os operandos, para certificar-se de que o resultado da operação não está fora do intervalo de valores possíveis para os tipos de dados envolvidos. |
|
CA2234: Passar objetos de System. URI em vez de seqüências de caracteres |
É feita uma chamada para um método que possui um parâmetro de seqüência de caracteres cujo nome contém "uri", "uri", "urn", "URN", "url" ou "URL". O tipo declarativo do método contém uma sobrecarga de método correspondente que possui um parâmetro System. URI. |
Um campo de instância de um tipo que não é serializável é declarado em um tipo que pode ser serializado. |
|
CA2236: Chamar métodos da classe base nos tipos de ISerializable |
Para corrigir uma violação desta regra, chama o construtor de método ou a serialização de GetObjectData do tipo base do construtor ou método correspondente do tipo derivado. |
CA2237: Tipos de ISerializable de marca com o SerializableAttribute |
Sejam reconhecidos pelo common language runtime como serializável, os tipos devem ser marcados com o atributo SerializableAttribute mesmo se o tipo usa uma rotina de serialização personalizada por meio da implementação da interface ISerializable. |
Um método que manipula o evento de serialização não tem a assinatura correta, retornar o tipo ou a visibilidade. |
|
CA2239: Fornecer métodos de desserialização de campos opcionais |
Um tipo tem um campo que está marcado com o atributo OptionalFieldAttribute e o tipo não fornece métodos de manipulação de eventos de desserialização. |
Para corrigir uma violação desta regra, faça o método GetObjectData visíveis e substituível e certifique-se de que todos os campos de instância são incluídos no processo de serialização ou explicitamente marcados com o atributo NonSerializedAttribute. |
|
CA2241: Fornecer argumentos corretos para métodos de formatação. |
O argumento de formato passado para o System.String.Format não contém um item de formato que corresponde ao argumento de cada objeto, ou vice-versa. |
Essa expressão testa um valor em relação a Single.Nan ou Double.Nan. Use Single.IsNan(Single) ou Double.IsNan(Double) para testar o valor. |
|
CA2243: Literais de seqüência de caracteres de atributo devem analisar corretamente |
Parâmetro de literal de seqüência de caracteres do atributo não analisa corretamente para uma URL, um GUID ou uma versão. |
Histórico de alterações
Date |
History |
Motivo |
---|---|---|
Agosto de 2010 |
Adicionado resumos ausentes para CA1801, CA1806, avisos de CA1816 |
Comentários do cliente. |