CA1711: идентификаторы не должны иметь неверных суффиксов
Свойство | Значение |
---|---|
Идентификатор правила | CA1711 |
Заголовок | Идентификаторы не должны иметь неправильные суффиксы |
Категория | Именование |
Исправление является критическим или не критическим | Критическое |
Включен по умолчанию в .NET 8 | No |
Причина
Идентификатор имеет неправильный суффикс.
По умолчанию это правило проверяет только видимые извне идентификаторы, но это поведение можно настроить.
Описание правила
В соответствии с соглашением об именовании, определенные зарезервированные суффиксы должны добавляться только к именам типов, которые расширяют некоторые базовые типы или реализуют определенные интерфейсы, а также производные от них типы. В именах других типов зарезервированные суффиксы использоваться не должны.
В следующей таблице перечислены зарезервированные суффиксы и базовые типы и интерфейсы, с которыми они связаны.
Суффикс | Базовый тип или интерфейс |
---|---|
Атрибут | System.Attribute |
Сбор | System.Collections.ICollection System.Collections.IEnumerable System.Collections.Queue System.Collections.Stack System.Collections.Generic.ICollection<T> System.Data.DataSet System.Data.DataTable |
Dictionary | System.Collections.IDictionary System.Collections.Generic.IDictionary<TKey,TValue> |
Eventargs | System.EventArgs |
EventHandler | Делегат обработчика событий |
Исключение | System.Exception |
Разрешение | System.Security.IPermission |
Очередь | System.Collections.Queue |
Стек | System.Collections.Stack |
Stream | System.IO.Stream |
Кроме того, не следует использовать следующие суффиксы:
Delegate
Enum
Impl
(вместо нее следует использоватьCore
)Ex
или аналогичный суффикс, чтобы отличить его от более ранней версии того же типаFlag
илиFlags
для типов перечисления
Соглашения об именовании обеспечивают единство вида библиотек, предназначенных для среды CLR. Это сокращает время, необходимое для изучения новых библиотек программного обеспечения, и позволяет клиентам увериться в том, что разработчик библиотеки имеет опыт разработки управляемого кода. Дополнительные сведения см. в разделе Рекомендации по именованию: классы, структуры и интерфейсы.
Устранение нарушений
Удалите суффикс из имени типа.
Когда лучше отключить предупреждения
Нельзя отключить предупреждение из этого правила, если суффикс не будет однозначен в домене приложения.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA1711
// The code that's violating the rule is on this line.
#pragma warning restore CA1711
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA1711.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.
Настройка кода для анализа
Используйте следующие параметры, чтобы указать части базы кода, к которым будет применяться это правило.
Эти параметры можно настроить только для этого правила, для всех правил, к которым она применяется, или для всех правил в этой категории (именование), к которым она применяется. Дополнительные сведения см. в статье Параметры конфигурации правила качества кода.
Включение определенных контактных зон API
Вы можете настроить, для каких частей базы кода следует выполнять это правило в зависимости от их доступности. Например, чтобы указать, что правило должно выполняться только для закрытой контактной зоны API, добавьте следующую пару "ключ-значение" в файл EDITORCONFIG в своем проекте:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Разрешите суффиксы
Вы можете настроить список разрешенных суффиксов, разделив их символом вертикальной черты ("|"). Например, чтобы указать, что правило не должно выполняться для суффиксов Flag и Flags, добавьте следующую пару "ключ-значение" в файл .editorconfig в своем проекте:
dotnet_code_quality.ca1711.allowed_suffixes = Flag|Flags