Поделиться через


Параметры конфигурации для правил качества кода

Правила качества кода имеют дополнительные параметры конфигурации помимо настройки серьезности. Например, каждый анализатор качества кода можно применять только к отдельным частям базы кода. Эти параметры задаются в формате пар ключ-значение в том же файле EditorConfig, где вы указываете уровни серьезности правил и общие параметры редактора.

Note

В этой статье нет сведений о настройке серьезности правила. Параметр .editorconfig для задания серьезности правила имеет другой префикс () для описанных здесь параметров (). Кроме того, описанные здесь параметры относятся только к правилам качества кода, в то время как параметр серьезности также применяется к правилам стиля кода. В качестве быстрого справочника, можно настроить серьезность правила с помощью следующего синтаксиса опции:

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

В этом разделе перечислены доступные параметры конфигурации для анализаторов кода. Дополнительные сведения см. в конфигурации анализатора.

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 Допустимые значения Значение по умолчанию Настраиваемые правила
Нужно ли игнорировать асинхронные методы, которые не возвращают значений true
false
false CA2007

Note

Этот параметр именовался skip_async_void_methods в более ранней версии.

exclude_single_letter_type_parameters

Description Допустимые значения Значение по умолчанию Настраиваемые правила
Следует ли исключить из правила односимвольные параметры типа, как, например, S в Collection<S> true
false
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 в методах расширения true
false
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

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