CA2022: Hindari bacaan yang tidak tepat dengan Stream.Read

Properti Nilai
ID Aturan CA2022
Judul Hindari bacaan yang tidak tepat dengan Stream.Read
Kategori Keandalan
Perbaikan bersifat merusak atau tidak merusak Tidak terputus
Diaktifkan secara default di .NET 10 Sebagai peringatan
Bahasa yang berlaku C# dan Visual Basic

Penyebab

Panggilan ke Stream.Read atau Stream.ReadAsync dilakukan dan nilai retur tidak diperiksa.

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 cara memperbaikinya.

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.

Lihat juga