다음을 통해 공유


코드 품질 규칙 구성 옵션

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

참고 항목

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

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_surface

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

쉼표(,)를 사용하여 여러 값을 구분
public CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040CA1041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058CA1062CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234

exclude_async_void_methods

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

참고 항목

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

exclude_single_letter_type_parameters

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

참고 항목

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

output_kind

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

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

required_modifiers

설명 허용되는 값 기본값 구성 가능한 규칙
분석해야 하는 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으로 선언해야 함

exclude_extension_method_this_parameter

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

null_check_validation_methods

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

additional_string_formatting_methods

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

excluded_type_names_with_derived_types

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

excluded_symbol_names

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

disallowed_symbol_names

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

exclude_ordefault_methods

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

ignore_internalsvisibleto

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

try_determine_additional_string_formatting_methods_automatically

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

unsafe_DllImportSearchPath_bits

설명 허용되는 값 기본값 구성 가능한 규칙
분석에 안전하지 않은 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

dispose_analysis_kind

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

dispose_ownership_transfer_at_constructor

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

dispose_ownership_transfer_at_method_call

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

enum_values_prefix_trigger

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

exclude_indirect_base_types

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

additional_required_suffixes

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

additional_required_generic_interfaces

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

additional_inheritance_excluded_symbol_names

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

analyzed_symbol_kinds

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

use_naming_heuristic

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

additional_use_results_methods

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

allowed_suffixes

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

enable_platform_analyzer_on_pre_net5_target

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

exclude_structs

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

additional_enum_none_names

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

enumeration_methods

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

linq_chain_methods

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

assume_method_enumerates_parameters

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