Condividi tramite


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

CA1027: Contrassegnare le enumerazioni con FlagsAttribute

Vedi anche