Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | 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);
}