Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| Egenskap | Värde |
|---|---|
| Regel-ID | CA2217 |
| Title | Markera inte uppräkningar med FlagsAttribute |
| Kategori | Användning |
| Korrigeringen är antingen invasiv eller icke-invasiv | Oumbrytbar |
| Aktiverad som standard i .NET 10 | Nej |
| Tillämpliga språk | C# och Visual Basic |
Orsak
En uppräkning markeras med FlagsAttribute och den har ett eller flera värden som inte är potenser av 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 innehålla FlagsAttribute om varje värde som definierats i uppräkningen är en tvåpotens eller en kombination av de definierade värdena.
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 ytor för API:er
Du kan konfigurera vilka delar av kodbasen som ska köra den här regeln baserat på deras tillgänglighet genom att ange alternativet api_surface. 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
Anteckning
Ersätt den XXXX delen av CAXXXX med ID:t för den tillämpliga regeln.
Exempel
Följande kod visar en uppräkning, , Colorsom innehåller värdet 3. 3 är varken en potens av två eller en kombination av några 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
Relaterade regler
CA1027: Markera uppräkningar med FlagsAttribute