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 uygun olmayan okumalardan kaçının |
| Kategori | Güvenilirlik |
| Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
| .NET 10'da varsayılan olarak etkin | Uyarı olarak |
Neden
veya Stream.Read çağrısı Stream.ReadAsync 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.