CA1711: идентификаторы не должны иметь неверных суффиксов
Свойство | Значение |
---|---|
Идентификатор правила | CA1711 |
Заголовок | Идентификаторы не должны иметь неправильные суффиксы |
Категория | Именование |
Исправление является критическим или не критическим | Критическое |
Включен по умолчанию в .NET 9 | 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 |
Queue | 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
Заметка
Замените XXXX
частью CAXXXX
идентификатором применимого правила.
Разрешите суффиксы
Вы можете настроить список разрешенных суффиксов, разделив их символом вертикальной черты ("|"). Например, чтобы указать, что правило не должно выполняться для суффиксов Flag и Flags, добавьте следующую пару "ключ-значение" в файл .editorconfig в своем проекте:
dotnet_code_quality.ca1711.allowed_suffixes = Flag|Flags