Share via


CA1801: Ongebruikte parameters controleren

Eigenschappen Weergegeven als
Regel-id CA1801
Titel Ongebruikte parameters controleren
Categorie Gebruik
Oplossing is brekend of niet-brekend Niet-brekend: als het lid niet zichtbaar is buiten de assembly, ongeacht de wijziging die u aanbrengt.

Niet-brekend: als u het lid wijzigt om de parameter in de hoofdtekst te gebruiken.

Fouten veroorzaken: als u de parameter verwijdert en deze zichtbaar is buiten de assembly.
Standaard ingeschakeld in .NET 9 Nee

Oorzaak

Een methodehandtekening bevat een parameter die niet wordt gebruikt in de hoofdtekst van de methode.

Met deze regel worden de volgende soorten methoden niet onderzocht:

  • Methoden waarnaar wordt verwezen door een gemachtigde.

  • Methoden die worden gebruikt als gebeurtenis-handlers.

  • Serialisatieconstructors (zie richtlijnen).

  • Serialisatiemethoden GetObjectData .

  • Methoden die zijn gedeclareerd met de abstract modifier (MustOverride in Visual Basic).

  • Methoden die zijn gedeclareerd met de virtual modifier (Overridable in Visual Basic).

  • Methoden die zijn gedeclareerd met de override modifier (Overrides in Visual Basic).

  • Methoden die zijn gedeclareerd met de extern (Declare instructie in Visual Basic) modifier.

Deze regel markeert geen parameters met de naam met het symbool voor verwijderen , bijvoorbeeld _, _1en _2. Dit vermindert waarschuwingsruis voor parameters die nodig zijn voor handtekeningvereisten, bijvoorbeeld een methode die wordt gebruikt als gemachtigde, een parameter met speciale kenmerken of een parameter waarvan de waarde impliciet wordt geopend tijdens runtime door een framework, maar niet wordt verwezen in code.

Notitie

Deze regel is afgeschaft ten gunste van IDE0060. Zie code-stijlanalyse voor informatie over het afdwingen van de IDE0060 analyzer bij het bouwen.

Beschrijving van regel

Controleer de parameters in niet-virtuele methoden die niet worden gebruikt in de hoofdtekst van de methode om ervoor te zorgen dat er geen onjuistheid bestaat rond het niet openen van deze methoden. Voor ongebruikte parameters worden onderhouds- en prestatiekosten in rekening gebracht.

Soms kan een schending van deze regel verwijzen naar een implementatiefout in de methode. De parameter moet bijvoorbeeld zijn gebruikt in de hoofdtekst van de methode. Onderdrukt waarschuwingen van deze regel als de parameter moet bestaan vanwege compatibiliteit met eerdere versies.

Schendingen oplossen

Als u een schending van deze regel wilt oplossen, verwijdert u de ongebruikte parameter (een wijziging die fouten veroorzaakt) of gebruikt u de parameter in de hoofdtekst van de methode (een niet-belangrijke wijziging).

Wanneer waarschuwingen onderdrukken

Het is veilig om een waarschuwing van deze regel te onderdrukken:

  • In eerder verzonden code waarvoor de oplossing een belangrijke wijziging zou zijn.

  • Voor de this parameter in een aangepaste extensiemethode voor Microsoft.VisualStudio.TestTools.UnitTesting.Assert. De functies in de Assert klasse zijn statisch, dus er is geen toegang nodig tot de this parameter in de hoofdtekst van de methode.

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

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.CA1801.severity = none

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Code configureren om te analyseren

Gebruik de volgende optie om te configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd.

U kunt deze optie configureren voor alleen deze regel, voor alle regels waarop deze van toepassing is, of voor alle regels in deze categorie (prestaties) waarop deze van toepassing is. Zie de configuratieopties voor de codekwaliteitsregel voor meer informatie.

Specifieke API-oppervlakken opnemen

U kunt instellen op welke onderdelen van uw codebase deze regel moet worden uitgevoerd, op basis van hun toegankelijkheid. Als u bijvoorbeeld wilt opgeven dat de regel alleen moet worden uitgevoerd op het niet-openbare API-oppervlak, voegt u het volgende sleutel-waardepaar toe aan een .editorconfig-bestand in uw project:

dotnet_code_quality.CAXXXX.api_surface = private, internal

De CA1801-regel is standaard van toepassing op alle API-oppervlakken (openbaar, intern en privé).

Opmerking

In het volgende voorbeeld ziet u twee methoden. De ene methode schendt de regel en de andere methode voldoet aan de regel.

// This method violates the rule.
public static string GetSomething(int first, int second)
{
    return first.ToString(CultureInfo.InvariantCulture);
}

// This method satisfies the rule.
public static string GetSomethingElse(int first)
{
    return first.ToString(CultureInfo.InvariantCulture);
}