Compartilhar via


Avisos de análise de código para código gerenciado pelo CheckId

A tabela a seguir lista os avisos de análise de código para código gerenciado pelo identificador de CheckId do aviso de advertência.

Avisos

CheckId

Aviso

Descrição

CA1000

CA1000: Não declarar membros estáticos em tipos genéricos

Quando um membro estático de um tipo genérico é chamado, o argumento de tipo deve ser especificado para o tipo.Quando um membro de instância genérico que não oferece suporte à inferência de tipos é chamado, o argumento de tipo deve ser especificado para o membro.Nesses dois casos, a sintaxe para especificar o argumento de tipo é diferente e facilmente confundidos.

CA1001

CA1001: Os tipos que possuem campos descartáveis devem ser descartáveis

Uma classe declara e implementa um campo de instância é um tipo de IDisposable, e a classe não implementa IDisposable.Uma classe que declara um campo de IDisposable indiretamente possui um recurso não gerenciado e deve implementar a interface IDisposable.

CA1002

CA1002: Não expõem listas genéricas

System.Collections.Generic.List < (de <(T>) >) é uma coleção genérica que foi projetada para desempenho, não a herança.Portanto, a lista não contém nenhum membro virtual.Em vez disso, as coleções genéricas que sejam destinam a herança devem ser expostas.

CA1003

CA1003: Usar instâncias de manipulador de evento genérico

Um tipo contém um delegado que retorna void, cuja assinatura contém dois parâmetros (o primeiro um objeto e o segundo um tipo que pode ser atribuído a EventArgs), e o assembly contendo destina-se a Microsoft.NET Framework 2.0.

CA1004

CA1004: Métodos genéricos devem fornecer o parâmetro de tipo

Inferência de tipos é como o argumento de tipo de um método genérico é determinado pelo tipo de argumento passado para o método, em vez de pela especificação do argumento de tipo explícita.Para habilitar a inferência de tipos, a assinatura de parâmetro de um método genérico deve incluir um parâmetro que é do mesmo tipo do parâmetro de tipo para o método.Nesse caso, o argumento Tipo não precisa ser especificado.Ao usar a inferência de tipos para todos os parâmetros de tipo, a sintaxe para chamada dos métodos de instância genérico e não genérica é idêntica; Isso simplifica a usabilidade de métodos genéricos.

CA1005

CA1005: Evitar excessivos parâmetros em tipos genéricos

Quanto mais Digite parâmetros que contém um tipo genérico, mais difícil é saber e lembre-se de que cada tipo de parâmetro representa.Ele é geralmente evidente com o parâmetro de um tipo, como na lista <T> e em determinados casos que têm dois parâmetros de tipo, como no Dictionary < TKey, TValue >.No entanto, se existirem em mais de dois parâmetros de tipo, a dificuldade fica muito grande para a maioria dos usuários.

CA1006

CA1006: Não se aninham tipos genéricos em assinaturas de membros

Um argumento de tipo aninhado é um argumento de tipo que também é um tipo genérico.Para chamar um membro cuja assinatura contém um argumento de tipo aninhado, o usuário deve criar uma instância de um tipo genérico e passar esse tipo para o construtor de um segundo tipo genérico.O procedimento necessário e a sintaxe são complexas e devem ser evitadas.

CA1007

CA1007: Use genéricos onde for apropriado

Um método visível externamente contém um parâmetro de referência do tipo Object.Todos os tipos, sujeita às restrições, a serem passados para o método sem a projeção primeiro o tipo para o tipo de parâmetro de referência permite o uso de um método genérico.

CA1008

CA1008: Enums devem ter o valor zero

O valor padrão de uma enumeração não inicializada, assim como outros tipos de valor é zero.Uma enumeração de nonflags-atribuída deve definir um membro usando o valor de zero para que o valor padrão é um valor válido da enumeração.Se uma enumeração que tem o atributo FlagsAttribute aplicado define um membro com valor zero, seu nome deve ser "Nenhum" para indicar que não há valores foram definidos na enumeração.

CA1009

CA1009: Declarar os manipuladores de eventos corretamente

Métodos manipuladores de eventos utilizam dois parâmetros.A primeira é do tipo System. Object e é chamada "sender".Este é o objeto que disparou o evento.O segundo parâmetro é do tipo System. EventArgs e é denominado "e".São os dados que está associados com o evento.Métodos de manipulador de eventos não devem retornar um valor; no C# linguagem de programação, isso é indicado pelo tipo de retorno void.

CA1010

CA1010: Coleções devem implementar a interface genérica

Para ampliar a usabilidade de uma coleção, implemente uma das interfaces de coleção genérica.Em seguida, a coleção pode ser usada para preencher os tipos de coleção genérica.

CA1011

CA1011: Considere passando tipos base como parâmetros

Quando um tipo base é especificado como um parâmetro em uma declaração de método, qualquer tipo que é derivado do tipo base pode ser passado como o argumento correspondente para o método.Se a funcionalidade adicional fornecida pelo tipo derivado de parâmetro não for necessária, o uso do tipo base permite maior uso do método.

CA1012

CA1012: Tipos abstratos não devem ter construtores

Construtores de tipos abstratos podem ser chamados apenas por tipos derivados.Porque os construtores públicos criar instâncias de um tipo e não é possível criar instâncias de um tipo abstrato, um tipo abstrato que tem um construtor público incorretamente foi projetado.

CA1013

CA1013: Igual do operador de sobrecarga em sobrecarga adicionar e subtrair

Um tipo de público ou protegido implementa os operadores de adição ou subtração sem implementar o operador de igualdade.

CA1014

CA1014: Marcar assemblies com CLSCompliantAttribute

A especificação de CLS (Common Language) define as restrições de nomeação, tipos de dados e regras às quais assemblies devem obedecer se eles serão usados em linguagens de programação.Um bom design determina que todos os assemblies indicam explicitamente com CLS usando CLSCompliantAttribute .Se esse atributo não estiver presente em um assembly, o assembly não é compatível com.

CA1016

CA1016: Marcar assemblies com AssemblyVersionAttribute

O .NET Framework usa o número de versão para identificar exclusivamente um assembly e vincular a tipos em assemblies de nomeados forte.O número da versão é usado junto com a diretiva de versão e o publisher.Por padrão, os aplicativos são executados apenas com a versão do assembly com o qual elas foram criadas.

CA1017

CA1017: Marcar assemblies com ComVisibleAttribute

ComVisibleAttribute determina como clientes COM acessam a código gerenciado.Um bom design dita que os assemblies indicam explicitamente a visibilidade de COM.Visibilidade de COM pode ser definida para o conjunto completo e, então, substituída para tipos individuais e membros de tipo.Se esse atributo não estiver presente, o conteúdo do assembly é visível para os clientes COM.

CA1018

CA1018: Atributos de marca com AttributeUsageAttribute

Quando você define um atributo personalizado, marcá-lo usando AttributeUsageAttribute para indicar onde o código-fonte no atributo personalizado pode ser aplicado.O que significa e pretendido o uso de um atributo determinará seus locais válidos no código.

CA1019

CA1019: Definir acessadores para argumentos de atributo

Atributos podem definir argumentos obrigatórios que devem ser especificados quando você aplica o atributo para um destino.Eles também são conhecidos como argumentos posicionais porque eles são fornecidos para construtores de atributo como parâmetros de posição.Para cada argumento obrigatório, o atributo também deve fornecer uma propriedade somente leitura correspondente para que o valor do argumento pode ser recuperado em tempo de execução.Atributos também podem definir argumentos opcionais, que também são conhecidos como argumentos nomeados.Esses argumentos são fornecidos para construtores de atributo por nome e devem ter uma propriedade de leitura/gravação correspondente.

CA1020

CA1020: Evitar espaços para nome com alguns tipos

Certifique-se de que cada um dos seus espaços para nomes tem uma organização lógica e tipos de existência de um motivo válido para colocar em um namespace de modo disperso preenchido.

