Partilhar via


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 é:

  1. Adicione uma nova enumeração que contenha os membros original e novo.

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

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

CA1008: Enums deve ter valor zero

CA1027: Marcar enums com FlagsAttribute