代码质量规则配置选项
除了配置严重性外,代码质量规则还有其他配置选项。 例如,可以将每个代码质量分析器配置为仅应用于代码库的特定部分。 通过向指定规则严重性和常规编辑器首选项的同一个 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_surface
- exclude_async_void_methods
- exclude_single_letter_type_parameters
- output_kind
- required_modifiers
- exclude_extension_method_this_parameter
- null_check_validation_methods
- additional_string_formatting_methods
- excluded_type_names_with_derived_types
- excluded_symbol_names
- disallowed_symbol_names
- exclude_ordefault_methods
- ignore_internalsvisibleto
- try_determine_additional_string_formatting_methods_automatically
- unsafe_DllImportSearchPath_bits
- exclude_aspnet_core_mvc_controllerbase
- dispose_analysis_kind
- dispose_ownership_transfer_at_constructor
- dispose_ownership_transfer_at_method_call
- enum_values_prefix_trigger
- exclude_indirect_base_types
- additional_required_suffixes
- additional_required_generic_interfaces
- additional_inheritance_excluded_symbol_names
- analyzed_symbol_kinds
- use_naming_heuristic
- additional_use_results_methods
- allowed_suffixes
- enable_platform_analyzer_on_pre_net5_target
- exclude_structs
- additional_enum_none_names
- enumeration_methods
- linq_chain_methods
- assume_method_enumerates_parameters
api_surface
描述 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
要分析 API 图面的哪个部分 | public (适用于 public 和 protected API)internal 或 friend (适用于 internal 和 private 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: (可选) |
无 | CA1062 |
additional_string_formatting_methods
描述 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
其他字符串格式设置方法的名称 | 允许的方法名称格式(以 | 分隔): - 仅方法名称(包括具有相应名称的所有方法,不考虑包含的类型或命名空间) - 完全限定的名称,使用符号的文档 ID 格式,前缀为 M: (可选) |
无 | CA2241 |
excluded_type_names_with_derived_types
描述 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
类型的名称,用于将类型及其所有派生类型从分析范围内排除 | 允许的符号名称格式(以 | 分隔): - 仅类型名称(包括具有相应名称的所有类型,不考虑包含的类型或命名空间) - 完全限定的名称,使用符号的文档 ID 格式,前缀为 T: (可选) |
无 | 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 表示静态构造函数 |
无 | 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 表示静态构造函数 |
无 | CA1031 |
exclude_ordefault_methods
描述 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
从分析中排除 FirstOrDefault 和 LastOrDefault 方法。 |
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
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定要分析哪些路径存在释放冲突 | - AllPaths - 跟踪和报告所有路径(非异常和异常路径)上丢失的释放冲突。 此外,还会标记使用不推荐的释放模式,该模式可能导致潜在释放泄漏。- AllPathsOnlyNotDisposed - 跟踪和报告所有路径(非异常和异常路径)上丢失的释放冲突。 不标记使用可能导致潜在释放泄漏的不推荐的释放模式。- NonExceptionPaths - 仅在非异常程序路径上跟踪和报告丢失的释放冲突。 此外,还会标记使用不推荐的释放模式,该模式可能导致潜在释放泄漏。- NonExceptionPathsOnlyNotDisposed - 仅在非异常程序路径上跟踪和报告丢失的释放冲突。 不标记使用可能导致潜在释放泄漏的不推荐的释放模式。 |
NonExceptionPaths |
CA2000 |
dispose_ownership_transfer_at_constructor
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
为传递给构造函数调用的参数配置释放所有权转移 | true 或 false |
false |
CA2000 |
dispose_ownership_transfer_at_method_call
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
为作为参数传递给方法调用的可释放对象配置释放所有权转移 | true 或 false |
false |
CA2000 |
enum_values_prefix_trigger
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定要触发枚举值命名规则的阈值 | - AnyEnumValue - 如果任意枚举值以枚举类型名称开头,则会触发此规则。- AllEnumValues - 如果所有枚举值均以枚举类型名称开头,则会触发此规则。- Heuristic - 使用默认 FxCop 启发式(即至少 75% 的枚举值以枚举类型名称开头)触发规则。 |
Heuristic |
CA1712 |
exclude_indirect_base_types
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
排除间接基类型 | true 或 false |
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
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
配置包含 Text 、Message 或 Caption 的参数或属性名称是否会触发此规则 |
true 或 false |
false |
CA1303 |
additional_use_results_methods
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定必须使用其结果的其他自定义 API | 其他方法的名称(用 | 分隔)。 允许的方法名称格式: - 仅方法名称(包括具有相应名称的所有方法,不考虑包含类型或命名空间)。 - 完全限定的名称,使用符号的文档 ID 格式,前缀为 M: (可选)。 |
无 | CA1806 |
allowed_suffixes
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定允许的后缀 | 允许的后缀列表(用 | 分隔)。 | 无 | 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
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
为零值枚举字段指定其他允许的名称 | 其他名称列表(用 | 分隔)。 | 无 | CA1008 |
enumeration_methods
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定枚举 IEnumerable 的其他自定义方法 | 其他方法的完全限定名称(用 | 分隔)。 | 无 | CA1851 |
linq_chain_methods
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定其他自定义 LINQ 链方法(即接收 IEnumerable 参数并返回新的 IEnumerable 实例的方法) |
其他方法的完全限定名称(用 | 分隔)。 | 无 | CA1851 |
assume_method_enumerates_parameters
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定是否假定自定义方法枚举其 IEnumerable 参数 |
true 或 false |
false |
CA1851 |