CA2217: Non contrassegnare le enumerazioni con FlagsAttribute
Proprietà | valore |
---|---|
ID regola | CA2217 |
Title | Non contrassegnare le enumerazioni con FlagsAttribute |
Categoria | Utilizzo |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | No |
Causa
Un'enumerazione è contrassegnata con FlagsAttribute e ha uno o più valori che non sono poteri di due o una combinazione degli altri valori definiti nell'enumerazione.
Per impostazione predefinita, questa regola esamina solo enumerazioni visibili esternamente, ma è configurabile.
Descrizione regola
Un'enumerazione deve essere FlagsAttribute presente solo se ogni valore definito nell'enumerazione è una potenza di due o una combinazione di valori definiti.
Come correggere le violazioni
Per correggere una violazione di questa regola, rimuovere FlagsAttribute dall'enumerazione .
Quando eliminare gli avvisi
Non escludere un avviso da questa regola.
Configurare il codice da analizzare
Usare l'opzione seguente per configurare le parti della codebase in cui eseguire questa regola.
È possibile configurare questa opzione solo per questa regola, per tutte le regole a cui si applica o per tutte le regole in questa categoria (utilizzo) a cui si applica. Per altre informazioni, vedere Opzioni di configurazione delle regole di qualità del codice.
Includere superfici API specifiche
È possibile configurare le parti della codebase in modo da eseguire questa regola in base alla relativa accessibilità impostando l'opzione api_surface. Ad esempio, per specificare che la regola deve essere eseguita solo sulla superficie dell'API non pubblica, aggiungere la coppia chiave-valore seguente a un file con estensione editorconfig nel progetto:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Nota
Sostituire la parte XXXX
di CAXXXX
con l'ID della regola applicabile.
Esempi
Il codice seguente illustra un'enumerazione , Color
, che contiene il valore 3. 3 non è una potenza di due o una combinazione di uno dei valori definiti. L'enumerazione Color
non deve essere contrassegnata con FlagsAttribute.
// Violates this rule
[FlagsAttribute]
public enum Color
{
None = 0,
Red = 1,
Orange = 3,
Yellow = 4
}
Imports System
Namespace Samples
' Violates this rule
<FlagsAttribute()> _
Public Enum Color
None = 0
Red = 1
Orange = 3
Yellow = 4
End Enum
End Namespace
Il codice seguente illustra un'enumerazione , Days
, che soddisfa i requisiti per essere contrassegnati con FlagsAttribute:
[FlagsAttribute]
public enum Days
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
All = Monday | Tuesday | Wednesday | Thursday | Friday
}
Imports System
Namespace Samples
<FlagsAttribute()> _
Public Enum Days
None = 0
Monday = 1
Tuesday = 2
Wednesday = 4
Thursday = 8
Friday = 16
All = Monday Or Tuesday Or Wednesday Or Thursday Or Friday
End Enum
End Namespace
Regole correlate
CA1027: Contrassegnare le enumerazioni con FlagsAttribute