Dela via


CA1041: Ange föråldradAttribute-meddelande

Property Värde
Regel-ID CA1041
Title Ange FöråldradAttribute-meddelande
Kategori Designa
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 Som förslag

Orsak

En typ eller medlem markeras med hjälp av ett System.ObsoleteAttribute attribut som inte har sin System.ObsoleteAttribute.Message egenskap angiven.

Som standard tittar den här regeln bara på externt synliga typer och medlemmar, men detta kan konfigureras.

Regelbeskrivning

ObsoleteAttribute används för att markera inaktuella bibliotekstyper och medlemmar. Bibliotekskonsumenter bör undvika användning av alla typer eller medlemmar som har markerats som föråldrade. Det beror på att det kanske inte stöds och så småningom tas bort från senare versioner av biblioteket. När en typ eller medlem som markeras med hjälp ObsoleteAttribute av kompileras Message visas egenskapen för attributet. Detta ger användaren information om den föråldrade typen eller medlemmen. Den här informationen omfattar vanligtvis hur länge den föråldrade typen eller medlemmen kommer att stödjas av biblioteksdesigners och vilken ersättning som ska användas.

Så här åtgärdar du överträdelser

Om du vill åtgärda ett brott mot den här regeln lägger du till parametern message i ObsoleteAttribute konstruktorn.

När du ska ignorera varningar

Ignorera inte en varning från den här regeln eftersom egenskapen Message innehåller viktig information om den föråldrade typen eller medlemmen.

Konfigurera kod för analys

Använd följande alternativ för att konfigurera vilka delar av kodbasen som regeln ska köras på.

Du kan konfigurera det här alternativet för bara den här regeln, för alla regler som gäller för eller för alla regler i den här kategorin (design) som den gäller för. Mer information finns i Konfigurationsalternativ för kodkvalitetsregel.

Inkludera specifika API-ytor

Du kan konfigurera vilka delar av kodbasen som ska köras med den här regeln baserat på deras tillgänglighet. Om du till exempel vill ange att regeln endast ska köras mot den icke-offentliga API-ytan lägger du till följande nyckel/värde-par i en .editorconfig-fil i projektet:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Exempel

I följande exempel visas en föråldrad medlem som har en korrekt deklarerad 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

Se även