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 8'de 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.

Dekont

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 noneolarak 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
  1. CodeMetricsConfig.txt adlı bir metin dosyası oluşturun.

  2. İ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.

  3. Proje dosyasında yapılandırma dosyasının derleme eylemini AdditionalFiles olarak işaretleyin. Örneğin:

    <ItemGroup>
      <AdditionalFiles Include="CodeMetricsConfig.txt" />
    </ItemGroup>
    

Ayrıca bkz.