CA1801: Rivedere i parametri inutilizzati
Proprietà | valore |
---|---|
ID regola | CA1801 |
Title | Controllare i parametri non usati |
Categoria | Utilizzo |
La correzione causa un'interruzione o meno | Non di rilievo: se il membro non è visibile all'esterno dell'assembly, indipendentemente dalla modifica apportata. Non di rilievo: se si modifica il membro in modo da usare il parametro all'interno del corpo. Interruzione: se si rimuove il parametro ed è visibile all'esterno dell'assembly. |
Abilitato per impostazione predefinita in .NET 9 | No |
Causa
Una firma del metodo include un parametro non usato nel corpo del metodo.
Questa regola non esamina i tipi di metodi seguenti:
Metodi a cui fa riferimento un delegato.
Metodi utilizzati come gestori eventi.
Costruttori di serializzazione (vedere le linee guida).
Metodi di serializzazione GetObjectData .
Metodi dichiarati con il
abstract
modificatore (MustOverride
in Visual Basic).Metodi dichiarati con il
virtual
modificatore (Overridable
in Visual Basic).Metodi dichiarati con il
override
modificatore (Overrides
in Visual Basic).Metodi dichiarati con il
extern
modificatore (Declare
in Visual Basic).
Questa regola non contrassegna i parametri denominati con il simbolo di eliminazione, ad esempio , _
_1
e _2
. In questo modo si riduce il disturbo di avviso sui parametri necessari per i requisiti di firma, ad esempio un metodo usato come delegato, un parametro con attributi speciali o un parametro il cui valore è accessibile in modo implicito in fase di esecuzione da un framework ma non viene fatto riferimento nel codice.
Nota
Questa regola è stata deprecata a favore di IDE0060. Per informazioni su come applicare l'analizzatore IDE0060 alla compilazione, vedere Analisi in stile codice.
Descrizione regola
Esaminare i parametri nei metodi non virtuali non usati nel corpo del metodo per assicurarsi che non esistano errori durante l'accesso. I parametri inutilizzati comportano costi di manutenzione e prestazioni.
In alcuni casi, una violazione di questa regola può puntare a un bug di implementazione nel metodo . Ad esempio, il parametro deve essere stato usato nel corpo del metodo. Eliminare gli avvisi di questa regola se il parametro deve esistere a causa della compatibilità con le versioni precedenti.
Come correggere le violazioni
Per correggere una violazione di questa regola, rimuovere il parametro inutilizzato (una modifica che causa un'interruzione) o usare il parametro nel corpo del metodo (una modifica non di rilievo).
Quando eliminare gli avvisi
È sicuro eliminare un avviso da questa regola:
Nel codice fornito in precedenza per cui la correzione sarebbe una modifica che causa un'interruzione.
Per il
this
parametro in un metodo di estensione personalizzato per Microsoft.VisualStudio.TestTools.UnitTesting.Assert. Le funzioni nella Assert classe sono statiche, quindi non è necessario accedere althis
parametro nel corpo del metodo.
Eliminare un avviso
Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.
#pragma warning disable CA1801
// The code that's violating the rule is on this line.
#pragma warning restore CA1801
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none
su nel file di configurazione.
[*.{cs,vb}]
dotnet_diagnostic.CA1801.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.
Configurare il codice da analizzare
Usare l'opzione seguente per configurare le parti della codebase in cui eseguire questa regola.
È possibile configurare questa opzione solo per questa regola, per tutte le regole a cui si applica o per tutte le regole di questa categoria (prestazioni) a cui si applica. Per altre informazioni, vedere Opzioni di configurazione delle regole di qualità del codice.
Includere superfici API specifiche
È possibile configurare le parti della codebase in modo da eseguire questa regola in base all'accessibilità. Ad esempio, per specificare che la regola deve essere eseguita solo sulla superficie dell'API non pubblica, aggiungere la coppia chiave-valore seguente a un file con estensione editorconfig nel progetto:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Per impostazione predefinita, la regola CA1801 si applica a tutte le superfici API (pubbliche, interne e private).
Esempio
Nell'esempio seguente vengono illustrati due metodi. Un metodo viola la regola e l'altro metodo soddisfa la regola.
// 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);
}