Sdílet prostřednictvím


CA1422: Ověření kompatibility platformy – zastaralá rozhraní API

Vlastnost Hodnota
ID pravidla CA1422
Název Ověření kompatibility platformy – zastaralá rozhraní API
Kategorie Vzájemná funkční spolupráce
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 9 Jako upozornění

Příčina

Rozhraní API označené ObsoletedOSPlatformAttribute pomocí se volá z lokality volání, která je označená jako podpora zastaralého operačního systému (OS). Toto pravidlo se podobá CA1416: Ověřte kompatibilitu platformy s tím rozdílem, že varuje před rozhraními API, která jsou na dané platformě zastaralá a zcela nepodporovaná.

Popis pravidla

Volání rozhraní API zastaralého v daném operačním systému (verze) z webu volání, které je dostupné z tohoto operačního systému (verze), se nedoporučuje. Zvažte místo toho volání zastaralého rozhraní API nebo ochranu před voláním zastaralého rozhraní API v ovlivněných operačních systémech.

Jak opravit porušení

Existuje několik způsobů, jak opravit porušení tohoto pravidla:

Příklad

Následující fragment kódu ukazuje porušení 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

Následující fragment kódu opraví porušení tím, že do webu UnsupportedOSPlatformAttribute volání přidá atribut, který určuje verzi, ve které byla volána metoda byla zastaralá.

[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

Kdy potlačit upozornění

Je bezpečné potlačit upozornění z tohoto pravidla, pokud vás nezajímá volání zastaralého rozhraní API nebo pokud víte, že zastaralé rozhraní API se nikdy nebude volat na ovlivněnou verzi operačního systému.

Potlačení upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

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

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.

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

Chcete-li tuto celou kategorii pravidel zakázat, nastavte závažnost kategorie na none hodnotu v konfiguračním souboru.

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

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také