CA1801: Granska oanvända parametrar

Egenskap Värde
Regel-ID CA1801
Title Granska oanvända parametrar
Kategori Användning
Korrigeringen är antingen invasiv eller icke-invasiv Icke brytande – Om medlemmen inte visas utanför sammanställningen, oavsett ändringen du gör.

Okrossbar – Om du ändrar medlemmen så att den använder parametern i dess kropp.

Brytande – Om du tar bort parametern och den är synlig utanför assembly.
Aktiverad som standard i .NET 10 Nej
Tillämpliga språk C# och Visual Basic

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 tillämpar analysverktyget IDE0060 vid 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:

  • För tidigare levererad kod, för vilken korrigeringen skulle innebära en icke-bakåtkompatibel ändring.

  • 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 ytor för API:er

Du kan konfigurera vilka delar av kodbasen som ska köra den här regeln baserat på deras tillgänglighet genom att ange alternativet api_surface. 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

Kommentar

Ersätt den XXXX delen av CAXXXX med ID:t för den tillämpliga regeln.

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