CA1506: Übermäßige Klassenkopplungen vermeiden.

Eigenschaft Wert
Regel-ID CA1506
Titel Übermäßige Klassenkopplungen vermeiden.
Kategorie Wartbarkeit
Fix führt oder führt nicht zur Unterbrechung Breaking
Standardschwellenwert Typen: 95, andere Symbole: 40
Standardmäßig in .NET 8 aktiviert Nein

Ursache

Ein Typ, eine Methode, ein Feld, eine Eigenschaft oder ein Ereignis ist mit vielen anderen Typen gekoppelt. Compiler-generierte Typen sind von dieser Metrik ausgeschlossen.

Regelbeschreibung

Durch diese Regel wird die Kopplung zwischen Klassen gemessen, indem die eindeutigen Typverweise gezählt werden, die ein Typ, eine Methode, ein Feld, eine Eigenschaft oder ein Ereignis enthält. Der standardmäßige Kopplungsschwellenwert beträgt 95 für Typen und 40 für andere Arten von Symbolen, und die Schwellenwerte sind konfigurierbar.

Typen, Methoden und andere Symbole mit einem hohen Grad an Kopplung zwischen Klassen lassen sich möglicherweise nur schwer warten. Es empfiehlt sich, Typen, Methoden und andere Symbole zu nutzen, die ein geringes Maß an Kopplung und ein hohes Maß an Kohäsion aufweisen.

Behandeln von Verstößen

Um diese Verletzung zu beheben, versuchen Sie, den Typ oder die Methode umzugestalten, um die Anzahl der Typen, mit denen Sie gekoppelt ist, zu reduzieren.

Wann sollten Warnungen unterdrückt werden?

Sie können diese Warnung unterdrücken, wenn der Typ oder die Methode trotz der hohen Anzahl von Abhängigkeiten von anderen Typen 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 CA1506
// The code that's violating the rule is on this line.
#pragma warning restore CA1506

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.CA1506.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:

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

    In diesem Beispiel ist die Regel so konfiguriert, dass sie ausgelöst wird, wenn eine Methode mehr als 60 eindeutige Typverweise oder ein Typ mehr als 120 eindeutige Typverweise enthält. Mit dieser Konfigurationsdatei kennzeichnet die Regel weiterhin Felder, Eigenschaften und Ereignisse, deren Kopplung zwischen Klassen kleiner als der Standardschwellenwert (40) ist.

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

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

Siehe auch