Compartir a través de


CA2022: Evitar la lectura inexacta con Stream.Read

Propiedad Value
Identificador de la regla CA2022
Título Evitar la lectura inexacta con Stream.Read
Categoría Confiabilidad
La corrección es problemática o no problemática Poco problemático
Habilitado de forma predeterminada en .NET 9 Como advertencia

Causa

Se realiza una llamada a Stream.Read o Stream.ReadAsync y no se comprueba el valor devuelto.

Descripción de la regla

Stream.Read y Stream.ReadAsync pueden devolver menos bytes de los solicitados, lo que da lugar a código no confiable si no se comprueba el valor devuelto.

Cómo corregir infracciones

Para corregir una infracción, compruebe el valor devuelto (que es el número total de bytes leídos en el búfer) o llame Stream.ReadExactly a o, en su lugar, .Stream.ReadExactlyAsync

Ejemplo

El fragmento de código siguiente muestra una infracción de CA2022 y la corrección de la infracción.

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

Cuándo suprimir las advertencias

No debería suprimir advertencias de esta regla, ya que la aplicación podría bloquearse si no corrige las infracciones.

Consulte también