Бөлісу құралы:


CA1801: проверьте неиспользуемые параметры

Свойство Значение
Идентификатор правила CA1801
Заголовок Проверьте неиспользуемые параметры
Категория Использование
Исправление является критическим или не критическим Не нарушающий — если элемент не виден извне сборки, независимо от внесенных изменений.

Не критическое — если вы изменяете элемент, чтобы использовать в нем параметр.

Изменение может вызвать сбой, если вы удаляете параметр и он видим извне сборки.
Включен по умолчанию в .NET 10 Нет
Применимые языки C# и Visual Basic

Причина

Сигнатура метода включает параметр, не использующийся в теле метода.

Это правило не проверяет следующие типы методов:

  • методы, на которые ссылается делегат;

  • методы, используемые в качестве обработчиков событий;

  • конструкторы сериализации (см. рекомендации);

  • методы сериализации GetObjectData;

  • методы, объявленные с модификатором abstract (или MustOverride в Visual Basic);

  • методы, объявленные с модификатором virtual (или Overridable в Visual Basic);

  • методы, объявленные с модификатором override (или Overrides в Visual Basic);

  • методы, объявленные с модификатором extern (или инструкцией Declare в Visual Basic).

Это правило не помечает параметры, имя которых содержит символ отмены, например _, _1 и _2. Это уменьшает шум предупреждений для параметров, которые необходимы для требований к подписи, например, метода, используемого в качестве делегата, параметра со специальными атрибутами или параметра, значение которого неявно используется платформой в среде выполнения, но не упоминается в коде.

Примечание.

Это правило устарело, и его заменяет правило IDE0060. Сведения о принудительном применении анализатора IDE0060 при сборке см. в разделе Анализ в стиле кода.

Описание правила

Проверьте параметры в невиртуальных методах, которые не используются в теле метода, чтобы убедиться в отсутствии ошибок, связанных с невозможностью их доступа. Неиспользуемые параметры приводят к излишним расходам на техническое обслуживание и эксплуатационным расходам.

Иногда нарушение этого правила может указывать на ошибку реализации в методе. Например, в теле метода нужно было использовать параметр. Отключите предупреждения этого правила, если параметр должен существовать для обеспечения обратной совместимости.

Устранение нарушений

Чтобы устранить нарушение этого правила, удалите неиспользуемый параметр (критическое изменение) или используйте параметр в теле метода (некритическое изменение).

Когда лучше отключить предупреждения

Вы можете безопасно отменить предупреждения, связанные с этим правилом:

  • в коде, который уже был поставлен, для которого исправление стало бы критическим изменением;

  • Для параметра this в пользовательском методе расширения для Microsoft.VisualStudio.TestTools.UnitTesting.Assert. Функции в классе Assert являются статическими, поэтому нет необходимости обращаться к параметру this в теле метода.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

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

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

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

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

Настройка кода для анализа

Используйте следующий параметр, чтобы выбрать части базы кода для применения этого правила.

Этот параметр можно настроить только для этого правила, для всех правил, к которым он применяется, или для всех правил в этой категории (производительности), к которым она применяется. Дополнительные сведения см. в статье Параметры конфигурации правила качества кода.

Включите конкретные поверхности API

Вы можете настроить компоненты базы кода для выполнения этого правила на основе их специальных возможностей, задав параметр api_surface. Например, чтобы указать, что правило должно выполняться только для непубличной поверхности API, добавьте следующую пару "ключ-значение" в файл .editorconfig в ваш проект:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Примечание.

Замените XXXX частью CAXXXX идентификатором применимого правила.

По умолчанию правило CA1801 применяется ко всем областям API (общедоступные, внутренние и частные).

Пример

В следующем примере показаны два метода. Один метод нарушает правило, а другой метод соответствует этому правилу.

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