Baca dalam bahasa Inggris

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 9 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.

C#
void M1(Stream stream, byte[] buffer)
{
    // CA2022 violation.
    stream.Read(buffer, 0, buffer.Length);

    // Fix for the violation.
    stream.ReadExactly(buffer);
}

Kapan harus menekan peringatan

Anda tidak boleh menyembunyikan peringatan dari aturan ini, karena aplikasi Anda mungkin macet jika Anda tidak memperbaiki pelanggaran.

Lihat juga