CA2217: Ne jelölje meg a számokat a FlagsAttribute használatával
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA2217 |
Cím | Ne jelölje meg a számokat a FlagsAttribute használatával |
Kategória | Használat |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Nem |
Ok
Az enumerálást a rendszer megjelöli FlagsAttribute , és egy vagy több olyan értékkel rendelkezik, amely nem két vagy a többi definiált érték kombinációja az enumerálásban.
Alapértelmezés szerint ez a szabály csak külsőleg látható enumerálásokat tekint meg, de ez konfigurálható.
Szabály leírása
Az enumerálásnak csak akkor lehet FlagsAttribute jelen, ha az enumerálásban definiált értékek két vagy több meghatározott érték kombinációjának hatványai.
Szabálysértések kijavítása
A szabály megsértésének kijavításához távolítsa el FlagsAttribute az enumerálásból.
Mikor kell letiltani a figyelmeztetéseket?
Ne tiltsa el a szabály figyelmeztetését.
Kód konfigurálása elemzéshez
A következő beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa ezt a szabályt.
Ezt a beállítást konfigurálhatja csak erre a szabályra, az összes szabályra, vagy az ebben a kategóriában (Használat) érvényes összes szabályra. További információ: Kódminőségi szabály konfigurációs beállításai.
Adott API-felületek belefoglalása
A kódbázis azon részeit konfigurálhatja, amelyeken futtathatja ezt a szabályt az akadálymentességük alapján. Ha például meg szeretné adni, hogy a szabály csak a nem nyilvános API-felületen fusson, adja hozzá a következő kulcs-érték párot a projekt egyik .editorconfig fájljához:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Példák
Az alábbi kód egy számbavételt jelenít meg, Color
amely a 3 értéket tartalmazza. A 3 nem két vagy a definiált értékek kombinációja. Az Color
enumerálást nem szabad megjelölni a következővel 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
Az alábbi kód egy enumerálást jelenít meg, Days
amely megfelel a következőkkel FlagsAttributevaló megjelölés követelményeinek:
[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
Kapcsolódó szabályok
CA1027: Számjelek megjelölése FlagsAttribute használatával