CA2217: Non contrassegnare le enumerazioni con FlagsAttribute

Proprietà valore
ID regola CA2217
Titolo Non contrassegnare le enumerazioni con FlagsAttribute
Categoria Utilizzo
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 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

CA1027: Contrassegnare le enumerazioni con FlagsAttribute

Vedi anche