CA2012: Gunakan ValueTasks dengan benar
Properti | Nilai |
---|---|
ID Aturan | CA2012 |
Judul | Gunakan ValueTasks dengan benar |
Golongan | Keandalan |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 9 | Sebagai saran |
Penyebab
ValueTask Instans yang dikembalikan dari pemanggilan anggota digunakan dengan cara yang dapat menyebabkan pengecualian, kerusakan, atau performa yang buruk.
Deskripsi aturan
ValueTask instans yang dikembalikan dari pemanggilan anggota dimaksudkan untuk langsung ditunggu. Upaya untuk menggunakan ValueTask beberapa kali atau untuk langsung mengakses hasil seseorang sebelum diketahui selesai dapat mengakibatkan pengecualian atau kerusakan. Mengabaikan ValueTask kemungkinan merupakan indikasi bug fungsional dan dapat menurunkan performa.
Cara memperbaiki pelanggaran
Secara umum, ValueTasks harus langsung ditunggu daripada dibuang atau disimpan ke lokasi lain seperti variabel atau bidang lokal.
Kapan harus menekan peringatan
Untuk ValueTask
objek yang dikembalikan dari panggilan anggota arbitrer, pemanggil perlu mengasumsikan bahwa ValueTask
harus dikonsumsi (misalnya, ditunggu) sekali dan hanya sekali. Namun, jika pengembang juga mengontrol anggota yang dipanggil dan memiliki pengetahuan lengkap tentang implementasinya, pengembang mungkin tahu aman untuk menekan peringatan, misalnya, jika pengembalian ValueTask
selalu membungkus Task objek.
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 CA2012
// The code that's violating the rule is on this line.
#pragma warning restore CA2012
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA2012.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.