CA1041: Proporcionar un mensaje ObsoleteAttribute

Propiedad Value
Identificador de la regla CA1041
Título Proporcionar un mensaje ObsoleteAttribute
Categoría Diseño
La corrección es problemática o no problemática Poco problemático
Habilitado de forma predeterminada en .NET 8 Como sugerencia

Causa

Un tipo o miembro se marca utilizando un atributo System.ObsoleteAttribute que no tiene especificada su propiedad System.ObsoleteAttribute.Message.

De forma predeterminada, esta regla solo examina los tipos y miembros visibles externamente, pero es configurable.

Descripción de la regla

ObsoleteAttribute se usa para marcar tipos y miembros de biblioteca en desuso. Los consumidores de la biblioteca deben evitar el uso de cualquier tipo o miembro que esté marcado como obsoleto. Esto se debe a que es posible que no se admita y, en algún momento, se quitará de las versiones posteriores de la biblioteca. Cuando se compila un tipo o un miembro marcado mediante ObsoleteAttribute, se muestra la propiedad Message del atributo. Esto proporciona información al usuario sobre el miembro o tipo obsoleto. Generalmente, esta información incluye el tiempo que los diseñadores de biblioteca admitirán el tipo o miembro obsoleto y el reemplazo preferido.

Cómo corregir infracciones

Para corregir una infracción de esta regla, agregue el parámetro message al constructor ObsoleteAttribute.

Cuándo suprimir las advertencias

No suprima una advertencia de esta regla porque la propiedad Message proporciona información crítica sobre el tipo o miembro obsoleto.

Configuración del código para analizar

Use la opción siguiente para configurar en qué partes del código base ejecutar esta regla.

Puede configurar esta opción solo para esta regla, para todas las reglas a las que se aplica o para todas las reglas de esta categoría (Diseño) a las que se aplica. Para más información, vea Opciones de configuración de reglas de calidad de código.

Incluir superficies de API específicas

Puede configurar en qué partes del código base ejecutar esta regla, en función de su accesibilidad. Por ejemplo, para especificar que la regla solo se debe ejecutar en la superficie de API no públicas, agregue el siguiente par clave-valor a un archivo .editorconfig en el proyecto:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Ejemplo

En el ejemplo siguiente se muestra un miembro obsoleto que tiene un atributo ObsoleteAttribute declarado correctamente.

[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 también