Udostępnij za pośrednictwem


CA1506: Unikaj nadmiernego sprzężenia klas

Właściwości Wartość
Identyfikator reguły CA1506
Stanowisko Unikaj nadmiernego sprzężenia klas
Kategoria Łatwość konserwacji
Poprawka powodująca niezgodność lub niezgodność Kluczowa
Domyślny próg Typy: 95 Inne symbole: 40
Domyślnie włączone na platformie .NET 8 Nie.

Przyczyna

Typ, metoda, pole, właściwość lub zdarzenie jest powiązane z wieloma innymi typami. Typy generowane przez kompilator są wykluczone z tej metryki.

Opis reguły

Ta reguła mierzy sprzężenie klas przez zliczanie unikatowych odwołań typu, które zawiera typ, metoda, pole, właściwość lub zdarzenie. Domyślny próg sprzężenia wynosi 95 dla typów i 40 dla innych rodzajów symboli, a progi można konfigurować.

Typy, metody i inne symbole, które mają wysoki stopień sprzężenia klasy, mogą być trudne do utrzymania. Dobrym rozwiązaniem jest posiadanie typów, metod i innych symboli, które wykazują niskie sprzężenie i wysoką spójność.

Jak naprawić naruszenia

Aby naprawić to naruszenie, spróbuj przeprojektować typ lub metodę, aby zmniejszyć liczbę typów, do których jest ona połączona.

Kiedy pomijać ostrzeżenia

To ostrzeżenie można pominąć, gdy typ lub metoda jest traktowana jako zachowalna pomimo dużej liczby zależności od innych typów.

Uwaga

Jeśli wszystkie następujące elementy mają zastosowanie, mogą pojawić się ostrzeżenia fałszywie dodatnie z tej reguły:

  • Używasz programu Visual Studio 2022 w wersji 17.5 lub nowszej ze starszą wersją zestawu .NET SDK, czyli platformą .NET 6 lub starszą.
  • Używasz analizatorów z zestawu .NET 6 SDK lub starszej wersji pakietów analizatora, takich jak Microsoft.CodeAnalysis.FxCopAnalyzers.

Wyniki fałszywie dodatnie są spowodowane zmianą powodującą niezgodność w kompilatorze języka C#. Rozważ użycie nowszego analizatora zawierającego poprawkę dla ostrzeżeń fałszywie dodatnich. Przeprowadź uaktualnienie do wersji Microsoft.CodeAnalysis.NetAnalyzers w wersji 7.0.0-preview1.22464.1 lub nowszej lub użyj analizatorów z zestawu .NET 7 SDK.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

#pragma warning disable CA1506
// The code that's violating the rule is on this line.
#pragma warning restore CA1506

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

[*.{cs,vb}]
dotnet_diagnostic.CA1506.severity = none

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Konfigurowanie progu

Można skonfigurować próg, przy którym ta reguła jest uruchamiana i jakiego rodzaju symbole mają być analizowane. Dozwolone rodzaje symboli to:

  • Assembly
  • Namespace
  • Type
  • Method
  • Field
  • Event
  • Property
  1. Utwórz plik tekstowy o nazwie CodeMetricsConfig.txt.

  2. Dodaj żądany próg do pliku tekstowego w następującym formacie:

    CA1506(Method): 60
    CA1506(Type): 120
    

    W tym przykładzie reguła jest skonfigurowana do uruchamiania, gdy metoda ma więcej niż 60 unikatowych odwołań do typu lub typ ma więcej niż 120 unikatowych odwołań do typów. W przypadku tego pliku konfiguracji reguła będzie nadal flagować pola, właściwości i zdarzenia, których sprzężenie klas jest większe niż domyślny próg (40).

  3. W pliku projektu oznacz akcję kompilacji pliku konfiguracji jako AdditionalFiles. Na przykład:

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

Zobacz też