Bagikan melalui


CA2022: Hindari bacaan yang tidak tepat dengan Stream.Read

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.

Lihat juga