CA2022: Vyhněte se nepřesnému čtení pomocí Stream.Read

Vlastnost Hodnota
ID pravidla CA2022
Název Vyhněte se nepřesnému čtení při použití Stream.Read
Kategorie Spolehlivost
Oprava, která může být destruktivní nebo nedestruktivní Nezlomitelný
Povoleno ve výchozím nastavení v .NET 10 Jako upozornění
Příslušné jazyky C# a Visual Basic

Příčina

Je provedeno volání Stream.Read nebo Stream.ReadAsync a vrácená hodnota není zkontrolovaná.

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 místo toho zavolejte Stream.ReadExactly nebo Stream.ReadExactlyAsync.

Příklad

Následující fragment kódu ukazuje porušení CA2022 a řešení tohoto 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é