Condividi tramite


CA1801: Rivedere i parametri inutilizzati

Proprietà valore
ID regola CA1801
Titolo Controllare i parametri non usati
Categoria Utilizzo
Correzione che causa un'interruzione o un'interruzione 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 8 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 , __1e _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 al this 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);
}