Partager via


CA2022 : Éviter une lecture inexacte avec Stream.Read

Propriété Value
Identificateur de la règle CA2022
Titre Éviter une lecture inexacte avec Stream.Read
Catégorie Fiabilité
Le correctif est cassant ou non cassant Sans rupture
Activée par défaut dans .NET 9 Comme avertissement

Cause

Un appel à Stream.Read ou Stream.ReadAsync à un appel est effectué et la valeur de retour n’est pas cochée.

Description de la règle

Stream.Read et Stream.ReadAsync peut retourner moins d’octets que demandés, ce qui entraîne un code non fiable si la valeur de retour n’est pas cochée.

Comment corriger les violations

Pour corriger une violation, vérifiez la valeur de retour (c’est-à-dire le nombre total d’octets lus dans la mémoire tampon) ou appelez Stream.ReadExactly plutôt Stream.ReadExactlyAsync .

Exemple

L’extrait de code suivant montre une violation de CA2022 et le correctif de la violation.

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

Quand supprimer les avertissements

Vous ne devez pas supprimer les avertissements de cette règle, car votre application peut se bloquer si vous ne corrigez pas les violations.

Voir aussi