다음을 통해 공유


코드 품질 규칙 구성 옵션

‘코드 품질’ 규칙에는 심각도 구성 외에 추가 구성 옵션이 있습니다. 예를 들어 각 코드 품질 분석기는 코드베이스의 특정 부분에만 적용되도록 구성할 수 있습니다. 규칙 심각도 및 일반 편집기 기본 설정을 지정하는 동일한 EditorConfig 파일에 키-값 쌍을 추가하여 이러한 옵션을 지정할 수 있습니다.

참고 항목

이 문서에서는 규칙의 심각도를 구성하는 방법을 자세히 설명하지 않습니다. 규칙의 심각도를 설정하는 .editorconfig 옵션은 여기에 설명된 옵션(dotnet_diagnostic)과 다른 접두사(dotnet_code_quality)를 가집니다. 또한 여기에 설명된 옵션은 코드 품질 규칙과 관련된 반면 심각도 옵션은 코드 스타일 규칙에도 적용됩니다. 빠른 참조로 다음 옵션 구문을 사용하여 규칙의 심각도를 구성할 수 있습니다.

dotnet_diagnostic.<rule ID>.severity = <severity value>

그러나 규칙 심각도 구성에 대한 자세한 내용은 심각도 수준을 참조하세요.

옵션 범위

모든 규칙, 규칙 범주(예: 보안 또는 디자인) 또는 특정 규칙에 대해 각 구체화 옵션을 구성할 수 있습니다.

모든 규칙

‘모든’ 규칙에 대한 옵션을 구성하는 구문은 다음과 같습니다.

구문 예시
dotnet_code_quality.<OptionName> = <OptionValue> dotnet_code_quality.api_surface = public

<OptionName>의 값은 옵션에 나열됩니다.

규칙 범주

규칙 ‘범주’에 대한 옵션을 구성하는 구문은 다음과 같습니다.

구문 예시
dotnet_code_quality.<RuleCategory>.<OptionName> = OptionValue dotnet_code_quality.Naming.api_surface = public

다음 표에는 <RuleCategory>에 사용 가능한 값이 나열되어 있습니다.

Design
Documentation
Globalization
Interoperability

Maintainability
Naming
Performance
SingleFile

Reliability
Security
Usage

특정 규칙

‘특정’ 규칙에 대한 옵션을 구성하는 구문은 다음과 같습니다.

구문 예시
dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> dotnet_code_quality.CA1040.api_surface = public

옵션

이 섹션에서는 코드 분석기의 사용 가능한 구성 옵션을 나열합니다. 자세한 내용은 분석기 구성참조하세요.

API 표면

설명 허용되는 값 기본값 구성 가능한 규칙
API 표면에서 분석할 부분 public(publicprotected API에 적용됨)
internal 또는 friend(internalprivate protected API에 적용됨)
private(private API에 적용됨)
all(모든 API에 적용됨)

쉼표(,)를 사용하여 여러 값을 구분
public CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040CA 1041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058CA1062 CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721CA 1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234

exclude_async_void_methods (비동기 void 메서드를 제외)

설명 허용되는 값 기본값 구성 가능한 규칙
값을 반환하지 않는 비동기 메서드를 무시할지 여부 true
false
false CA2007

참고 항목

이전 버전에서는 이 옵션의 이름이 skip_async_void_methods였습니다.

단일 문자형 매개변수를 제외하다

설명 허용되는 값 기본값 구성 가능한 규칙
규칙에서 단일 문자 형식 매개 변수를 제외할지 여부(예: SCollection<S>) true
false
false CA1715

참고 항목

이전 버전에서는 이 옵션의 이름이 allow_single_letter_type_parameters였습니다.

출력_종류

설명 허용되는 값 기본값 구성 가능한 규칙
이 유형의 어셈블리를 생성하는 프로젝트의 코드를 분석해야 함을 지정합니다. OutputKind 열거형의 하나 이상의 필드

쉼표(,)를 사용하여 여러 값을 구분
모든 출력 종류 CA1515CA2007

필수 수정자들

설명 허용되는 값 기본값 구성 가능한 규칙
분석해야 하는 API에 대한 필수 한정자를 지정합니다. 아래의 허용되는 한정자 표에서 하나 이상의 값

쉼표(,)를 사용하여 여러 값을 구분
각 규칙에 따라 다름 CA1802
허용되는 한정자 요약
none 한정자 요구 사항 없음
static 또는 Shared static으로 선언해야 함(Visual Basic에서는 Shared)
const const으로 선언해야 함
readonly readonly으로 선언해야 함
abstract abstract으로 선언해야 함
virtual virtual으로 선언해야 함
override override으로 선언해야 함
sealed sealed으로 선언해야 함
extern extern으로 선언해야 함
async async으로 선언해야 함

