Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Propriedade | Valor |
|---|---|
| ID da regra | CA1711 |
| Título | Identificadores não devem ter um sufixo incorreto |
| Categoria | Nomenclatura |
| Correção interruptiva ou sem interrupção | Quebra |
| Habilitado por padrão no .NET 10 | Não |
Causa
Um identificador tem um sufixo incorreto.
Por padrão, essa regra apenas analisa os identificadores visíveis externamente, mas isso é configurável.
Descrição da regra
Por convenção, apenas os nomes de tipos que estendem 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.
A tabela a seguir lista os sufixos reservados, bem como os tipos base e as interfaces com os quais eles estão associados.
| Sufixo | Tipo base/Interface |
|---|---|
Attribute |
System.Attribute |
Collection |
System.Collections.ICollection System.Collections.IEnumerable System.Collections.Queue System.Collections.Stack System.Collections.Generic.ICollection<T> System.Data.DataSet System.Data.DataTable |
Dictionary |
System.Collections.IDictionary System.Collections.Generic.IDictionary<TKey,TValue> |
EventArgs |
System.EventArgs |
EventHandler |
Um delegado do manipulador de eventos |
Exception |
System.Exception |
Permission |
System.Security.IPermission |
Queue |
System.Collections.Queue |
Stack |
System.Collections.Stack |
Stream |
System.IO.Stream |
Além disso, os seguintes sufixos não devem ser usados:
DelegateEnum-
Exou um sufixo semelhante para distingui-lo de uma versão anterior do mesmo tipo -
FlagouFlagspara tipos enumerados -
Impl(use no lugar deCore) -
Newse um membro com o mesmo nome, mas sem o sufixoNewjá existir
As convenções de nomenclatura fornecem uma aparência comum para bibliotecas direcionadas ao common language runtime do .NET. Essas convenções reduzem a curva de aprendizado necessária para novas bibliotecas de software e aumentam a confiança do cliente de que a biblioteca foi desenvolvida por alguém com experiência no desenvolvimento de código gerenciado. Para obter mais informações, confira Diretrizes de nomenclatura: classes, structs e interfaces.
Como corrigir violações
Remova o sufixo do nome do tipo.
Example
class BadEmployeeCollection { } // Violates CA1711
// Good
class Employee { }
class GoodEmployeeCollection : ICollection<Employee>
{
// Implementations
}
class Employees { } // Good
Quando suprimir avisos
Não suprima um aviso dessa regra, a menos que o sufixo tenha um significado inequívoco no domínio do aplicativo.
Suprimir um aviso
Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.
#pragma warning disable CA1711
// The code that's violating the rule is on this line.
#pragma warning restore CA1711
Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA1711.severity = none
Para obter mais informações, confira Como suprimir avisos de análise de código.
Configurar código para analisar
Use as opções a seguir para configurar em quais partes da base de código essa regra deve ser executada.
Você pode configurar essas opções apenas para essa regra, para todas as regras às quais elas se aplicam ou para todas as regras nessa categoria (Nomenclatura) às quais elas se aplicam. Para saber mais, confira Opções de configuração de regra de qualidade de código.
Incluir superfícies de API específicas
Você pode configurar em quais partes da base de código executar essa regra, com base em sua acessibilidade, configurando a opção api_surface. Por exemplo, para especificar que a regra deverá ser executada apenas na superfície de API não pública, adicione o seguinte par chave-valor a um arquivo .editorconfig no projeto:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Observação
Substitua a XXXX parte de CAXXXX pela ID da regra aplicável.
Permitir sufixos
Você pode configurar uma lista de sufixos permitidos, com cada sufixo separado pelo caractere de barra vertical ("|"). Por exemplo, para especificar que a regra não deve ser executada em sufixos Sinalizador e Sinalizadores, adicione o seguinte par chave-valor a um arquivo .editorconfig no projeto:
dotnet_code_quality.ca1711.allowed_suffixes = Flag|Flags