CA1801: Przejrzyj nieużywane parametry
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA1801 |
Tytuł | 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 9 | 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
instrukcjiextern
w Visual Basic).
Ta reguła nie flaguje parametrów o nazwie z symbolem odrzucenia , na przykład _
, _1
i _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 parametruthis
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);
}