代码质量规则配置选项

除了配置严重性外,代码质量规则还有其他配置选项。 例如,可以将每个代码质量分析器配置为仅应用于代码库的特定部分。 通过向指定规则严重性和常规编辑器首选项的同一个 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)
internalfriend(适用于 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 无修饰符要求
staticShared 必须声明为 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:(可选)
CA1062

additional_string_formatting_methods

描述 允许的值 默认值 可配置的规则
其他字符串格式设置方法的名称 允许的方法名称格式(以 | 分隔):
- 仅方法名称(包括具有相应名称的所有方法,不考虑包含的类型或命名空间)
- 完全限定的名称,使用符号的文档 ID 格式,前缀为 M:(可选)
CA2241

excluded_type_names_with_derived_types

描述 允许的值 默认值 可配置的规则
类型的名称,用于将类型及其所有派生类型从分析范围内排除 允许的符号名称格式(以 | 分隔):
- 仅类型名称(包括具有相应名称的所有类型,不考虑包含的类型或命名空间)
- 完全限定的名称,使用符号的文档 ID 格式,前缀为 T:(可选)
CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400

excluded_symbol_names

描述 允许的值 默认值 可配置的规则
从分析范围排除的符号的名称 允许的符号名称格式(以 | 分隔):
- 仅符号名称(包括具有相应名称的所有符号,不考虑包含的类型或命名空间)
- 完全限定的名称,使用符号的文档 ID 格式 每个符号名称都需要带有一个符号类型前缀,例如表示方法的 M: 前缀、表示类型的 T: 前缀,以及表示命名空间的 N: 前缀。
- .ctor 表示构造函数,.cctor 表示静态构造函数
CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400

disallowed_symbol_names

描述 允许的值 默认值 可配置的规则
不允许出现在分析上下文中的符号的名称 允许的符号名称格式(以 | 分隔):
- 仅符号名称(包括具有相应名称的所有符号,不考虑包含的类型或命名空间)
- 完全限定的名称,使用符号的文档 ID 格式 每个符号名称都需要带有一个符号类型前缀,例如表示方法的 M: 前缀、表示类型的 T: 前缀,以及表示命名空间的 N: 前缀。
- .ctor 表示构造函数,.cctor 表示静态构造函数
CA1031

exclude_ordefault_methods

描述 允许的值 默认值 可配置的规则
从分析中排除 FirstOrDefaultLastOrDefault 方法。 truefalse false CA1826

ignore_internalsvisibleto

描述 允许的值 默认值 可配置的规则
在分析中包括标有 InternalsVisibleToAttribute 的程序集。 truefalse true CA1812CA1852

try_determine_additional_string_formatting_methods_automatically

说明 允许的值 默认值 可配置的规则
布尔选项,用于启用启发式检测其他字符串格式设置方法。
如果方法具有 string format 参数且后跟 params object[] 参数,则该方法被视为字符串格式设置方法。
truefalse 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 truefalse true CA5391

dispose_analysis_kind

说明 允许的值 默认值 可配置的规则
指定要分析哪些路径存在释放冲突 - AllPaths - 跟踪和报告所有路径(非异常和异常路径)上丢失的释放冲突。 此外,还会标记使用不推荐的释放模式,该模式可能导致潜在释放泄漏。
- AllPathsOnlyNotDisposed - 跟踪和报告所有路径(非异常和异常路径)上丢失的释放冲突。 不标记使用可能导致潜在释放泄漏的不推荐的释放模式。
- NonExceptionPaths - 仅在非异常程序路径上跟踪和报告丢失的释放冲突。 此外,还会标记使用不推荐的释放模式,该模式可能导致潜在释放泄漏。
- NonExceptionPathsOnlyNotDisposed - 仅在非异常程序路径上跟踪和报告丢失的释放冲突。 不标记使用可能导致潜在释放泄漏的不推荐的释放模式。
NonExceptionPaths CA2000

dispose_ownership_transfer_at_constructor

说明 允许的值 默认值 可配置的规则
为传递给构造函数调用的参数配置释放所有权转移 truefalse false CA2000

dispose_ownership_transfer_at_method_call

说明 允许的值 默认值 可配置的规则
为作为参数传递给方法调用的可释放对象配置释放所有权转移 truefalse false CA2000

enum_values_prefix_trigger

说明 允许的值 默认值 可配置的规则
指定要触发枚举值命名规则的阈值 - AnyEnumValue - 如果任意枚举值以枚举类型名称开头,则会触发此规则
- AllEnumValues - 如果所有枚举值均以枚举类型名称开头,则会触发此规则
- Heuristic - 使用默认 FxCop 启发式(即至少 75% 的枚举值以枚举类型名称开头)触发规则。
Heuristic CA1712

exclude_indirect_base_types

说明 允许的值 默认值 可配置的规则
排除间接基类型 truefalse true CA1710

additional_required_suffixes

说明 允许的值 默认值 可配置的规则
指定其他所需的后缀 类型名称(用 | 分隔)及其所需后缀(用 -> 分隔)的列表。 允许的类型名称格式:
- 仅类型名称(包括具有相应名称的所有类型,不考虑包含的类型或命名空间)。
- 完全限定的名称,使用符号的文档 ID 格式,前缀为 T:(可选)。
CA1710

additional_required_generic_interfaces

说明 允许的值 默认值 可配置的规则
指定其他所需的泛型接口 接口名称(用 | 分隔)及其所需的通用完全限定接口(用 -> 分隔)的列表。 允许的接口格式:
- 仅接口名称(包括具有相应名称的所有接口,不考虑包含的类型或命名空间)。
- 完全限定的名称,使用符号的文档 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

additional_inheritance_excluded_symbol_names

说明 允许的值 默认值 可配置的规则
指定要从继承层次结构树中排除的类型或命名空间 允许的类型名称格式:
- 类型或命名空间名称(包括具有名称的所有类型,不考虑包含的类型或命名空间,以及其命名空间包含名称的所有类型)。
- 以通配符结尾的类型或命名空间名称(包括名称以给定名称开头的所有类型,不考虑包含的类型或命名空间,以及其命名空间包含名称的所有类型)。
- 完全限定的名称,使用符号的文档 ID 格式,使用可选 T: 前缀代表类型,或者使用 N: 前缀代表命名空间。
- 完全限定的名称或命名空间名称,使用可选 T: 前缀代表类型,或使用 N: 前缀代表命名空间,且以通配符结尾(包括其完全限定名称以给定后缀开头的所有类型)。
N:System.*(此值始终自动添加到提供的值) CA1501

analyzed_symbol_kinds

说明 允许的值 默认值 可配置的规则
指定要分析的符号类型 以逗号分隔列表表示的一个或多个 SymbolKind 字段。 Namespace, NamedType, Method, Property, Event, Parameter CA1716

use_naming_heuristic

说明 允许的值 默认值 可配置的规则
配置包含 TextMessageCaption 的参数或属性名称是否会触发此规则 truefalse false CA1303

additional_use_results_methods

说明 允许的值 默认值 可配置的规则
指定必须使用其结果的其他自定义 API 其他方法的名称(用 | 分隔)。 允许的方法名称格式:
- 仅方法名称(包括具有相应名称的所有方法,不考虑包含类型或命名空间)。
- 完全限定的名称,使用符号的文档 ID 格式,前缀为 M:(可选)。
CA1806

allowed_suffixes

说明 允许的值 默认值 可配置的规则
指定允许的后缀 允许的后缀列表(用 | 分隔)。 CA1711

enable_platform_analyzer_on_pre_net5_target

说明 允许的值 默认值 可配置的规则
指定是否为 .NET 5 之前的 TFM 启用分析 truefalse false CA1416

exclude_structs

说明 允许的值 默认值 可配置的规则
指定是否从分析中排除结构 truefalse false CA1051

additional_enum_none_names

说明 允许的值 默认值 可配置的规则
为零值枚举字段指定其他允许的名称 其他名称列表(用 | 分隔)。 CA1008

enumeration_methods

说明 允许的值 默认值 可配置的规则
指定枚举 IEnumerable 的其他自定义方法 其他方法的完全限定名称(用 | 分隔)。 CA1851

linq_chain_methods

说明 允许的值 默认值 可配置的规则
指定其他自定义 LINQ 链方法(即接收 IEnumerable 参数并返回新的 IEnumerable 实例的方法) 其他方法的完全限定名称(用 | 分隔)。 CA1851

assume_method_enumerates_parameters

说明 允许的值 默认值 可配置的规则
指定是否假定自定义方法枚举其 IEnumerable 参数 truefalse false CA1851