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.
GitHub'da bizimle işbirliği yapın
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.