CA1021

CA1021: Evitar os parâmetros de saída

Passar tipos por referência (usando out ou ref) requer experiência com ponteiros, entender a diferença entre tipos de valor e tipos de referência e tratamento métodos com vários valores de retorno.Além disso, a diferença entre o check-out e parâmetros ref não é amplamente sabido.

CA1023

CA1023: Os indexadores não devem ser multidimensionais

Os indexadores (isto é, propriedades indexadas) devem usar um único índice.Os indexadores multidimensionais podem reduzir significativamente a usabilidade da biblioteca.

CA1024

CA1024: Usar propriedades onde for apropriado

Um método público ou protegido tem um nome que começa com "Get", sem parâmetros e retorna um valor que não seja uma matriz.O método pode ser uma boa candidata a se tornar uma propriedade.

CA1025

CA1025: Substituir argumentos repetitivos com matriz params

Use uma matriz de parâmetros em vez de argumentos repetidos quando o número exato de argumentos é desconhecido e quando os argumentos de variáveis são os mesmos digite, ou podem ser passados como o mesmo tipo.

CA1026

CA1026: Não devem ser usados parâmetros padrão

Métodos que usam parâmetros padrão são permitidos em CLS; No entanto, o CLS permite compiladores ignoram os valores atribuídos a esses parâmetros.Para manter o comportamento que você deseja através de linguagens de programação, os métodos que usam parâmetros padrão devem ser substituídos por sobrecargas do método que fornecem os parâmetros padrão.

CA1027

CA1027: Marcar enums com FlagsAttribute

Uma enumeração é um tipo de valor que define um conjunto de constantes nomeadas relacionados.Aplica FlagsAttribute em uma enumeração quando suas constantes nomeadas podem ser combinados de forma significativa.

CA1028

CA1028: O armazenamento de Enum deve ser Int32

Uma enumeração é um tipo de valor que define um conjunto de constantes nomeadas relacionados.Por padrão, o tipo de dados de Int32 é usado para armazenar o valor da constante.Embora você possa alterar esse tipo subjacente, não é necessária ou recomendada para a maioria dos cenários.

CA1030

CA1030: Usar eventos onde for apropriado

Essa regra detecta os métodos que possuem nomes que normalmente seriam usados para eventos.Se um método for chamado em resposta a uma alteração de estado claramente definido, o método deve ser chamado por um manipulador de eventos.Objetos que chame o método devem disparar eventos em vez de chamar o método diretamente.

CA1031

CA1031: Não capturar os tipos de exceção geral

Exceções gerais não devem ser pego.Capturar uma exceção mais específica, ou relançar a exceção geral como a última declaração no bloco catch.

CA1032

CA1032: Implementar construtores de exceção padrão

Falha ao fornecer o conjunto completo de construtores pode tornar difícil tratar corretamente exceções.

CA1033

CA1033: Métodos de Interface devem ser podem ser chamados pelos tipos de filho

Um tipo visível externamente sem lacre fornece uma implementação de método explícito de uma interface pública e não fornece um método alternativo de visível externamente que tem o mesmo nome.

CA1034

CA1034: Tipos aninhados não deverá ser visíveis

Um tipo aninhado é um tipo que é declarado no escopo de outro tipo.Tipos aninhados são úteis para encapsular os detalhes de implementação particular do tipo de recipiente.Usado para essa finalidade, tipos aninhados não devem ser visíveis externamente.

CA1035

CA1035: ICollection implementações com rigidez de tipos membros

Esta regra exige implementações de ICollection para fornecer membros fortemente tipados para que os usuários não precisam converter argumentos para o tipo de objeto quando usarem a funcionalidade fornecida pela interface.Esta regra pressupõe que o tipo que implementa ICollection faz isso para gerenciar uma coleção de instâncias de um tipo que é mais forte que o objeto.

CA1036

CA1036: Substituir métodos em tipos comparáveis

Um tipo de público ou protegido implementa a interface IComparable.Ele não substitui Object. Equals nem ele oferece sobrecarregar o operador de idioma específico de igualdade, desigualdade, menor ou maior.

CA1038

CA1038: Enumeradores devem ser fortemente tipados

Esta regra exige implementações de IEnumerator também fornecer uma versão com rigidez de tipos da propriedade atual para que os usuários não precisam converter o valor de retorno para o tipo de alta segurança quando usarem a funcionalidade fornecida pela interface.

CA1039

CA1039: Listas são fortemente tipadas

Esta regra exige implementações de IList para fornecer membros fortemente tipados para que os usuários não precisam converter argumentos para o tipo Object quando usarem a funcionalidade fornecida pela interface.

CA1040

CA1040: Evite interfaces vazios

Interfaces definir membros que fornecem um contrato de comportamento ou uso.A funcionalidade descrita pela interface pode ser adotada por qualquer tipo, independentemente de onde o tipo aparece na hierarquia de herança.Um tipo implementa uma interface, fornecendo implementações para os membros da interface.Uma interface vazia não define todos os membros; Portanto, ele não define um contrato que pode ser implementado.

CA1041

CA1041: Fornecer ObsoleteAttribute mensagem

Um tipo ou membro é marcado por usando um atributo ObsoleteAttribute que não tenha sua propriedade ObsoleteAttribute.Message especificada.Quando um tipo ou membro marcado usando ObsoleteAttribute é compilado, a propriedade do atributo de mensagem é exibida.Isso permite que as informações do usuário sobre o tipo obsoleto ou membro.

CA1043

CA1043: Usar o argumento integral ou seqüência de caracteres para os indexadores

Os indexadores (isto é, propriedades indexadas) devem usar tipos integrais ou de seqüência de caracteres para o índice.Esses tipos são normalmente usados para estruturas de dados de indexação e elas aumentam a usabilidade da biblioteca.O uso do tipo de objeto deve ser restrito a esses casos onde o tipo específico da integrais ou de seqüência de caracteres não pode ser especificado em tempo de design.

CA1044

CA1044: Propriedades não devem ser somente gravação

Embora seja aceitável e muitas vezes necessário ter uma propriedade somente leitura, as diretrizes de design proíbem o uso de propriedades somente para gravação.Isso ocorre porque permitindo que um usuário definir um valor e, em seguida, impedindo que o usuário exibir esse valor, não fornece nenhuma segurança.Além disso, sem acesso de leitura, o estado de objetos compartilhados não pode ser exibido, que limita sua utilidade.

CA1045

CA1045: Não passe os tipos por referência

Passar tipos por referência (usando out ou ref) requer experiência com ponteiros, entender a diferença entre tipos de valor e tipos de referência e tratamento métodos que possuem vários valores de retorno.Os arquitetos de biblioteca que projetar para o público em geral não devem esperar que os usuários trabalhando mestre com check-out ou parâmetros ref.

CA1046

CA1046: Não sobrecarregar o operador equals em tipos de referência

A implementação padrão do operador de igualdade para tipos de referência, quase sempre está correta.Por padrão, a duas referências são iguais, apenas se eles apontam para o mesmo objeto.

CA1047

CA1047: Não declarar membros protegidos em tipos lacrados

Tipos de declarar membros protegidos para que tipos de herança pode acessar ou substituir o membro.Por definição, selados tipos não podem ser herdados, que significa que não não possível chamar métodos protegidos em tipos lacrados.

CA1048

CA1048: Não declarar membros virtuais em tipos lacrados

Tipos de declarar métodos como virtual para que tipos de herança pode substituir a implementação do método virtual.Por definição, um tipo selado não pode ser herdado.Isso torna um método virtual do tipo sealed sem sentido.

CA1049

CA1049: Os tipos que possuem recursos nativos devem ser descartáveis

Tipos que alocam recursos não gerenciados devem implementar IDisposable para permitir que chamadores para liberar esses recursos sob demanda e para reduzir os tempos de vida dos objetos que contenham os recursos.

CA1050

CA1050: Declarar tipos em namespaces

