CA1700: Não nomeie valores de enum 'Reservado'
Propriedade | valor |
---|---|
ID da regra | CA1700 |
Cargo | Não nomeie valores de enum como 'Reservado' |
Categoria | Atribuição de nomes |
A correção está quebrando ou não quebrando | Quebrando |
Habilitado por padrão no .NET 8 | Não |
Causa
O nome de um membro de enumeração contém a palavra "reservado".
Descrição da regra
Esta regra pressupõe que um membro de enumeração que tenha um nome que contenha "reservado" não é usado atualmente, mas é um espaço reservado a ser renomeado ou removido em uma versão futura. Renomear ou remover um membro é uma mudança de quebra. Você não deve esperar que os usuários ignorem um membro apenas porque seu nome contém "reservado", nem você pode confiar nos usuários para ler ou respeitar a documentação. Além disso, como os membros reservados aparecem em navegadores de objetos e ambientes inteligentes de desenvolvimento integrado, eles podem causar confusão sobre quais membros estão realmente sendo usados.
Em vez de usar um membro reservado, adicione um novo membro à enumeração na versão futura. Na maioria dos casos, a adição do novo membro não é uma alteração de rutura, desde que a adição não faça com que os valores dos membros originais mudem.
Em um número limitado de casos, a adição de um membro é uma mudança de rutura, mesmo quando os membros originais mantêm seus valores originais. Principalmente, o novo membro não pode ser retornado de caminhos de código existentes sem quebrar chamadores que usam uma instrução (Select
no Visual Basic) no valor de retorno que engloba toda a lista de membros e que lançam uma switch
exceção no caso padrão. Uma preocupação secundária é que o código do cliente pode não lidar com a alteração no comportamento de métodos de reflexão, como System.Enum.IsDefined. Assim, se o novo membro tiver que ser retornado de métodos existentes ou uma incompatibilidade de aplicativo conhecida ocorrer devido ao uso de reflexão deficiente, a única solução ininterrupta é:
Adicione uma nova enumeração que contenha os membros original e novo.
Marque a enumeração original com o System.ObsoleteAttribute atributo.
Siga o mesmo procedimento para quaisquer tipos ou membros visíveis externamente que exponham a enumeração original.
Como corrigir violações
Para corrigir uma violação desta regra, remova ou renomeie o membro.
Quando suprimir avisos
É seguro suprimir um aviso dessa regra para um membro que é usado atualmente ou para bibliotecas que foram enviadas anteriormente.
Suprimir um aviso
Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable CA1700
// The code that's violating the rule is on this line.
#pragma warning restore CA1700
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA1700.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.
Configurar código para análise
Use a opção a seguir para configurar em quais partes da sua base de código executar essa regra.
Você pode configurar essa opção apenas para esta regra, para todas as regras às quais ela se aplica ou para todas as regras nesta categoria (Nomenclatura) às quais ela se aplica. Para obter mais informações, consulte Opções de configuração da regra de qualidade de código.
Incluir superfícies de API específicas
Você pode configurar em quais partes da sua base de código executar essa regra, com base em sua acessibilidade. Por exemplo, para especificar que a regra deve ser executada somente na superfície de API não pública, adicione o seguinte par chave-valor a um arquivo .editorconfig em seu projeto:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Regras conexas
CA2217: Não marcar enums com FlagsAttribute
CA1712: Não prefixar valores de enum com nome de tipo
CA1028: O armazenamento de enum deve ser Int32