Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Ö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.