CA2217: Numaralandırmaları FlagsAttribute ile işaretlemeyin
Özellik | Değer |
---|---|
Kural Kimliği | CA2217 |
Başlık | Sabit listelerini FlagsAttribute ile işaretlemeyin |
Kategori | Kullanım |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Hayır |
Neden
Bir sabit listesi ile FlagsAttribute işaretlenir ve sabit listesi üzerinde iki veya diğer tanımlı değerlerin birleşimi olmayan bir veya daha fazla değere sahiptir.
Varsayılan olarak, bu kural yalnızca dışarıdan görünen numaralandırmalara bakar, ancak bu yapılandırılabilir.
Kural açıklaması
Numaralandırmanın mevcut olması FlagsAttribute için numaralandırmada tanımlanan her değerin iki veya tanımlı değerlerin bir bileşimi olması gerekir.
İhlalleri düzeltme
Bu kuralın ihlalini düzeltmek için numaralandırmadan kaldırın FlagsAttribute .
Uyarıların ne zaman bastırılması gerekiyor?
Bu kuraldan uyarıyı bastırmayın.
Çözümlemek için kod yapılandırma
Bu kuralın kod tabanınızın hangi bölümlerinde çalıştırılacaklarını yapılandırmak için aşağıdaki seçeneği kullanın.
Bu seçeneği yalnızca bu kural, geçerli olduğu tüm kurallar veya bu kategorideki (Kullanım) tüm kurallar için yapılandırabilirsiniz. Daha fazla bilgi için bkz . Kod kalitesi kuralı yapılandırma seçenekleri.
Belirli API yüzeylerini ekleme
api_surface seçeneğini ayarlayarak, bu kuralın erişilebilirliği temelinde kod tabanınızın hangi bölümlerinde çalıştırılacaklarını yapılandırabilirsiniz. Örneğin, kuralın yalnızca genel olmayan API yüzeyinde çalıştırılması gerektiğini belirtmek için projenizdeki bir .editorconfig dosyasına aşağıdaki anahtar-değer çiftini ekleyin:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Not
XXXX
CAXXXX
bölümünü geçerli kuralın kimliğiyle değiştirin.
Örnekler
Aşağıdaki kod, Color
3 değerini içeren bir numaralandırmayı gösterir. 3, iki güç veya tanımlı değerlerden herhangi birinin birleşimi değildir. Numaralandırma Color
ile FlagsAttributeişaretlenmemelidir.
// 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
Aşağıdaki kod, Days
ile FlagsAttributeişaretlenme gereksinimlerini karşılayan bir numaralandırmayı gösterir:
[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
İlgili kurallar
CA1027: Numaralandırmaları FlagsAttribute ile işaretleyin