CA1801: Granska oanvända parametrar
Property | Värde |
---|---|
Regel-ID | CA1801 |
Title | 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 9 | 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 , _1
och _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 parameternthis
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);
}