Share via


CA1801: Granska oanvända parametrar

Property Värde
Regel-ID CA1801
Rubrik Granska oanvända parametrar
Kategori Användning
Korrigeringen är icke-bakåtkompatibel Icke-icke-bakåtkompatibel – Om medlemmen inte visas utanför sammansättningen, oavsett vilken ändring du gör.

Icke-icke-bakåtkompatibel – Om du ändrar medlemmen så att den använder parametern i dess brödtext.

Icke-bakåtkompatibel – Om du tar bort parametern och den visas utanför sammansättningen.
Aktiverad som standard i .NET 8 Nej

Orsak

En metodsignatur innehåller en parameter som inte används i metodtexten.

Den här regeln undersöker inte följande typer av metoder:

  • Metoder som refereras av ett ombud.

  • Metoder som används som händelsehanterare.

  • Serialiseringskonstruktorer (se riktlinjer).

  • Serialiseringsmetoder GetObjectData .

  • Metoder som deklarerats med modifieraren abstract (MustOverride i Visual Basic).

  • Metoder som deklarerats med modifieraren virtual (Overridable i Visual Basic).

  • Metoder som deklarerats med modifieraren override (Overrides i Visual Basic).

  • Metoder som deklarerats med modifieraren extern (Declare -instruktionen i Visual Basic).

Den här regeln flaggar inte parametrar som namnges med ignorera-symbolen, _till exempel , _1och _2. Detta minskar varningsbruset för parametrar som behövs för signaturkrav, till exempel en metod som används som ombud, en parameter med särskilda attribut eller en parameter vars värde implicit används vid körning av ett ramverk men som inte refereras till i kod.

Kommentar

Den här regeln har föråldrats till förmån för IDE0060. Information om hur du framtvingar IDE0060 analysverktyg i build finns i kodformatsanalys.

Regelbeskrivning

Granska parametrar i icke-virtuella metoder som inte används i metodtexten för att se till att det inte finns någon felaktighet kring att det inte går att komma åt dem. Oanvända parametrar medför underhålls- och prestandakostnader.

Ibland kan ett brott mot den här regeln peka på en implementeringsfel i metoden. Parametern ska till exempel ha använts i metodtexten. Ignorera varningar om den här regeln om parametern måste finnas på grund av bakåtkompatibilitet.

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

Om du vill åtgärda ett brott mot den här regeln tar du bort den oanvända parametern (en icke-bakåtkompatibel ändring) eller använder parametern i metodtexten (en icke-icke-bakåtkompatibel ändring).

När du ska ignorera varningar

Det är säkert att ignorera en varning från den här regeln:

  • I tidigare levererad kod som korrigeringen skulle vara en icke-bakåtkompatibel ändring för.

  • För parametern this i en anpassad tilläggsmetod för Microsoft.VisualStudio.TestTools.UnitTesting.Assert. Funktionerna i Assert klassen är statiska, så du behöver inte komma åt parametern this i metodtexten.

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

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

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

Konfigurera kod för analys

Använd följande alternativ för att konfigurera vilka delar av kodbasen som regeln ska köras på.

Du kan konfigurera det här alternativet för bara den här regeln, för alla regler som den gäller för eller för alla regler i den här kategorin (Prestanda) som den gäller för. Mer information finns i Konfigurationsalternativ för kodkvalitetsregel.

Inkludera specifika API-ytor

Du kan konfigurera vilka delar av kodbasen som ska köras med den här regeln baserat på deras tillgänglighet. Om du till exempel vill ange att regeln endast ska köras mot den icke-offentliga API-ytan lägger du till följande nyckel/värde-par i en .editorconfig-fil i projektet:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Som standard gäller CA1801-regeln för alla API-ytor (offentliga, interna och privata).

Exempel

I följande exempel visas två metoder. En metod bryter mot regeln och den andra metoden uppfyller regeln.

// 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);
}