CA1309: 서수 StringComparison을 사용하십시오.
속성 | 값 |
---|---|
규칙 ID | CA1309 |
제목 | 서수 StringComparison을 사용하세요. |
범주 | 전역화 |
수정 사항이 주요 변경인지 여부 | 주요 변경 아님 |
.NET 9에서 기본적으로 사용 | 아니요 |
원인
비언어적 문자열 비교 작업에서 StringComparison 매개 변수를 Ordinal 또는 OrdinalIgnoreCase로 설정하지 않습니다.
규칙 설명
많은 문자열 작업(System.String.Compare 및 System.String.Equals 메서드가 가장 중요)에서 System.StringComparison 열거형 값을 매개 변수로 허용하는 오버로드를 제공합니다.
StringComparison.Ordinal 또는 StringComparison.OrdinalIgnoreCase를 지정하면 문자열 비교가 비언어적입니다. 즉, 비교 결정을 내릴 때 자연어 관련 기능이 무시됩니다. 자연어 기능 무시는 문화권으로 매개 변수화되는 대/소문자나 동등 테이블이 아닌 단순 바이트 비교를 기준으로 결정을 내린다는 의미입니다. 따라서 매개 변수를 StringComparison.Ordinal 또는 StringComparison.OrdinalIgnoreCase로 명시적으로 설정하면 코드의 속도가 빨라지고 정확성 및 신뢰도가 향상됩니다.
위반 문제를 해결하는 방법
이 규칙의 위반 문제를 해결하려면 System.StringComparison 열거형을 매개 변수로 허용하는 오버로드로 문자열 비교 메서드를 변경하고 Ordinal 또는 OrdinalIgnoreCase를 지정합니다. 예를 들어 String.Compare(str1, str2)
를 String.Compare(str1, str2, StringComparison.Ordinal)
로 변경합니다.
경고를 표시하지 않는 경우
라이브러리나 애플리케이션이 제한된 로컬 대상 그룹을 위한 것인 경우 또는 현재 문화권의 의미 체계를 사용해야 하는 경우 이 규칙의 경고를 표시하지 않아도 됩니다.
경고 표시 안 함
단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.
#pragma warning disable CA1309
// The code that's violating the rule is on this line.
#pragma warning restore CA1309
파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none
으로 설정합니다.
[*.{cs,vb}]
dotnet_diagnostic.CA1309.severity = none
자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.
참고 항목
.NET