Sdílet prostřednictvím


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.

Viz také