Tipos são declarados em espaços para nome para evitar conflitos de nome e como uma forma de organizar os tipos relacionados em uma hierarquia de objetos.

CA1051

CA1051: Não declarar os campos de instância visível

O principal uso de um campo deve ser como um detalhe de implementação.Os campos devem ser privadas ou internas e devem ser expostos por meio de propriedades.

CA1052

CA1052: Tipos de portador estático deverá ser lacrados

Um tipo de público ou protegido contém apenas membros estáticos e não declarado usando o modificador (C# Reference) (NotInheritable) lacrado.Um tipo que não pretende ser herdadas deve ser marcado usando o modificador sealed para impedir seu uso como um tipo base.

CA1053

CA1053: Tipos de portador estático não devem ter construtores

Um tipo de público público ou aninhado declara apenas membros estáticos e possui um construtor padrão público ou protegido.O construtor é desnecessário porque chamar membros estáticos não requer uma instância do tipo.A sobrecarga de seqüência de caracteres deve chamar a sobrecarga URI (identificador) de recursos uniforme, usando o argumento de seqüência de caracteres para segurança e segurança.

CA1054

CA1054: Parâmetros da URI não devem ser seqüências de caracteres

Se um método leva uma representação de seqüência de caracteres de um URI, uma sobrecarga correspondente deve ser fornecido que obtém uma instância da classe URI, que fornece esses serviços de maneira segura e protegida.

CA1055

CA1055: O URI retornar valores não devem ser seqüências de caracteres

Esta regra pressupõe que o método retorna um URI.Uma representação de seqüência de caracteres de um URI está sujeita a análise e erros de codificação e pode levar a vulnerabilidades de segurança.A classe de System. URI fornece esses serviços de maneira segura e protegida.

CA1056

CA1056: Propriedades URI não devem ser seqüências de caracteres

Esta regra pressupõe que a propriedade representa um identificador de recursos uniforme (URI).Uma representação de seqüência de caracteres de um URI está sujeita a análise e erros de codificação e pode levar a vulnerabilidades de segurança.A classe de System. URI fornece esses serviços de maneira segura e protegida.

CA1057

CA1057: String URI sobrecargas chamar System. URI sobrecargas

Um tipo declara sobrecargas do método que diferem somente de substituição de um parâmetro de seqüência de caracteres com um parâmetro System. URI.A sobrecarga que aceita o parâmetro de seqüência de caracteres não chama a sobrecarga que aceita o parâmetro URI.

CA1058

CA1058: Tipos não devem estender certos tipos base

Um tipo visível externamente estende a determinados tipos de base.Use uma das alternativas.

CA1059

CA1059: Os membros não devem expor certos tipos de concretos

Um tipo concreto é um tipo que tem uma implementação completa e, portanto, pode ser instanciado.Para habilitar o uso difundido do membro, substitua o tipo concreto, usando a interface sugerida.

CA1060

CA1060: Mover P/Invokes à classe NativeMethods

Métodos de invocação de plataforma, tais como aquelas que são marcados por usando o atributo. DllImportAttribute ou métodos que são definidos usando a palavra-chave de declarar em Visual Basic, acessar código não gerenciado.Esses métodos devem ser da classe NativeMethods, SafeNativeMethods ou UnsafeNativeMethods.

CA1061

CA1061: Não ocultar métodos da classe base

Um método em um tipo base está oculta por um método com nomes idênticos em um tipo derivado, quando a assinatura de parâmetro do método derivado difere somente pelos tipos que são mais rigidez derivado do que os tipos correspondentes na assinatura do parâmetro do método base.

CA1062

CA1062: Validar os argumentos de métodos públicos

Todos os argumentos de referência que são passados para métodos visíveis externamente devem ser verificados em relação a null.

CA1063

CA1063: IDisposable de implementar corretamente

Todos os tipos de IDisposable devem implementar corretamente o padrão Dispose.

CA1064

CA1064: Exceções devem ser públicas

Uma exceção interna é visível somente dentro de seu próprio escopo interno.Depois que a exceção cair fora do escopo interno, a base de exceção pode ser usado para capturar a exceção.Se a exceção interna é herdada do T:System.Exception, T:System.SystemException ou T:System.ApplicationException, o código externo não terá informações suficientes para saber o que fazer com a exceção.

CA1065

CA1065: Não geram exceções em locais inesperados

Um método que não se espera lançar exceções lança uma exceção.

CA1300

CA1300: Especificar MessageBoxOptions

Para exibir corretamente uma caixa de mensagem para culturas que usam uma ordem de leitura da direita para a esquerda, os membros da enumeração MessageBoxOptions RightAlign e RtlReading devem ser passados para o método Show.

CA1301

CA1301: Evitar aceleradores duplicados

Uma tecla de acesso, também conhecido como um acelerador, permite o acesso do teclado para um controle usando a tecla ALT.Quando vários controles têm teclas de acesso duplicados, o comportamento da tecla de acesso não é bem definido.

CA1302

CA1302: Fazer não codificar seqüências específicas de localidade

A enumeração System.Environment.SpecialFolder contém membros que se referem a pastas especiais do sistema.Os locais dessas pastas podem ter valores diferentes em diferentes sistemas operacionais; o usuário pode alterar alguns dos locais; e os locais são localizados.O método Environment.GetFolderPath retorna os locais que estão associados com a enumeração Environment. SpecialFolder, localizada e apropriada para o computador em execução no momento.

CA1303

CA1303: Não passam literais como parâmetros localizados

Um método visível externamente passa uma seqüência de caracteres literal como um parâmetro para um construtor ou um método na .NET Framework biblioteca de classe e que a seqüência de caracteres deve ser localizável.

CA1304

CA1304: Especifique CultureInfo

Um método ou construtor chama um membro que possui uma sobrecarga que aceita um parâmetro System.Globalization.CultureInfo e o método ou construtor não chama a sobrecarga que aceita o parâmetro CultureInfo.Quando um objeto CultureInfo ou System.IFormatProvider não for fornecido, o valor padrão que é fornecido pelo membro sobrecarregado talvez não tenha o efeito desejado em todas as localidades.

CA1305

CA1305: Especifique IFormatProvider

Um método ou construtor chama um ou mais membros que possuem sobrecargas que aceitam um parâmetro de System.IFormatProvider e o método ou construtor não chama a sobrecarga que aceita o parâmetro IFormatProvider.Quando um objeto System.Globalization.CultureInfo ou IFormatProvider não for fornecido, o valor padrão que é fornecido pelo membro sobrecarregado talvez não tenha o efeito desejado em todas as localidades.

CA1306

CA1306: Definir a localidade para tipos de dados

A localidade determina os elementos da apresentação de específicos da cultura para dados, tais como formatação, que é usado para valores numéricos, símbolos de moeda e ordem de classificação.Quando você cria uma DataTable ou DataSet, você deve definir explicitamente a localidade.

CA1307

CA1307: Especificar StringComparison

Uma operação de comparação de seqüência de caracteres usa uma sobrecarga de método não define um parâmetro StringComparison.

CA1308

CA1308: Normalizar seqüências de caracteres em maiúsculas

Seqüências de caracteres devem ser normalizadas em maiúsculas.Um pequeno grupo de caracteres não pode fazer uma viagem quando eles são convertidos em minúsculas.

CA1309

CA1309: Usar ordinal StringComparison

Uma operação de comparação de seqüência de caracteres que é nonlinguistic não define o parâmetro StringComparison Ordinal ou OrdinalIgnoreCase.Explicitamente definindo o parâmetro StringComparison.Ordinal ou OrdinalIgnoreCase, seu código com freqüência ganha velocidade, torna-se mais correto e se torna mais confiável.

CA1400

CA1400: Os pontos de entrada de P/Invoke devem existir

Um método público ou protegido é marcado, usando o atributo. DllImportAttribute.Ou a biblioteca não gerenciada não pôde ser localizada ou o método não pôde ser correspondido para uma função na biblioteca.

CA1401

CA1401: P/Invokes não deverá ser visível

Um método público ou protegido em um tipo público tem o atributo. DllImportAttribute (também é implementado da palavra-chave de declarar em Visual Basic).Tais métodos não devem ser expostos.

CA1402

CA1402: Evitar sobrecargas em interfaces de COM visíveis

Quando os métodos sobrecarregados estão expostos a clientes COM, apenas a primeira sobrecarga de método manterá seu nome.Sobrecargas subseqüentes são renomeadas exclusivamente por meio do acréscimo ao nome de um caractere de sublinhado (_) e um inteiro que corresponde à ordem de declaração da sobrecarga.

CA1403

CA1403: Tipos de layout automático não devem ser visível em COM

Um tipo de valor visível em COM é marcado, usando o atributo System.Runtime.InteropServices.StructLayoutAttribute definido como LayoutKind.Auto.O layout desses tipos pode alterar entre versões do .NET Framework, que interromperá a clientes COM que esperam um layout específico.

CA1404

CA1404: Chamar GetLastError imediatamente após P/Invoke.

É feita uma chamada para o método Marshal.GetLastWin32Error ou o equivalente a Win32 função GetLastError e a chamada imediatamente anterior não é um sistema operacional a invocação de método.

CA1405

CA1405: A tipos base do tipo visível COM devem estar visível em COM

Um visível em COM tipo deriva de um tipo que não é visível em COM.

CA1406

CA1406: Evitar Int64 argumentos para os clientes de 6 Visual Basic

Clientes COM 6 de Visual Basic não podem acessar inteiros de 64 bits.

CA1407

CA1407: Evitar membros estáticos em tipos de visíveis COM

COM não oferece suporte a métodos estáticos.

CA1408

CA1408: Não use AutoDual ClassInterfaceType

Tipos que utilizam uma interface dual permitem que clientes vincular a um layout de interface específica.Qualquer alteração em uma versão futura no layout do tipo ou quaisquer tipos base interromperá os clientes COM que se vinculam à interface.Por padrão, se o atributo ClassInterfaceAttribute não for especificado, uma interface somente de distribuição é usada.

CA1409

CA1409: Os tipos de visíveis Com devem ser criados

Um tipo de referência que está marcado como visível para COM especificamente contém um construtor parametrizado público, mas não tem um construtor público padrão (sem parâmetros).Um tipo sem um construtor público padrão não é criado por clientes COM.

CA1410

CA1410: Métodos de registro COM devem ter correspondência

Um tipo declara um método que está marcado, usando o atributo System.Runtime.InteropServices.ComRegisterFunctionAttribute, mas não declara um método marcado usando o atributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute, ou vice-versa.

CA1411

CA1411: Métodos de registro COM não deverá ser visíveis

Um método marcado com o atributo System.Runtime.InteropServices.ComRegisterFunctionAttribute ou o atributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute é visível externamente.

CA1412

CA1412: Interfaces de marca ComSource como IDispatch

Um tipo é marcado, usando o atributo System.Runtime.InteropServices.ComSourceInterfacesAttribute, e pelo menos uma das interfaces especificadas não está marcado como usando o atributo System.Runtime.InteropServices.InterfaceTypeAttribute definido como ComInterfaceType.InterfaceIsIDispatch.

CA1413

CA1413: Evite campos não públicos em tipos de valor visível COM

Campos de instância confidenciais visível em COM tipos de valor são visíveis para clientes COM.Analise o conteúdo dos campos para informações que não deve ser exposta ou que terá efeitos indesejados de design ou de segurança.

CA1414

CA1414: Marcar booleanos argumentos de P/Invoke com MarshalAs

O tipo de dados Boolean possui diversas representações em código não gerenciado.

CA1415

CA1415: Declarar P/Invokes corretamente

Esta regra que procura o sistema operacional invocar declarações de método de destino Win32 as funções que têm um ponteiro para um OVERLAPPED estruturar o parâmetro e o parâmetro gerenciado correspondente não é um ponteiro para uma estrutura System.Threading.NativeOverlapped.

CA1500

CA1500: Nomes de variáveis não devem corresponder a nomes de campo

Um método de instância declara um parâmetro ou uma variável local cujo nome corresponde a um campo de instância do tipo declarativo, levando a erros.

CA1501

CA1501: Evitar a herança de excessiva

Um tipo é mais de quatro níveis de profundidade na sua hierarquia de herança.Hierarquias de tipo aninhado profundamente podem ser difícil de seguir, entender e manter.

CA1502

CA1502: Evitar excessiva complexidade

Esta regra mede o número de caminhos linearmente independentes por meio do método, que é determinado pelo número e a complexidade das ramificações condicionais.

CA1504

CA1504: Examine enganosas nomes de campo

O nome de um campo de instância começa com "s_" ou o nome de um campo de estático (Shared no Visual Basic) começa com "m _".

CA1505

CA1505: Evitar o código não é possível manter

Um tipo ou método tem um valor de índice de baixa capacidade de manutenção.Um índice de baixa manutenção indica que um tipo ou método é difícil manter provavelmente seria um bom candidato para o novo design.

CA1506

CA1506: Evitar o acoplamento de excessivas de classe

Esta regra mede o acoplamento, contando o número de referências de tipo único que contém um tipo ou método de classe.

CA1600

CA1600: Não use a prioridade do processo ocioso

Não defina a prioridade do processo a Idle.Processos que tenham System.Diagnostics.ProcessPriorityClass.Idle ocupará a CPU quando estariam ocioso e, portanto, bloqueará o modo de espera.

CA1601

CA1601: Não use timers impedem alterações de estado de energia

Atividade periódica de freqüência mais alta manterá a CPU ocupada e interferir com temporizadores ociosos de economia de energia que desativar a exibição e os discos rígidos.

CA1700

CA1700: Não nomear valores enum "Reservada"

Esta regra pressupõe que um membro de enumeração tem um nome que contenha "reservado" não está sendo usado, mas é um espaço reservado para ser renomeado ou removido em uma versão futura.Renomear ou remover um membro é uma alteração significativa.

CA1701

CA1701: Palavras compostas de seqüência de caracteres de recurso devem ser minúsculas corretamente

Cada palavra na seqüência de recurso é dividida em tokens baseados nas maiúsculas e minúsculas.Cada combinação de token de dois contígua é verificada pela biblioteca do verificador ortográfico do Microsoft.Se reconhecido, a palavra produz uma violação da regra.

CA1702

CA1702: Palavras compostas devem ser minúsculas corretamente

O nome de um identificador contém várias palavras e pelo menos uma das palavras que parece ser uma palavra composta que não é causada corretamente.

CA1703

CA1703: Seqüências de recursos devem ser escritas corretamente

Uma seqüência de recurso contém uma ou mais palavras que não são reconhecidas pela biblioteca do verificador ortográfico do Microsoft.

CA1704

CA1704: Identificadores devem ser escritos corretamente

O nome de um identificador visível externamente contém uma ou mais palavras que não são reconhecidas pela biblioteca do verificador ortográfico do Microsoft.

CA1707

CA1707: Identificadores não devem conter sublinhados

Por convenção, nomes de identificador não contêm o caractere de sublinhado (_).Esta regra verifica namespaces, tipos, membros e parâmetros.

CA1708

CA1708: Identificadores devem diferir por mais de caso

Identificadores para namespaces, tipos, membros e parâmetros não não só diferem caso pois linguagens que direcionam o common language runtime não são necessárias para diferenciar maiúsculas de minúsculas.

CA1709

CA1709: Identificadores devem ser minúsculas corretamente

Por convenção, usam nomes de parâmetro camel casing e espaço para nome, tipo, e nomes de membro Pascal casing.

CA1710

CA1710: Identificadores devem ter o correto sufixo

Por convenção, os nomes de tipos que ampliam a determinados tipos de base ou que implementar determinadas interfaces ou tipos derivados desses tipos, têm um sufixo que está associado com o tipo base ou interface.

CA1711

CA1711: Identificadores não devem ter o sufixo incorreto

Por convenção, apenas os nomes dos tipos que ampliam a determinados tipos de base ou que implementam determinadas interfaces ou tipos derivados desses tipos, devem terminar com sufixos reservados específicos.Outros nomes de tipo não devem usar esses sufixos reservados.

CA1712

CA1712: Não os valores de enum com nome de tipo de prefixo

Nomes de membros de enumeração não são prefixados usando o nome do tipo porque espera-se ferramentas de desenvolvimento para fornecer informações de tipo.

CA1713

CA1713: Os eventos não devem ter antes ou depois do prefixo

O nome de um evento começa com "Antes" ou "Depois".Para nomear os eventos relacionados que são gerados em uma seqüência específica, use o presente ou o indicativo do passado para indicar a posição relativa na seqüência de ações.

CA1714

CA1714: O sinalizadores enums devem ter nomes no plural

Uma enumeração pública tem o atributo FlagsAttribute e seu nome não termina em "s".Tipos que são marcados usando FlagsAttribute têm nomes que estão no plural, porque o atributo indica que mais de um valor pode ser especificado.

CA1715

CA1715: Identificadores devem ter o prefixo correto

O nome de uma interface visível externamente não inicia com um "I" maiúsculo.O nome de um parâmetro de tipo genérico em um tipo visível externamente ou método não é iniciado com um "T" maiúsculo.

CA1716

CA1716: Identificadores não devem corresponder a palavras-chave

Um nome de namespace ou um nome de tipo corresponde a uma palavra reservada em uma linguagem de programação.Identificadores para namespaces e tipos não devem corresponder a palavras-chave que são definidas pelas linguagens que direcionam o common language runtime.

CA1717

CA1717: O enums de FlagsAttribute apenas devem ter nomes no plural

Convenções de nomenclatura determinam que um nome no plural para uma enumeração indica que mais de um valor da enumeração pode ser especificado ao mesmo tempo.

CA1719

CA1719: Nomes de parâmetro não devem corresponder a nomes de membros

Um nome de parâmetro deve comunicar o significado de um parâmetro e um nome de membro deve comunicar o significado de um membro.Seria um design raro onde elas eram os mesmos.Nomeando um parâmetro da mesma como seu nome de membro é não intuitivos e dificulta usar a biblioteca.

CA1720

CA1720: Identificadores não devem conter nomes de tipo

O nome do parâmetro em um membro visível externamente contém um nome de tipo de dados ou o nome de um membro visível externamente contém um nome de tipo de dados específicos do idioma.

CA1721

CA1721: Métodos de obter propriedade nomes não devem corresponder.

O nome de um membro público ou protegido começa com "Get" e outra forma corresponde ao nome de uma propriedade pública ou protegida. "Propriedades e métodos get"devem ter nomes que distinguir claramente suas funções.

CA1722

CA1722: Identificadores não devem ter prefixo incorreto

Por convenção, somente determinados elementos de programação têm nomes que começam com um prefixo específico.

CA1724

CA1724: Nomes de tipo não devem corresponder a Namespaces

Nomes de tipo não devem corresponder os nomes dos namespaces que são definidos na .NET Framework biblioteca de classes.Violam essa regra pode reduzir a capacidade de uso da biblioteca.

CA1725

CA1725: Nomes de parâmetro devem corresponder à declaração de base

Nomeação consistente de parâmetros em uma hierarquia de substituição aumenta a usabilidade das substituições de método.Um nome de parâmetro em um método derivado que difere do nome na declaração da base pode causar confusão sobre se o método é uma substituição do método base ou uma nova sobrecarga do método.

CA1726

CA1726: Termos de uso preferido

O nome de um identificador visível externamente inclui um termo para o qual um termo alternativo e preferencial existe.Como alternativa, o nome inclui o termo "Bandeira" ou "Flags".

CA1800

CA1800: Não convertem desnecessariamente

Projeções de duplicados diminuir o desempenho, especialmente quando as projeções são realizadas em instruções de iteração compact.

CA1801

CA1801: Revise os parâmetros não utilizados

Uma assinatura do método inclui um parâmetro que não é usado no corpo do método.

CA1802

CA1802: Usar literais onde for apropriado

Um campo é declarado estática e somente leitura (Shared e somente leitura em Visual Basic) e é inicializado usando um valor que seja computáveis em tempo de compilação.Como o valor que é atribuído ao campo de destino é computáveis em tempo de compilação, altere a declaração para uma const (Const em Visual Basic) de campo para que o valor é calculado em tempo de compilação em vez de em tempo de execução.

CA1804

CA1804: Remover variáveis locais não utilizados

Variáveis locais não utilizadas e atribuições desnecessárias aumentam o tamanho de um assembly e diminuem o desempenho.

CA1806

CA1806: Não ignore os resultados 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.

CA1809

CA1809: Evitar locals excessivas

Uma otimização de desempenho comum é armazenar um valor em um registro do processador, em vez de memória, o que é conhecido como "enregistering o valor".Para aumentar as chances de que todas as variáveis locais são não registrados, limite o número de variáveis locais para 64.

CA1810

CA1810: Initialize referência tipo campos estáticos in-line

Quando um tipo declara um construtor estático explícito, o compilador just-in-time (JIT) adiciona uma verificação para cada método e instância o construtor estático do tipo para certificar-se de que o construtor estático anteriormente foi chamado.Verificações do construtor estático podem diminuir o desempenho.

CA1811

CA1811: Evite código particular uncalled

Membro (nível de assembly) privado ou interno não tem os chamadores no assembly; ele não é invocado pelo common language runtime; e não é invocado por um delegado.

CA1812

CA1812: Evitar classes internas sem instância

Uma instância de um tipo de nível de assembly não é criada pelo código no assembly.

CA1813

CA1813: Evite atributos sem lacre

O .NET Framework biblioteca de classe fornece métodos para recuperar os atributos personalizados.Por padrão, esses métodos pesquisar a hierarquia de herança de atributo.Lacrar o atributo elimina a pesquisa por meio da hierarquia de herança e pode melhorar o desempenho.

CA1814

CA1814: Preferem irregulares arrays sobre multidimensional

Uma matriz denteada é uma matriz cujos elementos são matrizes.As matrizes que compõem os elementos podem ser de tamanhos diferentes, resultando em menos perda de espaço para alguns conjuntos de dados.

CA1815

É igual a do CA1815: Substituição e o operador equals em tipos de valor

Para tipos de valor, a implementação herdada de Equals usa a biblioteca de reflexão e compara o conteúdo de todos os campos.A reflexão é dispendiosa e comparar todos os campos de igualdade talvez seja desnecessário.Se você espera que os usuários para comparar ou classificar instâncias, ou usar instâncias como chaves de tabela de hash, seu tipo de valor deve implementar Equals.

CA1816

CA1816: Chama GC.SuppressFinalize corretamente

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).

