Share via


CA1505: Niet-onderhoudbare code vermijden

Eigenschappen Weergegeven als
Regel-id CA1505
Titel Onbeheerbare code voorkomen
Categorie Onderhoudbaarheid
Oplossing is brekend of niet-brekend Niet-brekend
Standaarddrempelwaarde 10
Standaard ingeschakeld in .NET 9 Nee

Oorzaak

Een type, methode, veld, eigenschap of gebeurtenis heeft een indexwaarde met een lage onderhoudbaarheid.

Beschrijving van regel

De regel meldt een schending wanneer de onderhoudbaarheidsindex van een type, methode, veld, eigenschap of gebeurtenis kleiner is dan 10. U kunt de drempelwaarde echter configureren.

De index voor onderhoudbaarheid wordt berekend met behulp van de volgende metrische gegevens: coderegels, programmavolume en cyclomatische complexiteit. (Programmavolume is een meting van de moeilijkheid om inzicht te krijgen in een type of methode die is gebaseerd op het aantal operators en operanden in de code. Cyclomatische complexiteit is een meting van de structurele complexiteit van het type of de methode. Meer informatie over metrische codegegevens vindt u in Complexiteit en onderhoudbaarheid van beheerde code meten.

Een index met een lage onderhoudbaarheid geeft aan dat een type of methode waarschijnlijk moeilijk te onderhouden is en een goede kandidaat is om opnieuw te ontwerpen.

Schendingen oplossen

Als u deze schending wilt oplossen, ontwerpt u het type of de methode opnieuw en probeert u het te splitsen in kleinere en meer gerichte typen of methoden.

Wanneer waarschuwingen onderdrukken

U kunt deze waarschuwing onderdrukken wanneer het type of de methode niet kan worden gesplitst of als onderhoudbaar wordt beschouwd ondanks de grote grootte.

Notitie

U ziet mogelijk fout-positieve waarschuwingen van deze regel als alle volgende van toepassing zijn:

  • U gebruikt Visual Studio 2022 versie 17.5 of hoger met een oudere versie van de .NET SDK, dat wil zeggen .NET 6 of eerder.
  • U gebruikt de analyses van de .NET 6 SDK of een oudere versie van de analysepakketten, zoals Microsoft.CodeAnalysis.FxCopAnalyzers.

De fout-positieven zijn te wijten aan een wijziging die fouten veroorzaakt in de C#-compiler. Overweeg om een nieuwere analyse te gebruiken die de oplossing voor de fout-positieve waarschuwingen bevat. Voer een upgrade uit naar Microsoft.CodeAnalysis.NetAnalyzers versie 7.0.0-preview1.22464.1 of hoger of gebruik de analyses van de .NET 7 SDK.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

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

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Drempelwaarde configureren

U kunt de drempelwaarde configureren waarop deze regel wordt geactiveerd en de soorten symbolen die moeten worden geanalyseerd. De toegestane symbooltypen zijn:

  • Assembly
  • Namespace
  • Type
  • Method
  • Field
  • Event
  • Property
  1. Maak een tekstbestand met de naam CodeMetricsConfig.txt.

  2. Voeg de gewenste drempelwaarde toe aan het tekstbestand in de volgende indeling:

    CA1505: 20
    

    In dit voorbeeld is de regel zo geconfigureerd dat deze wordt geactiveerd wanneer de onderhoudbaarheidsindex van een type, methode, veld, eigenschap of gebeurtenis kleiner is dan 20.

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

    In dit voorbeeld is de regel zo geconfigureerd dat deze wordt geactiveerd wanneer de index voor onderhoudbaarheid van een methode kleiner is dan 5 of de onderhoudbaarheidsindex van een type kleiner is dan 15. Met dit configuratiebestand blijft de regel velden, eigenschappen en gebeurtenissen markeren waarvan de index voor onderhoudbaarheid kleiner is dan de standaarddrempelwaarde (10).

  3. Markeer in het projectbestand de buildactie van het configuratiebestand als AdditionalFiles. Bijvoorbeeld:

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

Zie ook