CA1506: Aşırı sınıf bağlantısından kaçın
Özellik | Değer |
---|---|
Kural Kimliği | CA1506 |
Başlık | Aşırı sınıf bağlantısından kaçının |
Kategori | Bakýmýný |
Hataya neden olan veya bozulmayan düzeltme | Yeni |
Varsayılan eşik | Türler: 95 Diğer simgeler: 40 |
.NET 9'da varsayılan olarak etkin | Hayır |
Neden
Bir tür, yöntem, alan, özellik veya olay diğer birçok türle birleştirilmiştir. Derleyici tarafından oluşturulan türler bu ölçümün dışında tutulur.
Kural açıklaması
Bu kural, bir tür, yöntem, alan, özellik veya olayın içerdiği benzersiz tür başvurularının sayısını sayarak sınıf eşleştirmesini ölçer. Varsayılan bağlama eşiği türler için 95, diğer sembol türleri için 40'tır ve eşikler yapılandırılabilir.
Yüksek düzeyde sınıf bağlantısına sahip türlerin, yöntemlerin ve diğer simgelerin bakımını yapmak zor olabilir. Düşük kavrama ve yüksek uyum sergileyen türler, yöntemler ve diğer simgelere sahip olmak iyi bir uygulamadır.
İhlalleri düzeltme
Bu ihlali düzeltmek için, bağlı olduğu tür sayısını azaltmak için türü veya yöntemi yeniden tasarlamayı deneyin.
Uyarıların ne zaman bastırılması gerekiyor?
Türün veya yöntemin diğer türlerdeki çok sayıda bağımlılığına rağmen korunabilir olarak kabul edildiğinde bu uyarıyı gizleyebilirsiniz.
Not
Aşağıdakilerin tümü geçerliyse bu kuraldan hatalı pozitif uyarılar görebilirsiniz:
- Visual Studio 2022 sürüm 17.5 veya üzerini .NET SDK'nın daha eski bir sürümüyle ( .NET 6 veya önceki bir sürüm) kullanıyorsunuz.
- .NET 6 SDK'sından çözümleyicileri veya çözümleyici paketlerinin Microsoft.CodeAnalysis.FxCopAnalyzers gibi eski bir sürümünü kullanıyorsunuz.
Hatalı pozitifler, C# derleyicisindeki hataya neden olan bir değişiklik nedeniyledir. Hatalı pozitif uyarıların düzeltmesini içeren daha yeni bir çözümleyici kullanmayı düşünün. Microsoft.CodeAnalysis.NetAnalyzers sürüm 7.0.0-preview1.22464.1 veya daha yeni bir sürüme yükseltin veya .NET 7 SDK'sından çözümleyicileri kullanın.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA1506
// The code that's violating the rule is on this line.
#pragma warning restore CA1506
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1506.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Eşiği yapılandırma
Bu kuralın tetiklendiği eşiği ve analiz için simge türlerini yapılandırabilirsiniz. İzin verilebilen simge türleri şunlardır:
Assembly
Namespace
Type
Method
Field
Event
Property
CodeMetricsConfig.txt adlı bir metin dosyası oluşturun.
İstenen eşiği metin dosyasına aşağıdaki biçimde ekleyin:
CA1506(Method): 60 CA1506(Type): 120
Bu örnekte kural, bir yöntemin 60'tan fazla benzersiz tür başvurusu olduğunda veya bir türün 120'den fazla benzersiz tür başvurusu olduğunda tetiklendirilecek şekilde yapılandırılır. Bu yapılandırma dosyasıyla kural, sınıf bağlaması varsayılan eşikten (40) büyük olan alanlara, özelliklere ve olaylara bayrak eklemeye devam eder.
Proje dosyasında yapılandırma dosyasının derleme eylemini AdditionalFiles olarak işaretleyin. Örneğin:
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>