Delen via


CA2022: Vermijd onnauwkeurig lezen met Stream.Read

Eigenschap Waarde
Regel-id CA2022
Titel Vermijd onnauwkeurig lezen met Stream.Read
Categorie Betrouwbaarheid
Fix kan brekend of niet-brekend zijn Niet-brekend
Standaard ingeschakeld in .NET 10 Als waarschuwing
Toepasselijke talen C# en Visual Basic

Oorzaak

Een aanroep naar Stream.Read of Stream.ReadAsync wordt uitgevoerd en de retourwaarde wordt niet gecontroleerd.

Beschrijving van regel

Stream.Read en Stream.ReadAsync kan minder bytes retourneren dan aangevraagd, wat resulteert in onbetrouwbare code als de retourwaarde niet wordt gecontroleerd.

Hoe schendingen op te lossen

Als u een schending wilt oplossen, controleert u de retourwaarde (het totale aantal bytes dat in de buffer is gelezen), of roept u Stream.ReadExactly of Stream.ReadExactlyAsync aan in plaats daarvan.

Voorbeeld

In het volgende codefragment ziet u een schending van CA2022 en de oplossing voor de schending.

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

Wanneer waarschuwingen onderdrukken

U moet waarschuwingen van deze regel niet onderdrukken, omdat uw app vastloopt als u de schendingen niet oplost.

Zie ook