Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| 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 10 | Jako upozornění |
Příčina
Volání nebo Stream.Read volání Stream.ReadAsync 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.