확장 메소드의 이 매개변수 제외

설명 허용되는 값 기본값 구성 가능한 규칙
확장 메서드의 this 매개 변수에 대한 분석을 건너뛸지 여부 true
false
false CA1062

널_체크_유효성_검사_메소드

설명 허용되는 값 기본값 구성 가능한 규칙
메서드에 전달된 인수가 Null이 아닌지 확인하는 Null 검사 유효성 검사 메서드의 이름 허용되는 메서드 이름 형식(|로 구분):
- 메서드 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 메서드 포함)
- 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 M: 접두사 포함)
없음 CA1062

추가적인_문자열_포맷팅_방법들

설명 허용되는 값 기본값 구성 가능한 규칙
추가 문자열 서식 지정 메서드의 이름 허용되는 메서드 이름 형식(|로 구분):
- 메서드 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 메서드 포함)
- 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 M: 접두사 포함)
없음 CA2241

파생 유형이 있는 제외된 유형 이름

설명 허용되는 값 기본값 구성 가능한 규칙
형식 이름(형식 및 모든 파생 형식이 분석에서 제외됨) 허용되는 기호 이름 형식(|로 구분):
- 형식 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 형식 포함)
- 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 T: 접두사 포함)
없음 CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301 CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5388 CA5389CA5399CA5399 CA5399CA54000

제외된_심볼_이름

설명 허용되는 값 기본값 구성 가능한 규칙
분석에서 제외되는 기호의 이름 허용되는 기호 이름 형식(|로 구분):
- 기호 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 기호 포함)
- 기호의 설명서 ID 형식에 있는 정규화된 이름. 각 기호 이름에는 메서드 접두사 M:, 형식 접두사 T:, 네임스페이스 접두사 N: 같은 기호 종류 접두사가 필요합니다.
생성자에 대한 - .ctor 및 정적 생성자에 대한 .cctor
없음 CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301 CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5388 CA5389CA5399CA5399 CA5399CA54000

허용되지 않는_기호_이름

설명 허용되는 값 기본값 구성 가능한 규칙
분석 컨텍스트에서 허용되지 않는 기호의 이름 허용되는 기호 이름 형식(|로 구분):
- 기호 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 기호 포함)
- 기호의 설명서 ID 형식에 있는 정규화된 이름. 각 기호 이름에는 메서드 접두사 M:, 형식 접두사 T:, 네임스페이스 접두사 N: 같은 기호 종류 접두사가 필요합니다.
생성자에 대한 - .ctor 및 정적 생성자에 대한 .cctor
없음 CA1031

exclude_ordefault_methods

설명 허용되는 값 기본값 구성 가능한 규칙
FirstOrDefaultLastOrDefault 메서드는 분석에서 제외합니다. true 또는 false false CA1826

ignore_internalsvisibleto

설명 허용되는 값 기본값 구성 가능한 규칙
InternalsVisibleToAttribute로 표시된 어셈블리를 분석에 포함합니다. true 또는 false true CA1812CA1852

추가 문자열 포매팅 방법을 자동으로 결정 시도

설명 허용되는 값 기본값 구성 가능한 규칙
추가 문자열 서식 지정 메서드를 경험적으로 검색할 수 있는 부울 옵션입니다.
string format 매개 변수와 그 뒤에 params object[] 매개 변수가 있는 경우 해당 메서드는 문자열 서식 지정 메서드로 간주됩니다.
true 또는 false false CA2241

안전하지 않은 DllImportSearchPath 비트

설명 허용되는 값 기본값 구성 가능한 규칙
분석에 안전하지 않은 DllImportSearchPath 값 구성 System.Runtime.InteropServices.DllImportSearchPath의 정수 값 770(즉, AssemblyDirectory | UseDllDirectoryForDependencies | ApplicationDirectory) CA5393

exclude_aspnet_core_mvc_controllerbase

설명 허용되는 값 기본값 구성 가능한 규칙
CSRF를 고려할 때 ASP.NET Core MVC ControllerBase 제외 true 또는 false true CA5391

열거형 값 접두사 트리거

설명 허용되는 값 기본값 구성 가능한 규칙
열거 값 명명 규칙을 트리거하는 임계값 지정 - AnyEnumValue - 일부 열거형 값이 열거형 형식 이름으로 시작하는 경우 규칙이 트리거됩니다.
- AllEnumValues - 모든 열거형 값이 열거형 형식 이름으로 시작하는 경우 규칙이 트리거됩니다.
- Heuristic - 규칙은 기본 휴리스틱을 사용하여 트리거됩니다. 즉, 열거형 값의 75% 이상이 열거형 형식 이름으로 시작하는 경우 트리거됩니다.
Heuristic CA1712

간접 기본 유형 제외

