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
Utwórz plik tekstowy o nazwie CodeMetricsConfig.txt.
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).
W pliku projektu oznacz akcję kompilacji pliku konfiguracji jako AdditionalFiles. Na przykład:
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>