CA1505: Nicht wartbaren Code vermeiden.

Eigenschaft Wert
Regel-ID CA1505
Titel Nicht wartbaren Code vermeiden.
Kategorie Wartbarkeit
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardschwellenwert 10
Standardmäßig in .NET 8 aktiviert Nein

Ursache

Ein Typ, eine Methode, ein Feld, eine Eigenschaft oder ein Ereignis weist einen niedrigen Wert für den Wartbarkeitsindex auf.

Regelbeschreibung

Die Regel meldet einen Verstoß, wenn der Wartbarkeitsindex eines Typs, einer Methode, eines Felds, einer Eigenschaft oder eines Ereignisses kleiner als 10 ist. Sie können den Schwellenwert jedoch konfigurieren.

Der Wartbarkeitsindex wird mithilfe der folgenden Metriken berechnet: Codezeilen, Programmvolumen und zyklomatische Komplexität. Das Programmvolumen ist ein Maß für die Schwierigkeit, einen Typ oder eine Methode zu verstehen, der bzw. die auf der Anzahl von Operatoren und Operanden im Code basiert. Die zyklomatische Komplexität ist ein Maß für die strukturelle Komplexität des Typs oder der Methode. Weitere Informationen zu Codemetriken finden Sie unter Messen der Komplexität und Wartung von verwaltetem Code.

Ein niedriger Wartbarkeitsindex zeigt an, dass ein Typ oder eine Methode wahrscheinlich schwer zu verwalten ist und geeignet für einen Neuentwurf wäre.

Behandeln von Verstößen

Entwerfen Sie zum Beheben dieses Verstoßes den Typ oder die Methode neu und versuchen Sie, ihn in kleinere und stärker fokussierte Typen oder Methoden aufzuteilen.

Wann sollten Warnungen unterdrückt werden?

Sie können diese Warnung unterdrücken, wenn der Typ oder die Methode nicht geteilt werden kann oder trotz ihrer großen Größe als wartbar eingestuft wird.

Hinweis

Möglicherweise werden falsch positive Warnungen von dieser Regel angezeigt, wenn alle der folgenden Punkte zutreffen:

  • Sie verwenden Visual Studio 2022, Version 17.5 oder höher, mit einer älteren Version des .NET SDK, d. h. .NET 6 oder früher.
  • Sie verwenden die Analysetools aus dem .NET 6 SDK oder einer älteren Version der Analysetoolpakete, z. B. Microsoft. CodeAnalysis.FxCopAnalyzers.

Die falsch positiven Warnungen sind auf einen Breaking Change im C#-Compiler zurückzuführen. Erwägen Sie die Verwendung von neueren Analysetools, die den Hotfix für falsch positive Warnungen enthalten. Führen Sie ein Upgrade auf Microsoft. CodeAnalysis.NetAnalyzers Version 7.0.0-preview1.22464.1 oder höher aus, oder verwenden Sie die Analysetools aus dem .NET 7 SDK.

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

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

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none fest.

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

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Konfigurieren des Schwellenwerts

Sie können sowohl den Schwellenwert, an dem diese Regel ausgelöst wird, als auch die Arten der zu analysierenden Symbole konfigurieren. Folgende Arten von Symbolen sind zulässig:

  • Assembly
  • Namespace
  • Type
  • Method
  • Field
  • Event
  • Property
  1. Erstellen Sie eine Textdatei mit dem Namen CodeMetricsConfig.txt.

  2. Fügen Sie der Textdatei den gewünschten Schwellenwert im folgenden Format hinzu:

    CA1505: 20
    

    In diesem Beispiel ist die Regel so konfiguriert, dass sie ausgelöst wird, wenn der Wartbarkeitsindex eines Typs, einer Methode, eines Felds, einer Eigenschaft oder eines Ereignisses kleiner als 20 ist.

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

    In diesem Beispiel ist die Regel so konfiguriert, dass sie ausgelöst wird, wenn der Wartbarkeitsindex einer Methode kleiner als 5 oder der Wartbarkeitsindex eines Typs kleiner als 15 ist. Mit dieser Konfigurationsdatei kennzeichnet die Regel weiterhin Felder, Eigenschaften und Ereignisse, deren Wartbarkeitsindex kleiner als der Standardschwellenwert (10) ist.

  3. Markieren Sie in der Projektdatei die Buildaktion der Konfigurationsdatei als AdditionalFiles. Beispiel:

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

Siehe auch