CA1819

CA1819: Propriedades não devem retornar arrays

Matrizes que são retornados pelas propriedades não estão protegidos contra gravação, mesmo quando a propriedade é somente leitura.Para manter a matriz à prova, a propriedade deve retornar uma cópia da matriz.Normalmente, os usuários não compreenderá as implicações de desempenho adverso de chamar essa propriedade.

CA1820

CA1820: Testar usando o comprimento da seqüência de cadeias de caracteres vazias

Comparando seqüências de caracteres usando a propriedade String. length ou o método é significativamente mais rápida do que o uso é igual a string. IsNullOrEmpty.

CA1821

CA1821: Os finalizadores vazios remover

Sempre que possível, evite finalizadores causa da sobrecarga de desempenho adicional envolvido na vida útil do objeto de controle.Um finalizador vazio gera uma maior sobrecarga e não oferece nenhum benefício.

CA1822

CA1822: Marcar membros como static

Membros que acessar métodos de instância de dados ou chamada de instância não podem ser marcados como estáticos (compartilhado no Visual Basic).Depois de marcar os métodos como estático, o compilador emitirá o site de chamada nonvirtual para esses membros.Isso pode dar um ganho de desempenho mensuráveis para código de desempenho é fundamental.

CA1823

CA1823: Evite campos particulares não utilizados

