Partilhar via


CA1041: Fornecer mensagem ObsoleteAttribute

Property valor
ID da regra CA1041
Título Fornecer mensagem ObsoleteAttribute
Categoria Desenho
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 8 Como sugestão

Motivo

Um tipo ou membro é marcado usando um System.ObsoleteAttribute atributo que não tem sua System.ObsoleteAttribute.Message propriedade especificada.

Por padrão, essa regra examina apenas tipos e membros visíveis externamente, mas isso é configurável.

Descrição da regra

ObsoleteAttribute é usado para marcar tipos de biblioteca e membros obsoletos. Os consumidores de bibliotecas devem evitar o uso de qualquer tipo ou membro que esteja marcado como obsoleto. Isso ocorre porque ele pode não ser suportado e, eventualmente, será removido de versões posteriores da biblioteca. Quando um tipo ou membro marcado usando ObsoleteAttribute é compilado, a Message propriedade do atributo é exibida. Isso dá ao usuário informações sobre o tipo ou membro obsoleto. Essas informações geralmente incluem por quanto tempo o tipo ou membro obsoleto será suportado pelos designers da biblioteca e o substituto preferido para usar.

Como corrigir violações

Para corrigir uma violação dessa regra, adicione o message parâmetro ao ObsoleteAttribute construtor.

Quando suprimir avisos

Não suprima um aviso desta regra porque a Message propriedade fornece informações críticas sobre o tipo ou membro obsoleto.

Configurar código para análise

Use a opção a seguir para configurar em quais partes da base de código executar essa regra.

Você pode configurar essa opção apenas para esta regra, para todas as regras às quais ela se aplica ou para todas as regras nesta categoria (Design) às quais ela se aplica. Para obter mais informações, consulte Opções de configuração da regra de qualidade de código.

Incluir superfícies de API específicas

Você pode configurar em quais partes da sua base de código executar essa regra, com base em sua acessibilidade. Por exemplo, para especificar que a regra deve ser executada somente na superfície de API não pública, adicione o seguinte par chave-valor a um arquivo .editorconfig em seu projeto:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Exemplo

O exemplo a seguir mostra um membro obsoleto que tem um ObsoleteAttributearquivo .

[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

Consulte também