CA2022: Stream.Read ile uygun olmayan okumalardan kaçının

Özellik Değer
Kural Kimliği CA2022
Başlık Stream.Read ile hatalı okumalardan kaçının
Kategori Güvenilirlik
Düzeltme bozucu ya da bozmayan olabilir Kesintisiz
.NET 10'da varsayılan olarak etkin Uyarı olarak
Geçerli diller C# ve Visual Basic

Neden

Stream.Read veya Stream.ReadAsync çağrısı yapılır ve dönüş değeri kontrol edilmez.

Kural açıklaması

Stream.Read ve Stream.ReadAsync istenenden daha az bayt döndürebilir ve sonuç olarak dönüş değeri işaretlenmemişse güvenilir olmayan kod elde edilir.

İhlalleri düzeltme

Bir ihlali düzeltmek için dönüş değerini (arabelleğe okunan toplam bayt sayısıdır) denetleyin veya çağırın Stream.ReadExactly veya Stream.ReadExactlyAsync bunun yerine.

Örnek

Aşağıdaki kod parçacığı, CA2022 ihlalini ve bu ihlalı örtmek için yapılan düzeltmeyi gösterir.

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

Uyarıların ne zaman bastırılması gerekiyor?

İhlalleri düzeltmezseniz uygulamanız yanıt vermeyebileceği için bu kuraldaki uyarıları gizlememelisiniz.

Ayrıca bkz.