CA1041. Укажите сообщение ObsoleteAttribute

Элемент Значение
Идентификатор правила CA1041
Категория Оформление
Исправление является критическим или не критическим Не критическое

Причина

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

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

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

ObsoleteAttribute используется для отметки устаревших типов и элементов библиотеки. Пользователям библиотек не следует использовать никакие типы и элементы, помеченные как устаревшие. Это связано с тем, что они, возможно, уже не поддерживаются и в конечном итоге будут удалены из последующих версий библиотеки. При компиляции типа или элемента, помеченного с помощью ObsoleteAttribute, отображается свойство Message этого атрибута. Это предоставляет пользователю сведения об устаревшем типе или члене. В этих сведениях обычно указывается, как долго устаревший тип или элемент будет поддерживаться конструкторами библиотек, и предлагается рекомендуемый вариант замены.

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

Чтобы устранить нарушение этого правила, добавьте параметр message в конструктор ObsoleteAttribute.

Условия для отключения предупреждений

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

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

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

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

Включение определенных контактных зон API

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

dotnet_code_quality.CAXXXX.api_surface = private, internal

Пример

В следующем примере показан устаревший элемент, который имеет правильно объявленный ObsoleteAttribute.

[ObsoleteAttribute("This property is obsolete and will be removed in a " +
"future version. Use the FullName property instead.", false)]
public string Name
{
    get => "Name";
}
Imports System

Namespace ca1041

    Public Class ObsoleteAttributeOnMember

        <ObsoleteAttribute("This property is obsolete and will " &
             "be removed in a future version. Use the FirstName " &
             "and LastName properties instead.", False)>
        ReadOnly Property Name As String
            Get
                Return "Name"
            End Get
        End Property

        ReadOnly Property FirstName As String
            Get
                Return "FirstName"
            End Get
        End Property

        ReadOnly Property LastName As String
            Get
                Return "LastName"
            End Get
        End Property

    End Class

End Namespace

См. также раздел