Freigeben über


CA2022: Vermeiden von ungenauen Lesevorgängen mit Stream.Read

Eigenschaft Wert
Regel-ID CA2022
Titel Vermeiden von ungenauen Lesevorgängen mit Stream.Read
Kategorie Zuverlässigkeit
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 9 aktiviert Als Warnung

Ursache

Ein Aufruf Stream.Read an oder Stream.ReadAsync wird ausgeführt, und der Rückgabewert wird nicht überprüft.

Regelbeschreibung

Stream.Read und Stream.ReadAsync gibt möglicherweise weniger Bytes als angefordert zurück, was zu unzuverlässigen Code führt, wenn der Rückgabewert nicht aktiviert ist.

Behandeln von Verstößen

Um einen Verstoß zu beheben, überprüfen Sie entweder den Rückgabewert (die Gesamtanzahl der in den Puffer gelesenen Bytes), oder rufen Sie stattdessen auf Stream.ReadExactly Stream.ReadExactlyAsync .

Beispiel

Der folgende Codeausschnitt zeigt einen Verstoß gegen CA2022 und den Fix für die Verletzung.

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

Wann sollten Warnungen unterdrückt werden?

Sie sollten Warnungen aus dieser Regel nicht unterdrücken, da Ihre App möglicherweise hängen bleibt, wenn Sie die Verstöße nicht beheben.

Siehe auch