Share via


CA1506: Undvik överdriven klasskoppling

Property Värde
Regel-ID CA1506
Rubrik Undvik överdriven klasskoppling
Kategori Underhåll
Korrigeringen är icke-bakåtkompatibel Bryta
Standardtröskelvärde Typer: 95 andra symboler: 40
Aktiverad som standard i .NET 8 Nej

Orsak

En typ, metod, fält, egenskap eller händelse är kopplad till många andra typer. Kompilatorgenererade typer undantas från det här måttet.

Regelbeskrivning

Den här regeln mäter klasskoppling genom att räkna antalet unika typreferenser som en typ, metod, fält, egenskap eller händelse innehåller. Standardtröskelvärdet för koppling är 95 för typer och 40 för andra symboltyper, och tröskelvärdena kan konfigureras.

Typer, metoder och andra symboler som har hög klasskoppling kan vara svåra att underhålla. Det är en bra idé att ha typer, metoder och andra symboler som uppvisar låg koppling och hög sammanhållning.

Så här åtgärdar du överträdelser

Om du vill åtgärda den här överträdelsen kan du försöka göra om typen eller metoden för att minska antalet typer som den är kopplad till.

När du ska ignorera varningar

Du kan ignorera den här varningen när typen eller metoden anses vara underhållsbar trots det stora antalet beroenden för andra typer.

Kommentar

Du kan se falska positiva varningar från den här regeln om alla följande gäller:

  • Du använder Visual Studio 2022 version 17.5 eller senare med en äldre version av .NET SDK, dvs. .NET 6 eller tidigare.
  • Du använder analysverktygen från .NET 6 SDK eller en äldre version av analyspaketen, till exempel Microsoft.CodeAnalysis.FxCopAnalyzers.

Falska positiva identifieringar beror på en icke-bakåtkompatibel ändring i C#-kompilatorn. Överväg att använda en nyare analysator som innehåller korrigeringen för falska positiva varningar. Uppgradera till Microsoft.CodeAnalysis.NetAnalyzers version 7.0.0-preview1.22464.1 eller senare eller använd analysverktygen från .NET 7 SDK.

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

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

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

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

Mer information finns i Så här utelämnar du kodanalysvarningar.

Konfigurera tröskelvärde

Du kan konfigurera tröskelvärdet där den här regeln utlöses och vilka typer av symboler som ska analyseras. De tillåtna symboltyperna är:

  • Assembly
  • Namespace
  • Type
  • Method
  • Field
  • Event
  • Property
  1. Skapa en textfil med namnet CodeMetricsConfig.txt.

  2. Lägg till det önskade tröskelvärdet i textfilen i följande format:

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

    I det här exemplet konfigureras regeln att utlösas när en metod har fler än 60 referenser av unik typ eller om en typ har fler än 120 unika typreferenser. Med den här konfigurationsfilen fortsätter regeln att flagga fält, egenskaper och händelser vars klasskoppling är större än standardtröskelvärdet (40).

  3. Markera konfigurationsfilens byggåtgärd som AdditionalFiles i projektfilen. Till exempel:

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

Se även