Teilen über


CA1422: Überprüfen der Plattformkompatibilität – veraltete APIs

Eigenschaft Wert
Regel-ID CA1422
Titel Überprüfen der Plattformkompatibilität – veraltete APIs
Kategorie Interoperabilität
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 8 aktiviert Als Warnung

Ursache

Eine API, die mit ObsoletedOSPlatformAttribute gekennzeichnet ist, wird von einer Aufrufsite aufgerufen, die als Unterstützung des veralteten Betriebssystems gekennzeichnet ist. Diese Regel ähnelt CA1416: Validierung der Plattformkompatibilität, mit dem Unterschied, dass sie vor APIs warnt, die auf einer bestimmten Plattform veraltet sind, statt solchen, die überhaupt nicht unterstützt werden.

Regelbeschreibung

Das Aufrufen einer API, die in einem bestimmten Betriebssystem (Version) veraltet ist, von einer Aufrufsite aus, die von diesem Betriebssystem (Version) aus erreichbar ist, wird nicht empfohlen. Erwägen Sie stattdessen den Aufruf einer nicht veralteten API, oder schützen Sie sich vor dem Aufruf der veralteten API auf betroffenen Betriebssystemen.

Behandeln von Verstößen

Es gibt verschiedene Möglichkeiten, einen Verstoß gegen diese Regel zu beheben:

Beispiel

Der folgende Codeschnipsel zeigt eine Verletzung von CA1422:

[SupportedOSPlatform("Windows")]
public void M1()
{
    // Violates rule CA1422.
    // This call site is reachable on 'Windows',
    // but 'ObsoletedOnWindows62()'
    // is obsoleted on 'Windows 6.2' and later.
    ObsoletedOnWindows62();
}

[ObsoletedOSPlatform("Windows6.2")]
public void ObsoletedOnWindows62()
{ }
<SupportedOSPlatform("Windows")>
Public Sub M1()
    ' Violates rules CA1422.
    ' This call site is reachable on 'Windows',
    ' but 'ObsoletedOnWindows62()'
    ' is obsoleted on 'Windows 6.2' and later.
    ObsoletedOnWindows62()
End Sub

<ObsoletedOSPlatform("Windows6.2")>
Public Sub ObsoletedOnWindows62()
End Sub

Der folgende Codeschnipsel behebt die Verletzung, indem der Aufrufsite ein UnsupportedOSPlatformAttribute-Attribut hinzugefügt wird, das die Version angibt, ab der die aufgerufene Methode als veraltet gilt.

[SupportedOSPlatform("Windows")]
[ObsoletedOSPlatform("Windows6.2")]
public void M1()
{
    ObsoletedOnWindows62();
}

[ObsoletedOSPlatform("Windows6.2")]
public void ObsoletedOnWindows62()
{ }
<SupportedOSPlatform("Windows")>
<ObsoletedOSPlatform("Windows6.2")>
Public Sub M1()
    ObsoletedOnWindows62()
End Sub

<ObsoletedOSPlatform("Windows6.2")>
Public Sub ObsoletedOnWindows62()
End Sub

Wann sollten Warnungen unterdrückt werden?

Es ist sicher, eine Warnung von dieser Regel zu unterdrücken, wenn Sie keine Bedenken haben, eine veraltete API aufzurufen, oder wenn Sie wissen, dass die veraltete API nie in der betroffenen Betriebssystemversion aufgerufen wird.

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

#pragma warning disable CA1422
// The code that's violating the rule is on this line.
#pragma warning restore CA1422

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none fest.

[*.{cs,vb}]
dotnet_diagnostic.CA1422.severity = none

Um diese gesamte Kategorie von Regeln zu deaktivieren, legen Sie den Schweregrad für die Kategorie in der Konfigurationsdatei auf none fest.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Interoperability.severity = none

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Weitere Informationen