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 o HRESULT que nunca é usado. |
|
Um método que é uma implementação do Dispose não chama GC.SuppressFinalize; ou um método que não é uma implementação do Dispose chama GC.SuppressFinalize; ou um método chama GC.SuppressFinalize e passagens algo diferente desse (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 que lançou a exceção original 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 de um 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 existe um método com a funcionalidade equivalente a.Biblioteca de classes. |
|
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 remova o construtor estático. |
É 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 de programação avançadas 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 para o fluxo de transações e contexto, o comportamento do método estarão incorreto em alguns cenários. |
|
Um tipo que implementa IDisposable declara os campos que são de tipos que 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 se o construtor para a instância que invoca o método não foi executado. |
|
CA2215: O métodos Dispose devem chamar dispose de classe base |
Se um tipo é herdada de um tipo descartável, ele deve chamar o método Dispose do tipo base de seu próprio método Dispose. |
Um tipo que implementa IDisposable e possui campos que sugerem o uso de recursos não gerenciados, não implementa um finalizador conforme descrito pela 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 é gerada em um finalmente ou cláusula de falhas, a nova exceção 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 alternativo nomeado 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 é igual a sobre a anulação de ValueType.Equals |
Um tipo de valor substitui Object. Equals, mas não implementa o operador de igualdade. |
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 ele 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: Objetos System. URI de passagem 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 está declarado em um tipo que pode ser serializado. |
|
CA2236: Chamar os métodos de 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: Os tipos ISerializable da 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 um evento de serialização não tem a assinatura correta, retornar o tipo ou a visibilidade. |
|
CA2239: Fornecer métodos para os campos opcionais de desserialização |
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 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 atributo devem analisar corretamente |
Parâmetro literal de seqüência de caracteres de um atributo não analisa corretamente para uma URL, um GUID ou uma versão. |