설명 허용되는 값 기본값 구성 가능한 규칙
간접 기본 형식 제외 true 또는 false true CA1710

추가_필요_접미사들

설명 허용되는 값 기본값 구성 가능한 규칙
추가 필수 접미사 지정 필수 접미사(->로 구분)가 포함된 형식 이름(|로 구분) 목록. 허용되는 형식 이름 형식:
- 형식 이름만(포함 형식 또는 네임스페이스에 관계없이 이름이 있는 모든 형식 포함).
- 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 T: 접두사 포함).
없음 CA1710

추가적으로 필요한 일반 인터페이스

설명 허용되는 값 기본값 구성 가능한 규칙
추가 필수 제네릭 인터페이스 지정 필수 제네릭 정규화된 인터페이스(->로 구분)가 포함된 인터페이스 이름(|로 구분) 목록. 허용되는 인터페이스 형식:
- 인터페이스 이름만(포함된 형식 또는 네임스페이스에 관계없이 이름이 있는 모든 인터페이스 포함).
- 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 T: 접두사 포함).
없음 CA1010

예:

옵션 값 요약
dotnet_code_quality.CA1010.additional_required_generic_interfaces = ISomething->System.Collections.Generic.IEnumerable`1 네임스페이스에 관계없이 ISomething을 구현하는 모든 형식은 System.Collections.Generic.IEnumerable\`1도 구현해야 합니다.
dotnet_code_quality.CA1010.additional_required_generic_interfaces = T:System.Collections.IDictionary->T:System.Collections.Generic.IDictionary`2 System.Collections.IDictionary를 구현하는 모든 형식은 System.Collections.Generic.IDictionary`2도 구현해야 합니다.

추가_상속_제외_기호_이름

설명 허용되는 값 기본값 구성 가능한 규칙
상속 계층 구조 트리에서 제외할 형식 또는 네임스페이스 지정 허용되는 형식 이름 형식:
- 형식 또는 네임스페이스 이름(포함된 형식 또는 네임스페이스 및 네임스페이스에 이름이 포함된 모든 형식에 관계없이 이름이 있는 모든 형식 포함).
- 와일드카드 기호로 끝나는 형식 또는 네임스페이스 이름(포함된 형식 또는 네임스페이스에 관계없이 이름이 지정된 이름으로 시작하는 모든 형식 및 네임스페이스에 이름이 포함된 모든 형식 포함).
- 형식의 경우 선택적 T: 접두사, 네임스페이스의 경우 N: 접두사가 있는 기호 설명서 ID 유형의 정규화된 이름.
- 형식의 경우 선택적 T: 접두사 또는 네임스페이스의 경우 N: 접두사가 있고 와일드카드 기호로 끝나는 정규화된 형식 또는 네임스페이스 이름(정규화된 이름이 지정된 형식 이름으로 시작하는 모든 형식, 또는 정규화된 이름이 지정된 네임스페이스 이름으로 시작하는 모든 형식 포함).
N:System.*(이 값은 항상 제공된 값에 자동으로 추가됨) CA1501

분석된_기호_종류

설명 허용되는 값 기본값 구성 가능한 규칙
분석할 기호 종류 지정 쉼표로 구분된 목록인 SymbolKind의 하나 이상의 필드. Namespace, NamedType, Method, Property, Event, Parameter CA1716

이름 짓기 휴리스틱 사용

설명 허용되는 값 기본값 구성 가능한 규칙
Text, Message 또는 Caption을 포함하는 매개 변수 또는 속성 이름이 이 규칙을 트리거하는지 여부 구성 true 또는 false false CA1303

추가 사용 결과 방법

설명 허용되는 값 기본값 구성 가능한 규칙
결과를 사용해야 하는 추가 사용자 지정 API 지정 추가 메서드의 이름(|로 구분). 허용되는 메서드 이름 형식:
- 메서드 이름만(포함 형식이나 네임스페이스에 관계없이 이름이 있는 모든 메서드 포함).
- 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 M: 접두사 포함).
없음 CA1806

허용된_접미사

설명 허용되는 값 기본값 구성 가능한 규칙
허용되는 접미사 지정 허용되는 접미사 목록(|로 구분). 없음 CA1711

NET5 이전 대상에서 플랫폼 분석기 활성화

설명 허용되는 값 기본값 구성 가능한 규칙
.NET 5 이전 TFM에 대한 분석을 사용하도록 설정할지 여부 지정 true 또는 false false CA1416

구조체 제외

설명 허용되는 값 기본값 구성 가능한 규칙
분석에서 구조체를 제외할지 여부 지정 true 또는 false false CA1051

추가적_열거형_none_이름

설명 허용되는 값 기본값 구성 가능한 규칙
값이 0인 열거형 필드에 허용되는 추가 이름 지정 추가 이름 목록(|로 구분). 없음 CA1008

열거 방법

설명 허용되는 값 기본값 구성 가능한 규칙
IEnumerable을 열거하는 추가 사용자 지정 메서드 지정 추가 메서드의 정규화된 이름(|로 구분). 없음 CA1851

LINQ 체인 메서드

설명 허용되는 값 기본값 구성 가능한 규칙
추가로 사용자 지정된 LINQ 체인 메서드 지정(즉, 메서드가 IEnumerable 인수를 사용하고 새 IEnumerable 인스턴스를 반환함) 추가 메서드의 정규화된 이름(|로 구분). 없음 CA1851

메서드가 매개변수를 열거한다고 가정하다

설명 허용되는 값 기본값 구성 가능한 규칙
사용자 지정된 메서드가 해당 IEnumerable 매개 변수를 열거한다고 가정할지 여부 지정 true 또는 false false CA1851

데이터 흐름 분석 옵션

이 섹션의 옵션은 데이터 흐름 분석 규칙을 구성합니다. 옵션은 다음과 같습니다.

데이터 흐름 분석에 대한 자세한 내용은 데이터 흐름 분석 기반 분석기작성을 참조하세요.

처리_분석_종류

설명 허용되는 값 기본값 구성 가능한 규칙
Dispose 위반을 분석할 경로 지정 - AllPaths - 모든 경로(예외가 아닌 경로 및 예외 경로)에서 누락된 Dispose 위반을 추적하고 보고합니다. 또한 잠재적인 Dispose 누출을 일으킬 수 있는 권장되지 않는 Dispose 패턴의 사용에도 플래그를 지정합니다.
- AllPathsOnlyNotDisposed - 모든 경로(예외가 아닌 경로 및 예외 경로)에서 누락된 Dispose 위반을 추적하고 보고합니다. 잠재적인 Dispose 누출을 일으킬 수 있는 권장되지 않는 Dispose 패턴의 사용에는 플래그를 지정하지 마세요.
- NonExceptionPaths - 예외가 아닌 프로그램 경로에서만 누락된 Dispose 위반을 추적하고 보고합니다. 또한 잠재적인 Dispose 누출을 일으킬 수 있는 권장되지 않는 Dispose 패턴의 사용에도 플래그를 지정합니다.
- NonExceptionPathsOnlyNotDisposed - 예외가 아닌 프로그램 경로에서만 누락된 Dispose 위반을 추적하고 보고합니다. 잠재적인 Dispose 누출을 일으킬 수 있는 권장되지 않는 Dispose 패턴의 사용에는 플래그를 지정하지 마세요.
NonExceptionPaths CA2000

생성자에서 소유권 양도 처리

설명 허용되는 값 기본값 구성 가능한 규칙
생성자 호출에 전송된 인수에 대한 Dispose 소유권 이전 구성 true 또는 false false CA2000

메소드 호출 시 소유권 이전 해제

설명 허용되는 값 기본값 구성 가능한 규칙
메서드 호출에 인수로 전송된 삭제 가능한 개체에 대한 Dispose 소유권 이전 구성 true 또는 false false CA2000

프로시저 간 분석 종류

설명 허용되는 값 기본값 구성 가능한 규칙
원본 메서드 호출에 대한 프로시저 간 분석을 수행할지 여부를 지정합니다. None, , NonContextSensitiveContextSensitive 각 구성 가능한 규칙에 특정한 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

최대 인터프로세두럴 메소드 호출 체인 (max_interprocedural_method_call_chain)

설명 허용되는 값 기본값 구성 가능한 규칙
프로시전 간 데이터 흐름 분석을 위해 분석할 최대 메서드 호출 체인 길이를 지정합니다. 부호 없는 정수 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

최대_프로시저간_람다_또는_로컬_함수_호출_체인

설명 허용되는 값 기본값 구성 가능한 규칙
프로시전 간 데이터 흐름 분석을 위해 분석할 최대 람다 또는 로컬 함수 호출 체인 길이를 지정합니다. 부호 없는 정수 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

포인트_분석_유형

설명 허용되는 값 기본값 구성 가능한 규칙
PointsToAnalysis를 수행할지 여부를 지정합니다. None, , PartialWithoutTrackingFieldsAndPropertiesComplete 각 규칙에 특정한 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

복사 분석

설명 허용되는 값 기본값 구성 가능한 규칙
복사 분석 수행할지 여부를 지정합니다(값 및 참조 복사본 추적). true 또는 false 대부분의 규칙에 대한 true CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

충분한_반복횟수_약한_KDF_알고리즘

설명 허용되는 값 기본값 구성 가능한 규칙
약한 KDF(키 파생 함수) 알고리즘을 사용할 때 충분한 반복 횟수를 구성합니다. 정수 대부분의 규칙의 경우 100000 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213