CA1041: Fornecer a mensagem ObsoleteAttribute
Property | Valor |
---|---|
ID da regra | CA1041 |
Título | Fornecer a mensagem ObsoleteAttribute |
Categoria | Projetar |
Correção interruptiva ou sem interrupção | Sem interrupção |
Habilitado por padrão no .NET 8 | Como sugestão |
Causa
Um tipo ou membro é marcado usando um atributo System.ObsoleteAttribute que não tem sua propriedade System.ObsoleteAttribute.Message especificada.
Por padrão, esta regra analisa apenas os tipos e membros visíveis externamente, mas isso é configurável.
Descrição da regra
ObsoleteAttribute é usado para marcar membros e tipos de biblioteca preteridos. Os consumidores da biblioteca devem evitar o uso de qualquer tipo ou membro marcado como obsoleto. Isso ocorre porque ele pode não ter suporte e, eventualmente, será removido das versões posteriores da biblioteca. Quando um tipo ou membro marcado usando ObsoleteAttribute é compilado, a propriedade Message do atributo é exibida. Isso dá ao usuário informações sobre o tipo ou o membro obsoleto. Essas informações geralmente incluem por quanto tempo o tipo ou membro obsoleto será suportado pelos designers da biblioteca e a substituição preferencial a ser usada.
Como corrigir violações
Para corrigir uma violação dessa regra, adicione o parâmetro message
ao construtor ObsoleteAttribute.
Quando suprimir avisos
Não suprima um aviso desta regra porque a propriedade Message fornece informações críticas sobre o tipo ou membro obsoleto.
Configurar código para analisar
Use a opção a seguir para configurar em quais partes da base de código essa regra deve ser executada.
Você pode configurar essa opção apenas para essa regra, para todas as regras às quais ela se aplica ou para todas as regras nessa categoria (Design) às quais ela se aplica. Para saber mais, confira Opções de configuração de regra de qualidade de código.
Incluir superfícies de API específicas
É possível configurar em quais partes da base de código essa regra deverá ser executada, com base na acessibilidade. Por exemplo, para especificar que a regra deverá ser executada apenas na superfície de API não pública, adicione o seguinte par chave-valor a um arquivo .editorconfig no projeto:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Exemplo
O exemplo a seguir mostra um membro obsoleto que tem um ObsoleteAttribute declarado corretamente.
[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