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 9 | Sebagai peringatan |
Panggilan ke Stream.Read atau Stream.ReadAsync dilakukan dan nilai pengembalian tidak dicentang.
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.
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.
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
Anda tidak boleh menyembunyikan peringatan dari aturan ini, karena aplikasi Anda mungkin macet jika Anda tidak memperbaiki pelanggaran.
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: