다음을 통해 공유


CA1307: 명확성을 위해 StringComparison 지정

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

원인

문자열 비교 작업에서 StringComparison 매개 변수를 설정하지 않는 메서드 오버로드를 사용합니다.

규칙 설명

많은 문자열 비교 작업은 StringComparison 열거형 값을 매개 변수로 허용하는 오버로드를 제공합니다.

StringComparison 매개 변수를 사용하는 오버로드가 있으면 이 매개 변수를 사용하지 않는 오버로드 대신 사용해야 합니다. 이 매개 변수를 명시적으로 설정하면 보통 코드가 더욱 명확해지고 유지 관리가 더 쉬워집니다. 자세한 내용은 명시적으로 문자열 비교 지정을 참조하세요.

참고 항목

이 규칙은 비교 메서드에서 사용하는 기본 StringComparison 값을 고려하지 않습니다. 따라서 기본적으로 Ordinal 문자열 비교를 사용하는 메서드 및 이 기본 비교 모드를 사용하려는 사용자에게 잡음이 있을 수 있습니다. 기본적으로 문화권별 문자열 비교를 사용하는 알려진 문자열 메서드에 대한 위반만 확인하려면 CA1310: 정확성을 위해 StringComparison 지정을 대신 사용하세요.

위반 문제를 해결하는 방법

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

경고를 표시하지 않는 경우

의도의 명확성이 요구되지 않는 경우 이 규칙의 경고를 표시하지 않아도 됩니다. 예를 들어 테스트 코드나 지역화할 수 없는 코드에는 명확성이 요구되지 않을 수 있습니다.

경고 표시 안 함

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

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

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

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

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

참고 항목