Campos particulares foram detectados que parecem não ser acessados no assembly.

CA1824

CA1824: Marcar assemblies com NeutralResourcesLanguageAttribute

O atributo NeutralResourcesLanguage informa o ResourceManager da linguagem que foi usado para exibir os recursos de uma cultura neutra para um assembly.Isso melhora o desempenho da pesquisa do primeiro recurso que você deseja carregar e pode reduzir o seu conjunto de trabalho.

CA1900

CA1900: Os campos do tipo de valor devem ser portátil

Esta regra verifica que estruturas que são declaradas usando o layout explícito serão alinhada corretamente quando empacotado para código não gerenciado em sistemas operacionais de 64 bits.

CA1901

CA1901: Declarações P/Invoke devem ser portátil

Esta regra avalia o tamanho de cada parâmetro e o valor de retorno de um P/Invoke e verifica se o tamanho do parâmetro está correto quando empacotado para código não gerenciado em sistemas operacionais de 32 bits e 64 bits.

CA1903

CA1903: Usar apenas uma API do framework de destino

Um tipo ou membro está usando um membro ou um tipo que foi introduzido em um service pack que não foi incluído em conjunto com o framework de destino do projeto.

CA2000

CA2000: Descartar objetos antes de perder escopo

Porque um evento excepcional pode ocorrer que impedirá o finalizador de um objeto seja executado, o objeto deve ser explicitamente destruído antes de todas as referências a ele estão fora do escopo.

