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