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

Vlastnost Hodnota
ID pravidla CA1422
Název Ověřte kompatibilitu platformy – zastaralé API
Kategorie Vzájemná funkční spolupráce
Oprava, která může být destruktivní nebo nedestruktivní Nenarušující
Povoleno ve výchozím nastavení v .NET 10 Jako upozornění
Příslušné jazyky C# a Visual Basic

Příčina

Rozhraní API označené ObsoletedOSPlatformAttribute je voláno z místa volání, které je označeno jako podporující zastaralý operační systém (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 volání nezastaralého rozhraní API, nebo se ujistěte, že volání zastaralého rozhraní API je na ovlivněných operačních systémech chráněno.

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 k místu volání přidá atribut UnsupportedOSPlatformAttribute, který určuje verzi, ve které metoda zastarala.

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