CA2001

CA2001: Evitar chamar métodos problemáticos

Um membro chama um método de potencialmente perigoso ou problemático.

CA2002

CA2002: Não travam em objetos com identidade fraco

Um objeto é considerado como tendo uma identidade fraca quando ele pode ser acessado diretamente nos limites do domínio de aplicativo.Um segmento que tenta adquirir um bloqueio em um objeto que tenha uma identidade fraca pode ser bloqueado por um segundo thread em um domínio de aplicativo diferente que tenha um bloqueio no mesmo objeto.

CA2003

CA2003: Não trata fibras threads

Um segmento gerenciado está sendo tratado como um Win32 segmento.

CA2004

CA2004: Remova chamadas para GC.Manutenção de atividade

Se você converter para o uso de SafeHandle, remova todas as chamadas para GC.KeepAlive (objeto).Nesse caso, as classes não devem ter que chamar GC.Manutenção de atividade.Isso pressupõe que eles não possuem um finalizador, mas dependem de SafeHandle para finalizar o identificador do sistema operacional para eles.

CA2006

CA2006: Usar o SafeHandle para encapsular os recursos nativos

Uso de IntPtr em código gerenciado pode indicar um possível problema de segurança e confiabilidade.Todos os usos de IntPtr devem ser examinados para determinar se utilizar de um SafeHandle ou tecnologia semelhante, é necessário em seu lugar.

CA2100

CA2100: Analisar consultas SQL para vulnerabilidades de segurança

Um método define a propriedade de System.Data.IDbCommand.CommandText por meio de uma seqüência de caracteres que é criada a partir de um argumento de seqüência de caracteres para o método.Esta regra pressupõe que o argumento de seqüência de caracteres contém a entrada do usuário.Uma seqüência de comandos SQL que é criada a partir da entrada do usuário é vulnerável a ataques de injeção de SQL.

CA2101

CA2101: Especifique o empacotamento para argumentos de seqüência de caracteres de P/Invoke.

Uma plataforma chamar membro permite aos chamadores parcialmente confiáveis, tem um parâmetro de seqüência de caracteres e não é explicitamente empacotar a seqüência de caracteres.Isso pode causar uma vulnerabilidade de segurança potencial.

CA2102

CA2102: Capturar exceções de não-CLSCompliant nos manipuladores gerais

Um membro em um assembly que não está marcado como usando o RuntimeCompatibilityAttribute ou está marcado como RuntimeCompatibility(WrapNonExceptionThrows = false) contém um bloco catch que manipula Exception e não contém um bloco catch geral de imediatamente seguinte.

CA2103

CA2103: Segurança imperativa de revisão

Um método usa segurança imperativa e pode construir a permissão usando valores de retorno ou de informações de estado que podem ser alterado, desde que a demanda está ativa.Use segurança declarativa, sempre que possível.

CA2104

CA2104: Não declarar tipos de referência mutáveis somente leitura

Um tipo visível externamente contém um campo visível externamente de somente leitura que é um tipo de referência mutáveis.Um tipo de mutável é um tipo de dados cujos instância podem ser modificados.

CA2105

CA2105: Campos de matriz não devem ser lidos apenas

Quando você aplica o somente leitura (somente leitura em Visual Basic) modificadora a um campo que contém uma matriz, o campo não pode ser alterada para fazer referência a uma matriz diferente.No entanto, os elementos da matriz que são armazenados em um campo somente leitura podem ser alterados.

CA2106

CA2106: Secure asserts

Um método declara que uma permissão e não há verificações de segurança são realizadas no chamador.Declarar uma permissão de segurança sem executar qualquer verificações de segurança podem deixar uma falha de segurança pode ser explorada no seu código.

CA2107

CA2107: Revisão Negar e permitir o uso apenas

O método PermitOnly e ações de segurança de CodeAccessPermission.Deny devem ser usadas somente por aqueles que possuem um conhecimento avançado de .NET Framework security.Código que usa essas ações de segurança deve passar por uma revisão de segurança.

CA2108

CA2108: Analisar segurança declarativa em tipos de valor

Um tipo de valor público ou protegido é protegido pelas demandas de Link ou de acesso a dados.

CA2109

CA2109: Manipuladores de eventos visíveis de revisão

Foi detectado um método de tratamento de evento público ou protegido.Métodos de manipulação de eventos não devem ser expostos a menos que absolutamente necessário.

CA2111

CA2111: Ponteiros não deverá ser visíveis

Um ponteiro não é particular, interno ou somente leitura.Código mal-intencionado pode alterar o valor do ponteiro, que potencialmente dá acesso a locais arbitrários na memória ou faz com que o aplicativo ou falhas do sistema.

CA2112

CA2112: Tipos de seguros não devem expor campos

Um tipo de público ou protegido contém campos públicos e é protegido pelas demandas de Link.Se o código tiver acesso a uma instância de um tipo que é protegido por uma demanda de link, não tem o código atender à demanda de link para acessar os campos do tipo.

CA2114

CA2114: A segurança do método deve ser um superconjunto do tipo

Um método não deve ter o nível de método e o tipo de nível de segurança declarativa para a mesma ação.

CA2115

CA2115: Chama GC.Ao usar os recursos nativos de KeepAlive

Essa regra detecta erros que possam ocorrer porque um recurso não gerenciado está sendo finalizado enquanto ainda estiver sendo usado no código não gerenciado.

CA2116

CA2116: Métodos APTCA só deverá chamar métodos APTCA

Quando o APTCA (AllowPartiallyTrustedCallersAttribute) está presente em um assembly totalmente confiável e o assembly executa o código em outro conjunto que não permite chamadores parcialmente confiáveis, é possível a uma exploração de segurança.

CA2117

CA2117: Tipos APTCA só devem estender tipos básicos de APTCA

Quando o APTCA está presente em um assembly totalmente confiável e um tipo no assembly herda de um tipo que não permite chamadores parcialmente confiáveis, é possível a uma exploração de segurança.

CA2118

CA2118: Uso de SuppressUnmanagedCodeSecurityAttribute de revisão

