다음을 통해 공유


CA2022: Stream.Read를 사용하여 읽지 않도록 방지

속성
규칙 ID CA2022
제목 Stream.Read를 사용하여 읽지 않도록 방지
범주 신뢰성
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 9에서 기본적으로 사용 경고로

원인

호출하거나 Stream.ReadAsync 호출 Stream.Read 하며 반환 값이 선택되지 않습니다.

규칙 설명

Stream.Read 요청된 것보다 적은 바이트를 반환할 수 있으며 Stream.ReadAsync 반환 값이 확인되지 않으면 신뢰할 수 없는 코드가 생성됩니다.

위반 문제를 해결하는 방법

위반 문제를 해결하려면 반환 값(버퍼에 읽은 총 바이트 수)을 확인하거나 호출하거나 Stream.ReadExactlyAsync 대신 호출 Stream.ReadExactly 합니다.

예시

다음 코드 조각은 CA2022 위반 및 위반에 대한 수정 사항을 보여줍니다.

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

경고를 표시하지 않는 경우

위반을 수정하지 않으면 앱이 중단될 수 있으므로 이 규칙의 경고를 표시하지 않아야 합니다.

참고 항목