Conjunto de regra de análise de código de regras de todos da Microsoft
O conjunto de regras de todas as regras da Microsoft contém todas as regras de análise de código gerenciado.
Regra |
Descrição |
---|---|
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: Os tipos que possuem campos descartáveis devem ser descartáveis |
Uma classe declara e implementa um campo de instância é um tipo de System. 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. |
System.Collections.Generic.List < (de <(T>) >) é uma coleção genérica, projetada para desempenho, não a herança. Portanto, a lista não contém quaisquer membros virtuais. Em vez disso, as coleções genéricas que sejam destinam a herança devem ser expostas. |
|
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 os destinos do assembly que contém.NET Framework 2.0. |
|
CA1004: Métodos genéricos devem fornecer o parâmetro de tipo |
Inferência é 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 de tipo não precisará ser especificada. Ao usar dedução para todos os parâmetros de tipo, a sintaxe para chamada dos métodos de instância genérica e não genéricas é idêntica; Isso simplifica a usabilidade de métodos genéricos. |
Quanto mais digite os parâmetros que contém um tipo genérico, mais difícil é saber e lembre-se de que cada tipo de parâmetro representa. É óbvio geralmente com um parâmetro de tipo, como na lista <T> e, em certos casos com dois parâmetros de tipo, como em um Dictionary < TKey, TValue >. No entanto, se houver mais de dois parâmetros de tipo, a dificuldade fica muito grande para a maioria dos usuários. |
|
CA1006: Não se aninham tipos genéricos em assinaturas de membro |
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 é complexos e deve ser evitado. |
Um método visível externamente contém um parâmetro de referência do tipo Object. Uso de um método genérico permite que 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. |
|
O valor padrão de uma enumeração inicializada, assim como outros tipos de valor é zero. Uma enumeração de não-atribuídos sinalizadores deve definir um membro com 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 "None" para indicar que os valores não foram definido na enumeração. |
|
Métodos de manipulador de eventos utilizam dois parâmetros. A primeira é do tipo Object e é chamada de "remetente". Este é o objeto que disparou o evento. O segundo parâmetro é do tipo System. EventArgs e é denominado "e". Isso é que os dados associados ao 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. |
|
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. |
|
Quando um tipo base é especificado como um parâmetro em uma declaração de método, qualquer tipo 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 que o método a ser mais amplamente usado. |
|
Construtores de tipos abstratos só podem ser chamados 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 com um construtor público incorretamente foi projetado. |
|
CA1013: É igual a 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. |
Especificação de linguagem comum (CLS) define as restrições de nomeação, tipos de dados e regras às quais assemblies devem obedecer se estiverem a ser usado em linguagens de programação. Um bom design determina que todos os assemblies indicam explicitamente a compatibilidade com CLS com CLSCompliantAttribute. Se esse atributo não estiver presente em um assembly, o assembly não é compatível com. |
|
A.NET Framework usa o número de versão para identificar exclusivamente um assembly e vincular a tipos em assemblies de nome forte. O número de versão é usado em conjunto com a versão e o Editor de diretiva. Por padrão, os aplicativos são executados apenas com a versão do assembly com o qual foram criados. |
|
ComVisibleAttribute determina como clientes COM acessam a código gerenciado. Um bom design determina 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 os membros de tipo. Se esse atributo não estiver presente, o conteúdo do assembly é visível para os clientes COM. |
|
Ao definir um atributo personalizado, marcá-la usando AttributeUsageAttribute para indicar onde o código-fonte do atributo personalizado pode ser aplicado. O significado de um atributo e o uso pretendido determinará seus locais válidos no código. |
|
Atributos podem definir argumentos obrigatórios que devem ser especificados quando você aplicar 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 posicionais. Para cada argumento obrigatório, o atributo também deve fornecer uma propriedade correspondente de somente leitura 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 os construtores de atributo por nome e devem ter uma propriedade de leitura/gravação correspondente. |
|
Certifique-se de que há uma organização lógica para cada um dos seus espaços para nomes e que há um motivo válido para a colocação de tipos em um namespace de modo disperso preenchido. |
|
Tipos de passagem por referência (usando out ou ref) requer experiência com ponteiros, entender a diferença entre os 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. |
|
Os indexadores (isto é, propriedades indexadas) devem usar um único índice. Os indexadores multidimensionais podem reduzir significativamente a usabilidade da biblioteca. |
|
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 é uma matriz. O método pode ser um bom candidato para se tornar uma propriedade. |
|
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. |
|
Os métodos que usam parâmetros padrão são permitidos na especificação de CLS (Common Language); Entretanto, o CLS permite compiladores ignorar os valores atribuídos a esses parâmetros. Para manter o comportamento desejado, através de linguagens de programação, os métodos que usam parâmetros padrão devem ser substituídos com sobrecargas de método para fornecem os parâmetros padrão. |
|
Uma enumeração é um tipo de valor que define um conjunto de constantes nomeadas relacionadas. Aplica FlagsAttribute em uma enumeração quando suas constantes nomeadas podem ser combinados de forma significativa. |
|
Uma enumeração é um tipo de valor que define um conjunto de constantes nomeadas relacionadas. Por padrão, o tipo de dados de Int32 é usado para armazenar o valor da constante. Embora, por exemplo, você pode alterar o tipo de base, não é necessária ou recomendada para a maioria dos cenários. |
|
Essa regra detecta os métodos que possuem nomes que normalmente seriam usados para eventos. Se um método é 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. |
|
Exceções gerais não devem ser detectadas. Capturar uma exceção mais específica ou relançar a exceção geral como a última instrução no bloco catch. |
|
Falha ao fornecer o conjunto completo de construtores pode dificultar o lidar corretamente com exceções. |
|
CA1033: Os métodos de interface devem 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 com o mesmo nome. |
Um tipo aninhado é um tipo declarado no escopo de outro tipo. Tipos aninhados são úteis para encapsular os detalhes de implementação privada do tipo recipiente. Usado para essa finalidade, tipos aninhados não devem ser visíveis externamente. |
|
CA1035: Implementações de ICollection 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. |
Um tipo de público ou protegido implementa a interface System. IComparable. Ele não substitui Object. Equals nem oferece sobrecarregar a igualdade, desigualdade, menor ou maior que o operador de específicos do idioma. |
|
Esta regra exige implementações de IEnumerator também fornecer uma versão fortemente tipada 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. |
|
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. |
|
Interfaces definir membros que fornecem um contrato de uso ou comportamento. 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 de membros da interface. Uma interface vazia não define quaisquer membros; Portanto, ele não define um contrato que pode ser implementado. |
|
Um tipo ou membro é marcado com um atributo de System. ObsoleteAttribute não tem sua propriedade ObsoleteAttribute.Message especificada. Quando um tipo ou membro marcado com ObsoleteAttribute é compilado, a propriedade do atributo de mensagem é exibida, fornecendo as informações do usuário sobre o tipo obsoleto ou membro. |
|
CA1043: Use o argumento integral ou de seqüência de caracteres para 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 aumentar a facilidade de uso da biblioteca. O uso do tipo de objeto deve ser restrito a esses casos onde o tipo específico de integral ou seqüência de caracteres não pode ser especificado em tempo de design. |
Embora seja aceitável e freqüentemente é necessário ter uma propriedade somente leitura, as diretrizes de design proíbem usando as propriedades somente para gravação porque o que permite ao 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. |
|
Tipos de passagem por referência (usando out ou ref) requer experiência com ponteiros, entender a diferença entre os tipos de valor e tipos de referência e tratamento métodos com 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: Não sobrecarregar o operador de 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, as duas referências são iguais, apenas se eles apontam para o mesmo objeto. |
Tipos de declarar membros protegidos para que tipos de herança possa acessar ou substituir o membro. Por definição, selados tipos podem não ser herdados, que significa que os métodos protegidos lacrado tipos não podem ser chamados. |
|
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: Os tipos que possuem recursos nativos devem ser descartáveis |
Tipos de alocam recursos não gerenciados devem implementar IDisposable, para permitir que chamadores para liberar esses recursos sob demanda e reduzir os tempos de vida dos objetos mantendo os recursos. |
Tipos são declarados dentro de espaços para nome para evitar conflitos de nome e como uma forma de organizar os tipos relacionados em uma hierarquia de objeto. |
|
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. |
|
Um tipo de público ou protegido contém apenas membros estáticos e não é declarado com o modificador de selada (C# Reference) (NotInheritable). Um tipo que não pretende ser herdadas deve ser marcado com o modificador sealed para impedir seu uso como um tipo base. |
|
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 usando o argumento de seqüência de caracteres para proteção e segurança. |
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 leva a uma instância da classe URI, que fornece esses serviços de maneira segura e protegida. |
CA1055: URI retornar valores não devem ser seqüências de caracteres |
Esta regra pressupõe que o método retorna 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 System. URI fornece esses serviços de maneira segura e protegida. |
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 System. URI fornece esses serviços de maneira segura e protegida. |
CA1057: Sobrecargas URI de seqüência de caracteres chamada 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 chamar a sobrecarga que aceita o parâmetro URI. |
CA1058: Tipos de não devem estender a determinados tipos de base |
Um tipo visível externamente estende a determinados tipos de base. Use uma das alternativas. |
CA1059: Os membros não devem expor a determinados 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 com a interface sugerida. |
Métodos de invocação de plataforma, tais como aqueles marcados com o atributo. DllImportAttribute ou métodos 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. |
|
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. |
|
Todos os argumentos de referência passados para métodos visíveis externamente devem ser verificados em relação a null. |
|
Todos os tipos de IDisposable devem implementar corretamente o padrão Dispose. |
|
Uma exceção interna só é visível 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. |
|
Um método que não é esperado para lançar exceções lança uma exceção. |
|
Para exibir corretamente uma caixa de mensagem para culturas que usam uma ordem de leitura da direita para esquerda, os membros RightAlign e RtlReading da enumeração MessageBoxOptions devem ser passados para o método Show. |
|
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: 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 associados a enumeração Environment. SpecialFolder, localizada e apropriada para o computador em execução no momento. |
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 class library, e a seqüência de caracteres deve ser localizável. |
|
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 chamar a sobrecarga que aceita o parâmetro CultureInfo. Quando um objeto CultureInfo ou System.IFormatProvider não for fornecido, o valor padrão fornecido pelo membro sobrecarregado pode não ter o efeito que você deseja que todas as localidades. |
|
Um método ou construtor chama um ou mais membros têm sobrecargas que aceitam um parâmetro de System.IFormatProvider e o método ou construtor não chamar a sobrecarga que aceita o parâmetro IFormatProvider. Quando um objeto System.Globalization.CultureInfo ou IFormatProvider não for fornecido, o valor padrão fornecido pelo membro sobrecarregado pode não ter o efeito que você deseja que todas as localidades. |
|
A localidade determina os elementos da apresentação de culture-specific para dados, como a formatação usada para valores numéricos, símbolos de moeda e ordem de classificação. Quando você cria um DataTable ou DataSet, você deve definir explicitamente a localidade. |
|
Uma operação de comparação de seqüência de caracteres usa uma sobrecarga de método não define um parâmetro StringComparison. |
|
Seqüências de caracteres devem ser normalizadas em maiúsculas. Há um pequeno grupo de caracteres que não pode fazer uma viagem quando eles são convertidos em minúsculos. |
|
Uma operação de comparação de seqüência de caracteres não-lingüística não define o parâmetro StringComparison Ordinal ou OrdinalIgnoreCase. Explicitamente definindo o parâmetro StringComparison.Ordinal ou OrdinalIgnoreCase, seu código geralmente ganha velocidade, torna-se mais correto e se torna mais confiável. |
|
Um método público ou protegido é marcado com o atributo. DllImportAttribute. 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. |
|
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). Esses métodos não devem ser expostos. |
|
Quando os métodos sobrecarregados estão expostos a clientes COM, somente a primeira sobrecarga de método manterá seu nome. Sobrecargas subseqüentes são exclusivamente renomeadas anexando o nome de um caractere de sublinhado (_) e um número inteiro que corresponde à ordem de declaração de que a sobrecarga. |
|
CA1403: Tipos de layout automático não devem ser visível em COM |
Um tipo de valor visível em COM é marcado com o atributo System.Runtime.InteropServices.StructLayoutAttribute definido como LayoutKind.Auto. O layout desses tipos pode alterar entre versões do.NET Framework, o que interromperá a clientes COM que esperam um layout específico. |
É feita uma chamada para o método de Marshal.GetLastWin32Error ou a função do Win32 GetLastError equivalente, e a chamada imediatamente anterior não é uma plataforma de invocação de método. |
|
CA1405: 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 para COM. |
CA1406: Evite argumentos de Int64 para os clientes Visual Basic 6 |
Clientes COM 6 de Visual Basic não podem acessar os inteiros de 64 bits. |
COM não oferece suporte a métodos estáticos. |
|
Tipos de uma interface dupla habilitam clientes vincular a um layout de interface específica. Quaisquer alterações em uma versão futura do layout do tipo ou quaisquer tipos base interromperá os clientes COM que vincule à interface. Por padrão, se o atributo ClassInterfaceAttribute não for especificado, uma interface somente de distribuição é usada. |
|
Um tipo de referência é 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. |
|
Um tipo declara um método marcado com o atributo System.Runtime.InteropServices.ComRegisterFunctionAttribute, mas não declara um método marcado com o atributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute, ou vice-versa. |
|
Um método marcado com o atributo de System.Runtime.InteropServices.ComRegisterFunctionAttribute ou o atributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute é visível externamente. |
|
Um tipo é marcado com o atributo System.Runtime.InteropServices.ComSourceInterfacesAttribute e pelo menos uma das interfaces especificadas não está marcada com o atributo System.Runtime.InteropServices.InterfaceTypeAttribute definido como ComInterfaceType.InterfaceIsIDispatch. |
|
CA1413: Evitar os tipos de valor visível COM campos não públicos |
Campos de instância de público não visível em COM tipos de valor são visíveis para os clientes COM. Analise o conteúdo dos campos de informações que não deve ser exposta ou que terá efeitos indesejados de design ou de segurança. |
CA1414: Marcar os argumentos de P/Invoke booleanos com MarshalAs |
O tipo de dados booleano tem diversas representações em código não gerenciado. |
Esta regra procurará as declarações de método que funções do Win32 de destino que possuem um ponteiro para um OVERLAPPED estruturar o parâmetro de invocação de plataforma e o parâmetro gerenciado correspondente não é um ponteiro para uma estrutura de System.Threading.NativeOverlapped. |
|
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. |
Um tipo é a mais de quatro níveis de profundidade na sua hierarquia de herança. Hierarquias de tipo aninhado profundamente podem ser difícil siga, entender e manter. |
|
Esta regra mede o número de caminhos independentes linearmente através do método, o que é determinado pelo número e a complexidade das ramificações condicionais. |
|
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"(_). |
|
Um tipo ou método tem um valor de índice de baixa manutenção. Um índice de baixa manutenção indica que um tipo ou método é difícil manter provavelmente seria um bom candidato para replanejamento. |
|
Esta regra mede o acoplamento contando o número de referências de tipo único que contém a um tipo ou método de classe. |
|
Não defina a prioridade do processo para ocioso. Processos com System.Diagnostics.ProcessPriorityClass.Idle ocupará a CPU quando ele seria contrário ociosa e, portanto, bloquear o modo de espera. |
|
CA1601: Não usam cronômetros de impedir alterações de estado de energia |
Atividade periódica de maior freqüência manterá a CPU ocupada e interferir com temporizadores de ociosidade de economia de energia que desativar a exibição e os discos rígidos. |
Esta regra pressupõe que um membro de enumeração com um nome que contenha "reservado" não é usado no momento, 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: Palavras compostas de seqüência 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 dois token contígua é verificada pela biblioteca do verificador ortográfico do Microsoft. Se reconhecido, a palavra produz uma violação da regra. |
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: 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. |
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. |
|
Por convenção, os nomes de identificador não contêm o caractere de sublinhado (_). Esta regra verifica os namespaces, tipos, membros e parâmetros. |
|
Identificadores de namespaces, tipos, membros e parâmetros 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. |
|
Por convenção, os nomes de parâmetro usam camel casing, enquanto o espaço para nome, tipo, e os nomes de membro Pascal casing. |
|
Por convenção, os nomes de tipos que ampliam a determinados tipos de base ou que implementar determinadas interfaces ou tipos derivados desses tipos tem um sufixo que está associado com o tipo base ou interface. |
|
Por convenção, apenas os nomes dos tipos que ampliam a determinados tipos de base ou que implementar determinadas interfaces ou tipos derivados desses tipos, devem terminar com os sufixos específicos de reservado. Outros nomes de tipo não devem usar esses sufixos reservados. |
|
Nomes de membros de enumeração não são prefixados com o nome do tipo, porque o tipo de informações são esperadas a serem fornecidos pelas ferramentas de desenvolvimento. |
|
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. |
|
Uma enumeração pública tem o atributo FlagsAttribute e seu nome não termina em "s". Tipos marcados com FlagsAttribute têm nomes que estão no plural, porque o atributo indica que mais de um valor pode ser especificado. |
|
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 inicia com "T" maiúsculo. |
|
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 de espaços para nomes e tipos de não devem corresponder a palavras-chave definidas por linguagens que visam common language runtime. |
CA1717: Somente os enums FlagsAttribute devem ter nomes plural |
Convenções de nomenclatura determinam que um nome no plural para uma enumeração indica o que mais de um valor da enumeração pode ser especificado ao mesmo tempo. |
CA1719: Nomes de parâmetro não devem corresponder a nomes de membro |
O nome do 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 a biblioteca de usar. |
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: Os nomes de propriedade não devem corresponder a métodos get |
O nome de um membro público ou protegido começa com "Get" Caso contrário, corresponde ao nome de uma propriedade pública ou protegida. " Get" métodos e propriedades devem ter nomes de distinguir claramente sua função. |
Por convenção, somente determinados elementos de programação têm nomes que começam com um prefixo específico. |
|
Nomes de tipo não devem corresponder os nomes dos namespaces definido na.Biblioteca de classes do NET Framework. Violam essa regra pode reduzir a usabilidade da biblioteca. |
|
CA1725: Nomes de parâmetro devem corresponder à declaração de base |
Nomeação consistentes de parâmetros em uma hierarquia de substituição aumenta a usabilidade de substituições de método. Um nome de parâmetro em um método derivado que difere do nome na declaração de base pode causar confusão sobre se o método é uma substituição do método base ou uma nova sobrecarga do método. |
O nome de um identificador visível externamente inclui um termo para o qual um termo alternativo, preferencial existe. Como alternativa, o nome inclui o termo "Bandeira" ou "Sinalizadores". |
|
Projeções de duplicados diminuir o desempenho, especialmente quando as projeções são realizadas em instruções de iteração compact. |
|
Uma assinatura do método inclui um parâmetro que não é usado no corpo do método. |
|
Um campo declarado estática e somente leitura (compartilhada e somente leitura em Visual Basic) e é inicializado com um valor que seja computáveis em tempo de compilação. Como o valor atribuído ao campo de destino é computáveis em tempo de compilação, altere a declaração para uma const (Const em Visual Basic) para que o valor é calculado em tempo de compilação em vez de em tempo de execução de campo. |
|
Variáveis locais não utilizadas e atribuições desnecessárias aumentam o tamanho de um assembly e diminuem o desempenho. |
|
Um estático ou o construtor de instância inicializa um campo com o valor padrão. O common language runtime inicializa todos os campos para seus valores padrão antes de executar o construtor. |
|
Um novo objeto é criado, mas nunca é usado, 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. |
|
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" (em inglês). Para aumentar a possibilidade de que todas as variáveis locais são não registrados, limite o número de variáveis locais para 64. |
|
CA1810: Inicializar embutido de campos estáticos do tipo de referência |
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 era anteriormente chamado. Verificações do construtor estático podem diminuir o desempenho. |
Membro (nível de assembly) privado ou interno não tem os chamadores no assembly, ele não é invocado pelo common language runtime e ele não é invocado por um delegado. |
|
Uma instância de um tipo de nível de assembly não é criada pelo código no assembly. |
|
A.NET Framework class library 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. |
|
Uma matriz denteada é uma matriz cujos elementos são matrizes. As matrizes que compõem os elementos podem ser de diferentes tamanhos, resultando em menos perda de espaço para alguns conjuntos de dados. |
|
CA1815: É igual a substituição e o operador equals em tipos de valor |
Para tipos de valor, a implementação de Equals herdada 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 instâncias de classificar ou usar instâncias como chaves de tabela de hash, seu tipo de valor deve implementar Equals. |
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). |
|
Arrays retornados pelas propriedades não são protegidos contra gravação, mesmo se a propriedade é somente leitura. Para manter a matriz à prova de violação, 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: Testar usando o comprimento da seqüência de cadeias de caracteres vazias |
Comparando seqüências de caracteres usando a propriedade String. length ou string. IsNullOrEmpty método é significativamente mais rápido do que usando igual. |
Sempre que possível, evite finalizadores causa da sobrecarga de desempenho adicional envolvida no controle de tempo de vida do objeto. Um finalizador vazio provoca adicionado a sobrecarga sem qualquer benefício. |
|
Membros que não acessar métodos de instância de dados ou chamada de instância podem ser marcados como estáticos (compartilhado no Visual Basic). Depois de marcar os métodos como estático, o compilador emitirá a sites de chamada não-virtual para esses membros. Isso pode lhe um ganho de desempenho mensuráveis para o código de desempenho confidenciais. |
|
Campos particulares foram detectados que não parecem ser acessados no assembly. |
|
CA1824: Assemblies de marca com o NeutralResourcesLanguageAttribute |
O atributo NeutralResourcesLanguage informa o ResourceManager da linguagem que foi usado para exibir os recursos da cultura neutra para um assembly. Isso melhora o desempenho da pesquisa do primeiro recurso que você carregar e pode reduzir o seu conjunto de trabalho. |
Esta regra verifica se declarado com layout explícito de estruturas alinhará corretamente quando empacotado para código não gerenciado em sistemas operacionais de 64 bits. |
|
Esta regra avalia o tamanho de cada parâmetro e o valor de retorno de um P/Invoke e verifica se o seu tamanho está correto quando empacotado para código não gerenciado em sistemas operacionais de 32 bits e 64 bits. |
|
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. |
|
Um membro chama um método de potencialmente perigoso ou problemático. |
|
Um objeto deve ter 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 tem uma identidade fraca pode ser bloqueado por um segundo thread em um domínio de aplicativo diferente que tenha um bloqueio no mesmo objeto. |
|
Um segmento gerenciado está sendo tratado como um thread do Win32. |
|
Se a conversão para o uso de SafeHandle, remova todas as chamadas para GC.KeepAlive (objeto). Nesse caso, as classes não devem ter que chamar GC.KeepAlive, supondo que eles não possuem um finalizador, mas dependem de SafeHandle para finalizar o SO lidar com eles. |
|
CA2006: Usar o SafeHandle para encapsular os recursos nativos |
O 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 usa um SafeHandle, ou uma tecnologia semelhante, é necessário em seu lugar. |
CA2100: Analisar consultas SQL vulnerabilidades de segurança |
Um método define a propriedade de System.Data.IDbCommand.CommandText usando 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 caracteres de comando SQL criada a partir da entrada do usuário é vulnerável a ataques de injeção de SQL. |
CA2101: Especifique o empacotamento para argumentos de seqüência de caracteres de P/Invoke. |
Uma plataforma chamar membros permite 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: Catch não CLSCompliant exceções nos manipuladores gerais |
Um membro em um assembly que não está marcado com 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 a seguir. |
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 enquanto a demanda está ativa. Use a segurança declarativa, sempre que possível. |
|
CA2104: Não declarar os 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. |
Quando você aplica o modificador de read-only (somente leitura em Visual Basic) a um campo que contém uma matriz, o campo não pode ser alterado para fazer referência a uma matriz diferente. No entanto, os elementos da matriz armazenada em um campo somente leitura podem ser alterados. |
|
Um método declara que uma permissão e verificações de segurança não são executadas no chamador. Declarar uma permissão de segurança sem executar qualquer verificações de segurança podem deixar uma fraqueza de segurança pode ser explorada em seu código. |
|
Usando o PermitOnly método e ações de segurança de CodeAccessPermission.Deny devem ser usadas somente por aqueles com conhecimento avançado dos.NET Framework security. Código que usa essas ações de segurança deve passar por uma revisão de segurança. |
|
CA2108: Revisão de segurança declarativos sobre tipos de valor |
Um tipo de valor público ou protegido é protegido pelas demandas de Link ou de acesso a dados. |
Um método de manipulação de eventos do público ou protegido foi detectado. Métodos de manipulação de eventos não devem ser expostos a menos que absolutamente necessário. |
|
Um ponteiro não é particular, interno ou somente leitura. Código mal-intencionado pode alterar o valor do ponteiro, potencialmente permitindo o acesso a locais arbitrários na memória ou causando falhas de aplicativo ou sistema. |
|
Um tipo de público ou protegido contém campos públicos e é protegido pelas demandas de Link. Se o código possui 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: 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. |
Essa regra detecta erros que podem ocorrer devido um recurso não gerenciado está sendo finalizado enquanto ainda estiver sendo usado no código não gerenciado. |
|
Quando o atributo APTCA (AllowPartiallyTrustedCallers) 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: Tipos APTCA só devem estender tipos básicos de APTCA |
Quando o atributo APTCA (AllowPartiallyTrustedCallers) está presente em um assembly totalmente confiável e um tipo no assembly herda a partir de um tipo que não permite chamadores parcialmente confiáveis, é possível a uma exploração de segurança. |
CA2118: Revise o uso de SuppressUnmanagedCodeSecurityAttribute |
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 plataforma ou de interoperabilidade COM. Esse atributo é usado principalmente para aumentar o desempenho; No entanto, o desempenho ganha vêm com consideráveis riscos à segurança. |
CA2119: Lacrar métodos que satisfaçam às interfaces privadas |
Um tipo de público herdável fornece uma implementação do método substituível de uma interface interna do (amigo em Visual Basic). Para corrigir uma violação desta regra, impedir que o método seja substituído fora do assembly. |
Esse tipo tem um construtor que leva a um objeto de System.Runtime.Serialization.SerializationInfo e um objeto de System.Runtime.Serialization.StreamingContext (a assinatura do construtor de serialização). Este construtor não é protegido por uma verificação de segurança, mas um ou mais dos construtores regulares no tipo estão protegidos. |
|
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 são executadas no construtor, isso pode causar um comportamento inesperado. |
|
CA2122: Não exponha indiretamente métodos com 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: Demandas de link de substituição devem ser idênticas a 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: Quebrar vulnerável finalmente tente cláusulas no exterior |
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: As demandas de link do tipo exigem demandas de herança |
Um tipo de público sem lacre é protegido com uma demanda de link e tem um método substituível. O tipo nem o método é protegido com uma demanda de herança. |
CA2136: Os membros não devem ter anotações conflitantes de transparência |
O código Critical não pode ocorrer em um assembly transparente para 100%. Esta regra analisa os assemblies de 100% transparentes para quaisquer anotações SecurityCritical no tipo, no campo e no método. |
CA2147: Métodos transparentes não podem usar a segurança asserts |
Esta regra analisa todos os métodos e tipos em um assembly que é um dos 100% transparente ou misto transparente/crítica e sinaliza qualquer uso declarativo ou imperativo de Assert. |
CA2140: Código Transparent não deve fazer referência a itens essenciais de segurança |
Métodos marcados com SecurityTransparentAttribute chamam membros não públicos 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 não públicos não marcados como SecurityTreatAsSafe. |
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. |
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 nã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. |
|
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. |