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 all'accessibilità. 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
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