CA1505: Unikaj kodu niemożliwego w utrzymaniu

Właściwości Wartość
Identyfikator reguły CA1505
Stanowisko Unikaj kodu trudnego w utrzymaniu
Kategoria Łatwość konserwacji
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślny próg 10
Domyślnie włączone na platformie .NET 8 Nie.

Przyczyna

Typ, metoda, pole, właściwość lub zdarzenie ma niską wartość indeksu konserwacji.

Opis reguły

Reguła zgłasza naruszenie, gdy indeks konserwacji typu, metody, pola, właściwości lub zdarzenia jest mniejszy niż 10. Można jednak skonfigurować próg.

Indeks konserwacji jest obliczany przy użyciu następujących metryk: wierszy kodu, woluminu programu i złożoności cyklatycznej. (Wolumin programowy to miara trudności w zrozumieniu typu lub metody opartej na liczbie operatorów i operandów w kodzie. Złożoność cyklatyczna to miara złożoności strukturalnej typu lub metody. Aby dowiedzieć się więcej na temat metryk kodu, zobacz Mierzenie złożoności i łatwość utrzymania kodu zarządzanego.

Indeks niskiej konserwacji wskazuje, że typ lub metoda prawdopodobnie jest trudna do utrzymania i byłaby dobrym kandydatem do przeprojektowania.

Jak naprawić naruszenia

Aby naprawić to naruszenie, przeprojektuj typ lub metodę i spróbuj podzielić go na mniejsze i bardziej ukierunkowane typy lub metody.

Kiedy pomijać ostrzeżenia

To ostrzeżenie można pominąć, gdy nie można podzielić typu lub metody lub jest uznawane za możliwe do utrzymania pomimo dużego rozmiaru.

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 CA1505
// The code that's violating the rule is on this line.
#pragma warning restore CA1505

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

[*.{cs,vb}]
dotnet_diagnostic.CA1505.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:

    CA1505: 20
    

    W tym przykładzie reguła jest skonfigurowana do uruchamiania, gdy indeks konserwacji typu, metody, pola, właściwości lub zdarzenia jest mniejszy niż 20.

    CA1505(Method): 5
    CA1505(Type): 15
    

    W tym przykładzie reguła jest skonfigurowana do uruchamiania, gdy indeks konserwacji metody jest mniejszy niż 5 lub indeks konserwacji typu jest mniejszy niż 15. W przypadku tego pliku konfiguracji reguła będzie nadal flagować pola, właściwości i zdarzenia, których indeks konserwacji jest mniejszy niż domyślny próg (10).

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

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

Zobacz też