Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Правила качества кода имеют дополнительные параметры конфигурации помимо настройки серьезности. Например, каждый анализатор качества кода можно применять только к отдельным частям базы кода. Эти параметры задаются в формате пар ключ-значение в том же файле EditorConfig, где вы указываете уровни серьезности правил и общие параметры редактора.
Note
В этой статье нет сведений о настройке серьезности правила. Параметр
dotnet_diagnostic.<rule ID>.severity = <severity value>
Однако, для получения подробной информации о настройке уровня серьезности, см. Уровень серьезности.
Области настройки
Каждый параметр уточнения можно задать для всех правил, для определенной категории (например, безопасности или проектирования) или для конкретного правила.
Все правила
Следующий синтаксис позволяет применить параметр для всех правил:
| Syntax | Example |
|---|---|
| dotnet_code_quality.<OptionName> = <OptionValue> | dotnet_code_quality.api_surface = public |
Значения для <OptionName> указаны в разделе Параметры.
Категория правил
Следующий синтаксис позволяет применить параметр для одной категории правил:
| Syntax | Example |
|---|---|
| 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
Определенное правило
Следующий синтаксис позволяет применить параметр для конкретного правила:
| Syntax | Example |
|---|---|
| dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> | dotnet_code_quality.CA1040.api_surface = public |
Options
В этом разделе перечислены доступные параметры конфигурации для анализаторов кода. Дополнительные сведения см. в конфигурации анализатора.
- additional_enum_none_names
- additional_inheritance_excluded_symbol_names
- additional_required_generic_interfaces
- additional_required_suffixes
- additional_use_results_methods
- additional_string_formatting_methods
- allowed_suffixes
- analyzed_symbol_kinds
- api_surface
- assume_method_enumerates_parameters
- параметры анализа потока данных
- disallowed_symbol_names
- enable_platform_analyzer_on_pre_net5_target
- enum_values_prefix_trigger
- enumeration_methods
- exclude_aspnet_core_mvc_controllerbase
- exclude_indirect_base_types
- exclude_structs
- exclude_async_void_methods
- exclude_extension_method_this_parameter
- exclude_ordefault_methods
- exclude_single_letter_type_parameters
- excluded_symbol_names
- excluded_type_names_with_derived_types
- ignore_internalsvisibleto
- linq_chain_methods
- null_check_validation_methods
- output_kind
- points_to_analysis_kind
- required_modifiers
- try_determine_additional_string_formatting_methods_automatically
- unsafe_DllImportSearchPath_bits
- use_naming_heuristic
api_surface
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Какая часть поверхности API будет анализироваться |
public (применяется к public и protected API)internal или friend (применяется к internal API и private protected api)private (применимо к private API)all (применяется ко всем API)Для разделения значений используйте запятые (,) |
public |
CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040CA1041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058CA1062CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234 |
exclude_async_void_methods
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Нужно ли игнорировать асинхронные методы, которые не возвращают значений | truefalse |
false |
CA2007 |
Note
Этот параметр именовался skip_async_void_methods в более ранней версии.
exclude_single_letter_type_parameters
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
Следует ли исключить из правила односимвольные параметры типа, как, например, S в Collection<S> |
truefalse |
false |
CA1715 |
Note
Этот параметр именовался allow_single_letter_type_parameters в более ранней версии.
output_kind
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает, что нужно анализировать код в проекте, который создает сборку указанного типа | Одно или несколько полей перечисления OutputKind Для разделения значений используйте запятые (,) |
Все типы выходных данных | CA1515, CA1516, CA2007 |
required_modifiers
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает обязательные модификаторы для API, которые нужно анализировать | Одно или несколько значений из приведенной ниже таблицы допустимых модификаторов Для разделения значений используйте запятые (,) |
Зависит от конкретного правила | CA1802 |
| Разрешенный модификатор | Summary |
|---|---|
none |
Нет требований к модификатору |
static или Shared |
Должен быть объявлен как static (или Shared в Visual Basic) |
const |
Должен быть объявлен как const |
readonly |
Должен быть объявлен как readonly |
abstract |
Должен быть объявлен как abstract |
virtual |
Должен быть объявлен как virtual |
override |
Должен быть объявлен как override |
sealed |
Должен быть объявлен как sealed |
extern |
Должен быть объявлен как extern |
async |
Должен быть объявлен как async |
exclude_extension_method_this_parameter
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
Нужно ли пропускать анализ для параметра this в методах расширения |
truefalse |
false |
CA1062 |
null_check_validation_methods
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Имена методов проверки на значение NULL, которые проверяют отсутствие значений NULL в аргументах, передаваемых в метод | Форматы имен разрешенных методов (разделены с помощью |): — только имя метода (включает все методы с указанным именем, независимо от типа и пространства имен). — полные имена символов в формате идентификатора документации с необязательным префиксом M:. |
None | CA1062 |
additional_string_formatting_methods
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Имена дополнительных методов форматирования строк | Форматы разрешенных имен методов (разделенные знаком '|'): — только имя метода (включает все методы с этим именем независимо от типа и пространства имен); — полные имена в формате идентификатора документации для символа с необязательным префиксом M:. |
None | CA2241 |
excluded_type_names_with_derived_types
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Имена типов (включая все производные типы), исключаемых из анализа | Допустимые форматы имен символов (разделенные |): — только имя типа (включает все типы с этим именем, независимо от содержащего типа или пространства имен); — полностью квалифицированные имена в формате идентификатора документации для символа с необязательным префиксом T:. |
None | CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
excluded_symbol_names
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Имена символов, исключаемых из анализа | Допустимые форматы имен символов (разделенные |): — только имя символа (включает все символы с этим именем, любого типа и в любом пространстве имен); — полные имена в формате идентификатора документации для символа. Для каждого имени символа требуется префикс вида символа, например префикс M: для методов, префикс T: для типов и префикс N: для пространств имен.- .ctor используется для конструкторов, а .cctor — для статических конструкторов |
None | CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
disallowed_symbol_names
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Имена символов, запрещенных в контексте анализа | Допустимые форматы имен символов (разделенные |): — только имя символа (включает все символы с этим именем, независимо от содержащего типа или пространства имен); — Полностью квалифицированные имена в формате идентификатора документации для символа. Для каждого имени символа требуется префикс вида символа, например префикс M: для методов, префикс T: для типов и префикс N: для пространств имен.- .ctor используется для конструкторов, а .cctor — для статических конструкторов |
None | CA1031 |
exclude_ordefault_methods
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
Исключает FirstOrDefault и LastOrDefault методы из анализа. |
true или false |
false |
CA1826 |
ignore_internalsvisibleto
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Включает сборки, помеченные InternalsVisibleToAttribute, в ходе анализа. |
true или false |
true |
CA1812CA1852 |
try_determine_additional_string_formatting_methods_automatically
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Логическая опция для включения эвристического обнаружения дополнительных способов форматирования строк. Метод считается методом форматирования строк, если он имеет string format параметр, за которым следует params object[] параметр. |
true или false |
false |
CA2241 |
unsafe_DllImportSearchPath_bits
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
Настройка небезопасного значения DllImportSearchPath для анализа |
Целочисленные значения System.Runtime.InteropServices.DllImportSearchPath |
770 (то есть AssemblyDirectory | UseDllDirectoryForDependencies | ApplicationDirectory) |
CA5393 |
exclude_aspnet_core_mvc_controllerbase
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Исключить ASP.NET Core MVC ControllerBase в контексте CSRF |
true или false |
true |
CA5391 |
enum_values_prefix_trigger
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Задает пороговое значение для срабатывания правила присвоения имен значениям перечислений |
-
AnyEnumValue — правило активируется, если любое из значений перечисления начинается с имени типа перечисления.
- AllEnumValues — правило активируется, если все значения перечисления начинаются с имени типа перечисления.
- Heuristic — Правило активируется с помощью эвристики FxCop по умолчанию (то есть, если не менее 75% значений перечисления начинаются с имени типа перечисления). |
Heuristic |
CA1712 |
exclude_indirect_base_types
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Исключить косвенные базовые типы |
true или false |
true |
CA1710 |
additional_required_suffixes
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает дополнительные необходимые суффиксы | Список имен типов (разделенных |) с их обязательным суффиксом (разделенным ->). Форматы имен разрешенного типа:— только имя типа (включает все типы с именем, независимо от содержащего типа или пространства имен). — Полные имена в формате идентификатора документации символа с необязательным T: префиксом. |
None | CA1710 |
additional_required_generic_interfaces
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает дополнительные обязательные универсальные интерфейсы | Список имен интерфейсов, разделенных |, с обязательным универсальным полным именем интерфейса, разделенным ->. Допустимые форматы интерфейса:— только имя интерфейса (включает все интерфейсы с именем, независимо от типа или пространства имен). — Полные квалифицированные имена в формате идентификатора документации для символов с необязательным T: префиксом. |
None | CA1010 |
Examples:
| Значение опции | Summary |
|---|---|
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
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает типы или пространства имен, которые следует исключить из дерева иерархии наследования | Форматы имен разрешенного типа: — имя типа или пространства имен (включает все типы с именем, независимо от содержащего типа или пространства имен, а также всех типов, пространство имен которых содержит имя). — Имя типа или пространства имен, заканчивающееся подстановочным знаком (включает все типы, имя которых начинается с заданного имени, независимо от содержащего типа или пространства имен, и всех типов, пространство имен которых содержит имя). — Полные имена в формате идентификатора документации символа с необязательным префиксом T: для типов или префиксом N: для пространств имен.
— Полный тип или имя пространства имен с необязательным T: префиксом типа или N: префикса для пространства имен и заканчивая символом подстановочного знака (включает все типы, полное имя которого начинается с заданного имени типа, или все типы, полное имя которого начинается с заданного имени пространства имен). |
N:System.* (Это значение всегда автоматически добавляется в указанное значение) |
CA1501 |
analyzed_symbol_kinds
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает типы символов для анализа | Одно или несколько полей в виде разделенного запятыми SymbolKind списка. | Namespace, NamedType, Method, Property, Event, Parameter |
CA1716 |
use_naming_heuristic
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
Настраивает, будут ли параметры или имена свойств, содержащие Text, Message или Caption, вызывать срабатывание этого правила. |
true или false |
false |
CA1303 |
additional_use_results_methods
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает дополнительные пользовательские API, результаты которых должны использоваться | Имена дополнительных методов (разделённые с помощью |). Форматы разрешенных имен метода: — только имя метода (включает все методы с именем, независимо от содержащего типа или пространства имен). — Полные квалифицированные имена в формате идентификатора документации для символов с необязательным M: префиксом. |
None | CA1806 |
allowed_suffixes
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает допустимые суффиксы | Список (разделенный |) разрешенных суффиксов. | None | CA1711 |
enable_platform_analyzer_on_pre_net5_target
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает, следует ли включить анализ для TFM до .NET 5 |
true или false |
false |
CA1416 |
exclude_structs
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает, следует ли исключить структуры из анализа |
true или false |
false |
CA1051 |
additional_enum_none_names
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Задает дополнительные допустимые имена для поля перечисления нулевого значения | Список дополнительных имен (разделенных символом |). | None | CA1008 |
enumeration_methods
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Определяет дополнительные кастомные методы для перечисления объектов IEnumerable | Полные имена дополнительных методов (разделённые символом |). | None | CA1851 |
linq_chain_methods
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
Указывает дополнительные настраиваемые методы LINQ chain (т. е. методы принимают IEnumerable аргумент и возвращают новый IEnumerable экземпляр). |
Полные квалифицированные имена дополнительных методов (разделенные символом |). | None | CA1851 |
assume_method_enumerates_parameters
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
Указывает, следует ли предполагать, что пользовательские методы перечисляют свои параметры IEnumerable |
true или false |
false |
CA1851 |
Параметры анализа потока данных
Параметры в этом разделе настраивают правила анализа потока данных. Доступные параметры:
- dispose_analysis_kind
- dispose_ownership_transfer_at_constructor
- dispose_ownership_transfer_at_method_call
- interprocedural_analysis_kind
- max_interprocedural_lambda_or_local_function_call_chain
- max_interprocedural_method_call_chain
- copy_analysis
- sufficient_IterationCount_for_weak_KDF_algorithm
Дополнительные сведения об анализе потока данных см. в разработке анализаторов на основе анализа потока данных.
dispose_analysis_kind
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает, какие пути следует проанализировать на нарушения правил освобождения ресурсов |
-
AllPaths — отслеживайте и сообщайте о отсутствующих нарушениях по всем путям (не исключениям и путям исключений). Кроме того, также помечайте использование нерекомендуемых шаблонов освобождения, которые могут вызвать потенциальные утечки ресурсов.
- AllPathsOnlyNotDisposed — отслеживайте и сообщайте об отсутствующих нарушениях по всем путям (как при возникновении исключений, так и при их отсутствии). Не отмечайте использование не рекомендованных образцов освобождения ресурсов, которые могут привести к потенциальным утечкам при освобождении ресурсов.
- NonExceptionPaths — выявляйте и фиксируйте отсутствия нарушений очищения только в кодовых путях, не связанных с исключениями. Кроме того, также помечайте использование нерекомендованных шаблонов освобождения ресурсов, которые могут привести к потенциальным утечкам ресурсов.
- NonExceptionPathsOnlyNotDisposed — отслеживайте и сообщайте об отсутствующих нарушениях только в тех путях программы, которые не содержат исключений. Не отмечайте использование нерекоменционных шаблонов удаления, которые могут вызвать потенциальные утечки удаления. |
NonExceptionPaths |
CA2000 |
dispose_ownership_transfer_at_constructor
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Настройка передачи права владения для аргументов, переданных в вызов конструктора |
true или false |
false |
CA2000 |
dispose_ownership_transfer_at_method_call
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Настройка передачи права управления удалением для удаляемых объектов, переданных в виде аргументов в вызовы методов |
true или false |
false |
CA2000 |
interprocedural_analysis_kind
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает, следует ли выполнять межпросходный анализ для вызовов метода источника |
None, NonContextSensitive, ContextSensitive |
Для каждого настраиваемого правила | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
max_interprocedural_method_call_chain
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает максимальную длину цепочки вызовов методов для межпроцедурного анализа потоков данных. | Целое число без знака | 3 | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
max_interprocedural_lambda_or_local_function_call_chain
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает максимальную длину лямбда-или локальной цепочки вызовов функций для анализа межпроцедального анализа потока данных | Целое число без знака | 3 | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
points_to_analysis_kind
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает, следует ли выполнять PointsToAnalysis |
None, PartialWithoutTrackingFieldsAndProperties, Complete |
Для каждого правила | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
copy_analysis
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Указывает, следует ли выполнять анализ копирования (отслеживает значения и ссылочные копии) |
true или false |
true для большинства правил |
CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
sufficient_IterationCount_for_weak_KDF_algorithm
| Description | Допустимые значения | Значение по умолчанию | Настраиваемые правила |
|---|---|---|---|
| Настраивает достаточное количество итерации при использовании алгоритма слабой функции извлечения ключей (KDF) | Integer | 100000 для большинства правил | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |