다음을 통해 공유


코드 품질 규칙 구성 옵션

‘코드 품질’ 규칙에는 심각도 구성 외에 추가 구성 옵션이 있습니다. 예를 들어 각 코드 품질 분석기는 코드베이스의 특정 부분에만 적용되도록 구성할 수 있습니다. 규칙 심각도 및 일반 편집기 기본 설정을 지정하는 동일한 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 CA1000 CA1002 CA1003 CA1005 CA1008 CA1010 CA1012 CA1021 CA1024 CA1027 CA1028 CA1030 CA1036 CA1040 CA1041 CA1043 CA1044 CA1045 CA1046 CA1047 CA1051 CA1052 CA1054 CA1055 CA1056 CA1058 CA1062 CA1063 CA1068 CA1070 CA1700 CA1707 CA1708 CA1710 CA1711 CA1714 CA1715 CA1716 CA1717 CA1720 CA1721 CA1725 CA1801 CA1802 CA1815 CA1819 CA1822 CA1859 CA2208 CA2217 CA2225 CA2226 CA2231 CA2234

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 CA1001 CA1054 CA1055 CA1056 CA1062 CA1068 CA1303 CA1304 CA1305 CA1508 CA2000 CA2100 CA2301 CA2302 CA2311 CA2312 CA2321 CA2322 CA2327 CA2328 CA2329 CA2330 CA3001 CA3002 CA3003 CA3004 CA3005 CA3006 CA3007 CA3008 CA3009 CA3010 CA3011 CA3012 CA5361 CA5376 CA5377 CA5378 CA5380 CA5381 CA5382 CA5383 CA5384 CA5387 CA5388 CA5389 CA5390 CA5399 CA5400

excluded_symbol_names

설명 허용되는 값 기본값 구성 가능한 규칙
분석에서 제외되는 기호의 이름 허용되는 기호 이름 형식(|로 구분):
- 기호 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 기호 포함)
- 기호의 설명서 ID 형식에 있는 정규화된 이름. 각 기호 이름에는 메서드 접두사 M:, 형식 접두사 T:, 네임스페이스 접두사 N: 같은 기호 종류 접두사가 필요합니다.
생성자에 대한 - .ctor 및 정적 생성자에 대한 .cctor
None CA1001 CA1054 CA1055 CA1056 CA1062 CA1068 CA1303 CA1304 CA1305 CA1508 CA2000 CA2100 CA2301 CA2302 CA2311 CA2312 CA2321 CA2322 CA2327 CA2328 CA2329 CA2330 CA3001 CA3002 CA3003 CA3004 CA3005 CA3006 CA3007 CA3008 CA3009 CA3010 CA3011 CA3012 CA5361 CA5376 CA5377 CA5378 CA5380 CA5381 CA5382 CA5383 CA5384 CA5387 CA5388 CA5389 CA5390 CA5399 CA5400

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 CA1812 CA1852

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 유형의 정규화된 이름.
- 형식의 경우 선택적 T: 접두사 또는 네임스페이스의 경우 N: 접두사가 있고 와일드카드 기호로 끝나는 정규화된 형식 또는 네임스페이스 이름(정규화된 이름이 지정된 형식 이름으로 시작하는 모든 형식, 또는 정규화된 이름이 지정된 네임스페이스 이름으로 시작하는 모든 형식 포함).
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