Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
| Harta benda | Nilai |
|---|---|
| Identifikasi Aturan | CA2026 |
| Title | Lebih disukai JsonElement.Parse daripada JsonDocument.Parse().RootElement |
| Kategori | Keandalan |
| Perbaikan bersifat merusak atau tidak merusak | Non-breaking |
| Diaktifkan secara default di .NET 10 | Sebagai saran |
Penyebab
Kode menggunakan JsonDocument.Parse().RootElement untuk mengurai JSON ke dalam JsonElement.
Deskripsi aturan
JsonElement.Parse lebih efisien daripada memanggil JsonDocument.Parse().RootElement.
JsonDocument jenis ini mengimplementasikan IDisposable dan meminjam array dari ArrayPool<T>, yang bisa berujung pada kebocoran memori atau meningkatnya tekanan GC jika Anda tidak membuang dokumen dengan benar. Metode JsonElement.Parse yang diperkenalkan dalam .NET 10, menguraikan JSON langsung ke dalam JsonElement tanpa masalah ini, membuatnya lebih efisien dan kurang rawan kesalahan.
Cara memperbaiki pelanggaran
Ganti panggilan ke JsonDocument.Parse().RootElement dengan JsonElement.Parse().
Examples
Cuplikan kode berikut menunjukkan pelanggaran CA2026:
public static void ProcessJsonViolation(string json)
{
JsonElement element = JsonDocument.Parse(json).RootElement;
//...
}
Public Sub ProcessJsonViolation(json As String)
Dim element As JsonElement = JsonDocument.Parse(json).RootElement
'...
End Sub
Cuplikan kode berikut memperbaiki pelanggaran:
public static void ProcessJsonFixed(string json)
{
JsonElement element = JsonElement.Parse(json);
//...
}
Public Sub ProcessJsonFixed(json As String)
Dim element As JsonElement = JsonElement.Parse(json)
'...
End Sub
Kapan harus menekan peringatan
Jangan mengabaikan peringatan dari aturan ini. Jika Anda menargetkan .NET 10 atau yang lebih baru, Anda harus menggunakan JsonElement.Parse() untuk performa dan manajemen sumber daya yang lebih baik.
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 CA2026
// The code that's violating the rule is on this line.
#pragma warning restore CA2026
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA2026.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.