CA1801: Przejrzyj nieużywane parametry

Właściwości Wartość
Identyfikator reguły CA1801
Stanowisko Dokonaj przeglądu nieużywanych parametrów
Kategoria Użycie
Poprawka powodująca niezgodność lub niezgodność Niezgodność — jeśli element członkowski nie jest widoczny poza zestawem, niezależnie od wprowadzania zmian.

Niezgodność — jeśli zmienisz element członkowski tak, aby używał parametru w jego treści.

Niezgodność — jeśli usuniesz parametr i będzie on widoczny poza zestawem.
Domyślnie włączone na platformie .NET 8 Nie.

Przyczyna

Sygnatura metody zawiera parametr, który nie jest używany w treści metody.

Ta reguła nie analizuje następujących rodzajów metod:

  • Metody przywoływane przez delegata.

  • Metody używane jako programy obsługi zdarzeń.

  • Konstruktory serializacji (zobacz wytyczne).

  • Metody serializacji GetObjectData .

  • Metody zadeklarowane za pomocą abstract modyfikatora (MustOverride w Visual Basic).

  • Metody zadeklarowane za pomocą virtual modyfikatora (Overridable w Visual Basic).

  • Metody zadeklarowane za pomocą override modyfikatora (Overrides w Visual Basic).

  • Metody zadeklarowane za pomocą modyfikatora (Declare instrukcji extern w Visual Basic).

Ta reguła nie flaguje parametrów o nazwie z symbolem odrzucenia , na przykład _, _1i _2. Zmniejsza to szum ostrzegawczy dla parametrów, które są wymagane dla wymagań dotyczących podpisu, na przykład metoda używana jako delegat, parametr ze specjalnymi atrybutami lub parametr, którego wartość jest niejawnie uzyskiwana w czasie wykonywania przez strukturę, ale nie jest przywoływana w kodzie.

Uwaga

Ta reguła została przestarzała na rzecz IDE0060. Aby uzyskać informacje na temat wymuszania analizatora IDE0060 podczas kompilacji, zobacz analiza stylu kodu.

Opis reguły

Przejrzyj parametry w metodach innych niż wirtualne, które nie są używane w treści metody, aby upewnić się, że żadna nieprawidłowość nie istnieje w przypadku niepowodzenia uzyskiwania do nich dostępu. Nieużywane parametry generują koszty konserwacji i wydajności.

Czasami naruszenie tej reguły może wskazywać na usterkę implementacji w metodzie . Na przykład parametr powinien zostać użyty w treści metody. Pomiń ostrzeżenia tej reguły, jeśli parametr musi istnieć ze względu na zgodność z poprzednimi wersjami.

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, usuń nieużywany parametr (zmiana powodująca niezgodność) lub użyj parametru w treści metody (zmiana powodująca niezgodność).

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć ostrzeżenie z tej reguły:

  • We wcześniej wysłanym kodzie, dla którego poprawka byłaby zmianą powodującą niezgodność.

  • Dla parametru this w niestandardowej metodzie rozszerzenia dla .Microsoft.VisualStudio.TestTools.UnitTesting.Assert Funkcje w Assert klasie są statyczne, więc nie ma potrzeby uzyskiwania dostępu do parametru this w treści metody.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

#pragma warning disable CA1801
// The code that's violating the rule is on this line.
#pragma warning restore CA1801

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

[*.{cs,vb}]
dotnet_diagnostic.CA1801.severity = none

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Konfigurowanie kodu do analizowania

Użyj następującej opcji, aby skonfigurować, które części bazy kodu mają być uruchamiane w tej regule.

Tę opcję można skonfigurować tylko dla tej reguły, dla wszystkich reguł, do których ma ona zastosowanie, lub dla wszystkich reguł w tej kategorii (wydajność), których dotyczy. Aby uzyskać więcej informacji, zobacz Opcje konfiguracji reguły jakości kodu.

Uwzględnij określone powierzchnie interfejsu API

Możesz skonfigurować, na których częściach bazy kodu ma być uruchamiana ta reguła, na podstawie ich ułatwień dostępu. Aby na przykład określić, że reguła powinna być uruchamiana tylko na powierzchni niepublicznego interfejsu API, dodaj następującą parę klucz-wartość do pliku editorconfig w projekcie:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Domyślnie reguła CA1801 dotyczy wszystkich powierzchni interfejsu API (publicznych, wewnętrznych i prywatnych).

Przykład

W poniższym przykładzie przedstawiono dwie metody. Jedna metoda narusza regułę, a druga metoda spełnia regułę.

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