Partilhar via


CA2022: Evite leituras inexatas com Stream.Read

Property valor
ID da regra CA2022
Título Evite a leitura inexata com Stream.Read
Categoria Fiabilidade
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 9 Como aviso

Motivo

Uma chamada para Stream.Read ou Stream.ReadAsync é feita e o valor de retorno não é verificado.

Descrição da regra

Stream.Read e Stream.ReadAsync pode retornar menos bytes do que o solicitado, resultando em código não confiável se o valor de retorno não for verificado.

Como corrigir violações

Para corrigir uma violação, verifique o valor de retorno (que é o número total de bytes lidos no buffer) ou chame Stream.ReadExactly ou Stream.ReadExactlyAsync em vez disso.

Exemplo

O trecho de código a seguir mostra uma violação de CA2022 e a correção para a violação.

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

Quando suprimir avisos

Você não deve suprimir avisos dessa regra, pois seu aplicativo pode travar se você não corrigir as violações.

Consulte também