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

Özellik Değer
Kural Kimliği CA2022
Başlık Stream.Read ile uygun olmayan okumalardan kaçının
Kategori Güvenilirlik
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
.NET 9'da varsayılan olarak etkin Uyarı olarak

Neden

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

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 ihlalin düzeltmesini 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.