Bagikan melalui


CA1422: Memvalidasi kompatibilitas platform - API usang

Properti Nilai
ID Aturan CA1422
Judul Memvalidasi kompatibilitas platform - API usang
Golongan Interoperabilitas
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Sebagai peringatan

Penyebab

API yang ditandai dengan ObsoletedOSPlatformAttribute dipanggil dari situs panggilan yang ditandai sebagai mendukung sistem operasi (OS) yang usang. Aturan ini mirip dengan CA1416: Memvalidasi kompatibilitas platform kecuali bahwa aturan ini memperingatkan tentang API yang usang pada platform tertentu versus tidak didukung sepenuhnya.

Deskripsi aturan

Memanggil API yang usang dalam OS (versi) tertentu dari situs panggilan yang dapat dijangkau dari OS (versi) tersebut tidak disarankan. Pertimbangkan untuk memanggil API yang tidak usang sebagai gantinya, atau pertimbangkan untuk tidak memanggil API usang pada sistem operasi yang terpengaruh.

Cara memperbaiki pelanggaran

Ada berbagai cara untuk memperbaiki pelanggaran aturan ini:

Contoh

Cuplikan kode berikut menunjukkan pelanggaran 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

Cuplikan kode berikut memperbaiki pelanggaran dengan menambahkan ke situs UnsupportedOSPlatformAttribute panggilan atribut yang menentukan versi yang disebut metode telah usang.

[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

Kapan harus menekan peringatan

Aman untuk menekan peringatan dari aturan ini jika Anda tidak khawatir tentang memanggil API usang, atau jika Anda tahu bahwa API usang tidak akan pernah dipanggil pada versi OS yang terpengaruh.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

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

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

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

Untuk menonaktifkan seluruh kategori aturan ini, atur tingkat keparahan untuk kategori ke none dalam file konfigurasi.

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

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Baca juga