다음을 통해 공유


CA1310: 정확성을 위해 StringComparison 지정

속성
규칙 ID CA1310
타이틀 정확성을 위해 StringComparison 지정
범주 전역화
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 아니요

원인

문자열 비교 작업에서 StringComparison 매개 변수를 설정하지 않는 메서드 오버로드를 사용하고 기본적으로 문화권별 문자열 비교를 사용합니다. 따라서 해당 동작이 현재 사용자의 로캘 설정에 따라 달라집니다.

규칙 설명

기본적으로 문화권별 문자열 비교를 사용하는 문자열 비교 메서드에서는 사용자 의도와 일치하지 않는 런타임 동작이 의도치 않게 발생할 수 있습니다. 의도를 정확하고 명확하게 하기 위해 StringComparison 매개 변수가 있는 오버로드를 사용하는 것이 좋습니다.

이 규칙은 기본적으로 문화권별 StringComparison 값을 사용하는 문자열 비교 메서드에 플래그를 지정합니다. 자세한 내용은 현재 문화권을 사용하는 문자열 비교를 참조하세요.

참고 항목

메서드에서 사용하는 기본 문자열 비교와 관계없이 모든 문자열 비교 메서드에 대한 위반을 확인하려면 CA1307: 명확성을 위해 StringComparison을 지정하세요를 대신 사용하세요.

위반 문제를 해결하는 방법

이 규칙의 위반 문제를 해결하려면 StringComparison 열거형을 매개 변수로 허용하는 오버로드로 문자열 비교 메서드를 변경합니다. 예를 들어 String.Compare(str1, str2)String.Compare(str1, str2, StringComparison.Ordinal)로 변경합니다.

경고를 표시하지 않는 경우

라이브러리나 애플리케이션을 지역화하지 않지 않으려는 경우 이 규칙의 경고를 표시하지 않아도 됩니다.

경고 표시 안 함

단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.

#pragma warning disable CA1310
// The code that's violating the rule is on this line.
#pragma warning restore CA1310

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none으로 설정합니다.

[*.{cs,vb}]
dotnet_diagnostic.CA1310.severity = none

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.

참고 항목