Partager via


CA2022 : Éviter une lecture inexacte avec Stream.Read

Propriété Valeur
Identificateur de la règle CA2022
Titre Éviter une lecture inexacte avec Stream.Read
Catégorie Fiabilité
Le correctif a un effet disruptif ou non disruptif Sans rupture
Activé par défaut dans .NET 10 Comme avertissement
Langues applicables C# et Visual Basic

Cause

Un appel à Stream.Read ou Stream.ReadAsync est effectué et la valeur de retour n'est pas vérifié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