SuppressUnmanagedCodeSecurityAttribute altera o comportamento do sistema de segurança padrão para membros que executar o código não gerenciado que usa invocação de sistema operacional ou de interoperabilidade COM.Esse atributo é usado principalmente para aumentar o desempenho; No entanto, os ganhos de desempenho são fornecidos junto com consideráveis riscos à segurança.

CA2119

CA2119: Métodos de selo que satisfaçam às interfaces privadas

Um tipo de público herdável fornece uma implementação de método substituível do interna (amigo na Visual Basic) interface.Para corrigir uma violação desta regra, impedir que o método seja substituído fora do assembly.

CA2120

CA2120: Construtores de serialização seguro

Esse tipo tem um construtor que leva a um objeto System.Runtime.Serialization.SerializationInfo e um objeto de System.Runtime.Serialization.StreamingContext (a assinatura do construtor serialização).Este construtor não é protegida por uma verificação de segurança, mas um ou mais dos construtores regulares no tipo estão protegidos.

CA2121

CA2121: Os construtores estáticos devem ser particulares

O sistema chama o construtor estático antes da primeira instância do tipo é criada ou quaisquer membros estáticos são referenciados.Se um construtor estático não é particular, pode ser chamado pelo código diferente do sistema.Dependendo das operações realizadas no construtor, isso pode causar um comportamento inesperado.

CA2122

CA2122: Não expõem indiretamente métodos com as demandas de link

Um membro público ou protegido com demandas de Link e é chamado por um membro que não executa quaisquer verificações de segurança.Uma demanda de link verifica as permissões do chamador imediato.

CA2123

CA2123: As demandas de link de substituição devem ser idênticas à base

Esta regra corresponde a um método para o método base, que é uma interface ou um método virtual em outro tipo e então compara as demandas de link em cada um.Se esta regra for violada, um chamador mal intencionado pode ignorar a demanda de link simplesmente chamando o método não seguro.

CA2124

CA2124: Disposição vulnerável finalmente cláusulas no exterior tente

Um método público ou protegido contém um bloco try/finally.O finalmente bloco é exibido redefinir o estado de segurança e não o próprio está contido em um bloco finally.

CA2126

CA2126: As demandas de link do tipo exigem demandas de herança

Um tipo de público sem lacre é protegido por meio de uma demanda de link e tem um método substituível.O tipo nem o método é protegido por meio de uma demanda de herança.

CA2127

CA2136: Os membros não devem ter anotações conflitantes de transparência

O código Critical não pode ocorrer em um assembly de 100 percent−transparent.Esta regra analisa 100 conjuntos de percent−transparent de quaisquer anotações SecurityCritical no tipo, no campo e no método.

CA2128

CA2147: Métodos transparentes não podem usar segurança asserts

Esta regra analisa todos os métodos e tipos de um conjunto que é 100 percent−transparent ou mista transparente crítica e sinaliza qualquer uso declarativo ou imperativo de Assert.

CA2129

CA2140: O código Transparent não deve fazer referência itens essenciais de segurança

Métodos que são marcados por SecurityTransparentAttribute chamam membros confidenciais que são marcados como SecurityCritical.Esta regra analisa todos os métodos e tipos em um assembly que é misto crítica transparente e sinaliza qualquer chamadas de código transparente para o código critical confidenciais que não estejam marcadas como SecurityTreatAsSafe.

CA2130

CA2130: Constantes críticas de segurança devem ser transparentes

Aplicação de transparência não é imposta para valores constantes porque valores de constante embutido de compiladores para que nenhuma pesquisa é necessária em tempo de execução.Campos constantes devem ser transparente de segurança para que os revisores de código não assumem que o código transparent não pode acessar a constante.

CA2131

CA2131: Tipos de segurança críticos podem não participar equivalência de tipo

Participe de um tipo de equivalência de tipo e o tipo propriamente dito, ou um membro ou campo do tipo, é marcado, usando o atributo SecurityCriticalAttribute.Essa regra ocorre em qualquer críticos tipos ou tipos que contêm métodos críticos ou campos que estão participando da equivalência de tipo.Quando o CLR detecta desse tipo, ele não carregá-lo com um TypeLoadException em tempo de execução.Normalmente, essa regra é disparada somente quando os usuários a implementar a equivalência de tipo manualmente em vez de em por contar com tlbimp e os compiladores para fazer a equivalência do tipo.

CA2132

CA2132: Os construtores padrão devem ser pelo menos tão importantes como construtores do tipo base padrão

Tipos e membros que possuem o SecurityCriticalAttribute não podem ser usados pelo código de aplicativo do Silverlight.Membros e tipos de segurança crítica podem ser usados somente pelo código confiável na .NET Framework para a biblioteca de classes do Silverlight.Porque uma construção pública ou protegida em uma classe derivada deve ter a transparência igual ou maior que sua classe base, uma classe em um aplicativo não pode ser derivada de uma classe marcada como SecurityCritical.

CA2133

CA2133: Delegados devem ligar para métodos com transparência consistente

Esse aviso é gerado em um método que vincula a um delegado que está marcado como usando o SecurityCriticalAttribute para um método que é transparente ou que esteja marcado, usando o SecuritySafeCriticalAttribute.O aviso também é gerado em um método que vincula a um delegado que é transparente ou safe essenciais para um método critical.

CA2134

CA2134: Métodos devem manter a transparência consistente quando os métodos base

Essa regra é disparada quando um método marcado usando o SecurityCriticalAttribute substitui um método que é transparente ou marcadas usando o SecuritySafeCriticalAttribute.A regra também é disparada quando um método que é transparente ou marcadas usando o SecuritySafeCriticalAttribute substitui um método marcado com o uso de um SecurityCriticalAttribute.A regra é aplicada ao substituir um método ou a implementação de uma interface.

CA2135

CA2135: Módulos (assemblies) de nível 2 não deve conter LinkDemands

LinkDemands estão obsoletas no conjunto de regras de segurança de nível 2.Em vez de usar LinkDemands para reforçar a segurança em tempo de compilação JIT, marca os campos, tipos e métodos, usando o atributo SecurityCriticalAttribute.

CA2136

CA2136: Os membros não devem ter anotações conflitantes de transparência

Atributos de transparência são aplicados de elementos do código de maior escopo para elementos de escopo menor.Os atributos de transparência dos elementos de código que têm maior escopo têm precedência sobre atributos de transparência dos elementos de código que estão contidos no primeiro elemento.Por exemplo, uma classe que está marcado como usando o atributo SecurityCriticalAttribute não pode conter um método que é marcado, usando o atributo SecuritySafeCriticalAttribute.

CA2137

CA2137: O métodos transparentes devem conter apenas IL verificável

Um método contém o código não verificado ou retorna um tipo por referência.Essa regra é gerada em tentativas pelo código transparent de segurança para executar não verificável linguagem intermediária microsoft (MISL).No entanto, a regra não contém um verificador de IL completo e, em vez disso, usa heurística para detectar a maioria das violações de verificação de MSIL.

CA2138

CA2138: Métodos transparentes não devem chamar métodos com o atributo SuppressUnmanagedCodeSecurity

Um método de segurança transparente chama um método marcado usando o atributo SuppressUnmanagedCodeSecurityAttribute.

CA2139

CA2139: Métodos transparentes não podem usar o atributo HandleProcessCorruptingExceptions

Essa regra é disparada por qualquer método que é transparente e tenta lidar com um processo corrompendo exceção usando o atributo HandleProcessCorruptedStateExceptionsAttribute.Um processo corrompendo a exceção é uma classificação de exceção de versão 4.0 do CLR de exceções como, por exemplo, AccessViolationException.O atributo HandleProcessCorruptedStateExceptionsAttribute pode ser usado somente por métodos de segurança crítica e será ignorado se for aplicado a um método transparente.

CA2140

CA2140: O código Transparent não deve fazer referência itens essenciais de segurança

