Share via


CA2217: Markera inte uppräkningar med FlagsAttribute

Property Värde
Regel-ID CA2217
Rubrik Markera inte uppräkningar med FlagsAttribute
Kategori Användning
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 Nej

Orsak

En uppräkning markeras med FlagsAttribute och den har ett eller flera värden som inte har två eller en kombination av de andra definierade värdena i uppräkningen.

Som standard tittar den här regeln bara på externt synliga uppräkningar, men det kan konfigureras.

Regelbeskrivning

En uppräkning bör bara ha FlagsAttribute visats om varje värde som definierats i uppräkningen är en effekt av två eller en kombination av definierade värden.

Så här åtgärdar du överträdelser

Om du vill åtgärda ett brott mot den här regeln tar du bort FlagsAttribute från uppräkningen.

När du ska ignorera varningar

Ignorera inte en varning från den här regeln.

Konfigurera kod för analys

Använd följande alternativ för att konfigurera vilka delar av kodbasen som regeln ska köras på.

Du kan konfigurera det här alternativet för bara den här regeln, för alla regler som den gäller för eller för alla regler i den här kategorin (användning) som den gäller för. Mer information finns i Konfigurationsalternativ för kodkvalitetsregel.

Inkludera specifika API-ytor

Du kan konfigurera vilka delar av kodbasen som ska köras med den här regeln baserat på deras tillgänglighet. Om du till exempel vill ange att regeln endast ska köras mot den icke-offentliga API-ytan lägger du till följande nyckel/värde-par i en .editorconfig-fil i projektet:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Exempel

Följande kod visar en uppräkning, , Colorsom innehåller värdet 3. 3 är inte två eller en kombination av något av de definierade värdena. Uppräkningen Color ska inte markeras med 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

Följande kod visar en uppräkning, , Dayssom uppfyller kraven för att markeras med 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: Markera uppräkningar med FlagsAttribute

Se även