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.
| Properti | Nilai |
|---|---|
| ID Aturan | CA2022 |
| Judul | Hindari bacaan yang tidak tepat dengan Stream.Read |
| Golongan | Keandalan |
| Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
| Diaktifkan secara default di .NET 10 | Sebagai peringatan |
Penyebab
Panggilan ke Stream.Read atau Stream.ReadAsync dilakukan dan nilai pengembalian tidak dicentang.
Deskripsi aturan
Stream.Read dan Stream.ReadAsync mungkin mengembalikan lebih sedikit byte daripada yang diminta, yang mengakibatkan kode yang tidak dapat diandalkan jika nilai pengembalian tidak diperiksa.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran, periksa nilai pengembalian (yang merupakan jumlah total byte yang dibaca ke dalam buffer) atau panggil Stream.ReadExactly atau Stream.ReadExactlyAsync sebagai gantinya.
Contoh
Cuplikan kode berikut menunjukkan pelanggaran CA2022 dan perbaikan untuk pelanggaran.
void M1(Stream stream, byte[] buffer)
{
// CA2022 violation.
stream.Read(buffer, 0, buffer.Length);
// Fix for the violation.
stream.ReadExactly(buffer);
}
Shared Sub M(stream As Stream, buffer As Byte())
' CA2022 violation.
stream.Read(buffer, 0, buffer.Length)
' Fix for the violation.
stream.ReadExactly(buffer)
End Sub
Kapan harus menekan peringatan
Anda tidak boleh menyembunyikan peringatan dari aturan ini, karena aplikasi Anda mungkin macet jika Anda tidak memperbaiki pelanggaran.