Um elemento de código que está marcado, usando o atributo SecurityCriticalAttribute é crítica de segurança.Um método transparente não é possível usar um elemento crítico da segurança.Se um tipo transparente tentar usar um tipo de segurança crítica, um TypeAccessException, MethodAccessException ou FieldAccessException é gerado.

CA2141

CA2141: métodos transparentes não devem atender a LinkDemands

Um método de segurança transparente chama um método em um assembly que não está marcado como usando o APTCA, ou um método de segurança transparente satisfaz um LinkDemand para um tipo ou um método.

CA2142

CA2142: Código Transparent não deve ser protegido por LinkDemands

Essa regra é gerada em métodos transparentes que exigem a LinkDemands para acessá-los.Código de segurança transparente não deve ser responsável por verificar a segurança de uma operação e, portanto, não deve exigir permissões.

CA2143

CA2143: Métodos transparentes não devem usar demandas de segurança

Código de segurança transparente não deve ser responsável por verificar a segurança de uma operação e, portanto, não deve exigir permissões.Código transparente de segurança deve usar as demandas completas para tomar decisões de segurança e código de segurança crítico não deve depender de código transparent ter feito a demanda completa.

CA2144

CA2144: Código Transparent deve não carregar assemblies de matrizes de bytes

A análise de segurança para o código transparent não é completa como a revisão de código crítico de segurança porque o código transparent não é possível realizar ações de segurança confidenciais.Assemblies são carregados a partir de uma matriz de bytes não podem ser observados no código transparente e essa matriz de bytes pode conter mais importante ou crítico código safe crítico, que têm a serem auditados.

CA2145

CA2145: Métodos transparentes não devem ser decorados com o SuppressUnmanagedCodeSecurityAttribute.

Os métodos que são decorados pelo atributo SuppressUnmanagedCodeSecurityAttribute ter um LinkDemand implícito colocar após qualquer método que o chama.Este LinkDemand requer que o código de chamada crítica de segurança.Marcar o método que usa SuppressUnmanagedCodeSecurity usando o atributo SecurityCriticalAttribute faz essa exigência mais óbvio para chamadores do método.

CA2146

CA2146: Os tipos devem ser pelo menos, tão importantes quanto seus tipos base e interfaces

Essa regra é disparada quando um tipo derivado tem um atributo de transparência de segurança que não é tão importante quanto o seu tipo base ou implementou a interface.Apenas os tipos de críticos podem derivar de tipos base essenciais ou implementar interfaces críticos e somente os tipos de críticos ou safe críticos podem derivar de tipos de base seguros para críticos ou implementar interfaces safe críticas.

CA2147

CA2147: Métodos transparentes não podem usar segurança asserts

Código que está marcado como SecurityTransparentAttribute não é concedido permissões suficientes para declarar.

CA2149

CA2149: Não devem chamar métodos transparentes código nativo

Essa regra é gerada em qualquer método transparente que chama diretamente no código nativo (por exemplo, por meio de P/Invoke).Violações desta regra levam a um MethodAccessException o modelo de transparência de nível 2 e uma solicitação total de UnmanagedCode no modelo de transparência de nível 1.

CA2200

CA2200: Relançar para preservar os detalhes de pilha

Uma exceção será emitida novamente e a exceção é explicitamente especificada na instrução throw.Se uma exceção será emitida novamente, 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.

CA2201

CA2201: Não aumente os tipos de exceção reservada

Isso torna difícil detectar e depurar o erro original.

CA2202

CA2202: Não dispor objetos várias vezes

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.

CA2204

CA2204: Literais devem ser escritos corretamente

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.

CA2205

CA2205: Equivalentes do gerenciado de uso da API do Win32

Um sistema operacional invocar método está definido e um método que possui a funcionalidade equivalente está localizado na .NET Framework biblioteca de classes.

CA2207

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.

CA2208

CA2208: Instanciar exceções 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.

CA2210

CA2210: A Assemblies devem ter nomes fortes válidos

O nome forte protege clientes de inadvertidamente carregar um assembly que foi violado.Os assemblies sem nomes de alta segurança não devem ser implantados fora cenários muito limitados.Se você compartilhar ou distribuir assemblies que não estão assinados corretamente, o assembly pode ser violado, o common language runtime não pode carregar o assembly ou o usuário pode ter que desativar a verificação no seu computador.

CA2211

CA2211: Não constante campos não devem estar visíveis

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 para o objeto de classe.

CA2212

CA2212: Não marque os componentes de serviço com WebMethod

Um método em um tipo que herda de System.EnterpriseServices.ServicedComponent é marcado por meio de 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.

CA2213

CA2213: Campos descartáveis devem ser descartados

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.

CA2214

CA2214: Não chamam métodos substituíveis em construtores

Quando um construtor chama um método virtual, o construtor para a instância que invoca o método não pode ter sido completada.

CA2215

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.

CA2216

CA2216: Tipos descartáveis devem declarar o finalizador

Um tipo que implementa IDisposable e possui campos que sugerem o uso de recursos não gerenciados não implementa um finalizador, conforme descrito pelo Object.Finalize.

CA2217

CA2217: Não marque enums com FlagsAttribute

Uma enumeração visível externamente é marcada usando 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.

CA2218

CA2218: GetHashCode de substituição em substituição Equals

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.

CA2219

CA2219: Não geram exceções em cláusulas de exceção

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

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.

CA2221

CA2221: Os finalizadores devem ser protegidos

Os finalizadores devem usar o modificador de acesso da família.

CA2222

CA2222: Não diminuir a visibilidade de membro herdado

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

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

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.

CA2225

CA2225: Sobrecargas operador nomeou alternativas

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.

CA2226

CA2226: Os operadores devem ter a sobrecargas simétricas

Um tipo implementa a igualdade ou desigualdade e não implementa o operador oposto.

CA2227

CA2227: Propriedades da coleção devem ser somente leitura

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.

CA2228

CA2228: Não são fornecidos recursos realizar formatos

Arquivos de recursos que foram criados usando versões de pré-lançamento da .NET Framework pode não ser utilizável por versões compatíveis com o .NET Framework.

CA2229

CA2229: Construtores de serialização de implementar

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.

CA2230

CA2230: Use params para argumentos de variáveis

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

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.

CA2232

CA2232: Pontos de entrada 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 ele for omitido, os componentes do Windows podem não funcionar corretamente.

CA2233

CA2233: As operações não devem estouro

Você não deve executar operações aritméticas sem primeiro validar os operandos.Isso garante que o resultado da operação não está fora do intervalo de valores possíveis para os tipos de dados envolvidos.

CA2234

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.

CA2235

CA2235: Marcar todos os campos não serializáveis

Um campo de instância de um tipo que não é serializável está declarado em um tipo que pode ser serializado.

CA2236

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

CA2237: Os tipos ISerializable da marca com o SerializableAttribute

Para ser reconhecido pelo common language runtime como serializável, os tipos devem ser marcados usando o atributo SerializableAttribute mesmo quando o tipo usa uma rotina de serialização personalizada por meio da implementação da interface ISerializable.

CA2238

CA2238: Implementar métodos de serialização corretamente

Um método que manipula um evento de serialização não tem a assinatura correta, retornar o tipo ou a visibilidade.

CA2239

CA2239: Fornecer métodos para os campos opcionais de desserialização

Um tipo tem um campo que está marcado como usando o atributo OptionalFieldAttribute e o tipo não fornece métodos de manipulação de eventos de desserialização.

CA2240

CA2240: ISerializable de implementar corretamente

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 usando o atributo NonSerializedAttribute.

CA2241

CA2241: Fornecer argumentos corretos para métodos de formatação.

O argumento de formato que é passado para System.String.Format não contém um item de formato que corresponde ao argumento de cada objeto, ou vice-versa.

CA2242

CA2242: Testar NaN corretamente

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

CA2243: Literais de seqüência de atributo devem analisar corretamente

O parâmetro de seqüência de caracteres literal de um atributo não analisa corretamente para uma URL, um GUID ou uma versão.