CA2022: Vyhněte se neexact čtení pomocí Stream.Read
Vlastnost | Hodnota |
---|---|
ID pravidla | CA2022 |
Název | Vyhněte se neexactu čtení pomocí Stream.Read |
Kategorie | Spolehlivost |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | Jako upozornění |
Příčina
Volání nebo Stream.ReadAsync volání Stream.Read a vrácená hodnota není zaškrtnutá.
Popis pravidla
Stream.Read a Stream.ReadAsync může vrátit méně bajtů, než je požadováno, což vede k nespolehlivému kódu, pokud vrácená hodnota není zaškrtnutá.
Jak opravit porušení
Chcete-li opravit porušení, zkontrolujte návratovou hodnotu (což je celkový počet bajtů přečtených do vyrovnávací paměti) nebo volání Stream.ReadExactly nebo Stream.ReadExactlyAsync místo toho.
Příklad
Následující fragment kódu ukazuje porušení ca2022 a opravu porušení.
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
Kdy potlačit upozornění
Upozornění z tohoto pravidla byste neměli potlačit, protože vaše aplikace může přestat reagovat, pokud porušení neopravíte.