Поделиться через


CA1041: укажите сообщение ObsoleteAttribute

Свойство Значение
Идентификатор правила CA1041
Заголовок Укажите сообщение ObsoleteAttribute
Категория Проектирование
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 9 Как предложение

Причина

Тип или элемент помечается с помощью атрибута 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

См. также