CA1720: идентификаторы не должны содержать имен типов

Свойство Значение
Идентификатор правила CA1720
Заголовок Идентификаторы не должны содержать имена типов
Категория Именование
Исправление является критическим или не критическим Критическое
Включен по умолчанию в .NET 8 No

Причина

Имя параметра в элементе содержит имя типа данных.

–или–

Имя элемента содержит имя типа данных, зависящее от языка.

По умолчанию это правило проверяет только видимые извне элементы, но это поведение можно настроить.

Описание правила

Имена параметров и элементов лучше использовать для передачи их значения, чем для описания их типа, которое должно предоставляться средствами разработки. Если для элементов необходимо имя типа данных, используйте не зависящее от языка имя. Например, вместо имени типа C# int используйте имя типа данных, не зависящее от языка, Int32.

Каждый отдельный токен в имени параметра или элемента проверяется на соответствие указанным ниже зависящим от языка именам типов данных без учета регистра.

  • Bool
  • WChar
  • Int8
  • UInt8
  • Короткие
  • UShort
  • Int
  • UInt
  • Целое
  • UInteger
  • Long
  • ULong
  • Без знака
  • Со знаком
  • Тип с плавающей запятой
  • Float32
  • Float64

Кроме того, имена параметров также проверяются на соответствие следующим независящим от языка именам типов данных без учета регистра.

  • Объект
  • Логический
  • Char
  • Строка
  • SByte
  • Байт
  • UByte
  • Int16
  • UInt16
  • Int32
  • UInt32
  • Int64
  • UInt64
  • IntPtr
  • Ptr
  • Указатель
  • UInptr
  • UPtr
  • UPointer
  • Одна
  • Двойной
  • Decimal
  • GUID

Устранение нарушений

При возникновении для параметра:

замените идентификатор типа данных в имени параметра термином, который лучше описывает его значение, или более универсальным термином, например "value".

При возникновении для элемента:

замените идентификатор зависящего от языка типа данных в имени элемента термином, который лучше описывает его значение, не зависящим от языка эквивалентом или более универсальным термином, например "value".

Когда лучше отключить предупреждения

Иногда может быть целесообразно использовать имена параметров и элементов на основе типов. Однако в новых разработках нет известных ситуаций, в которых следует отключать вывод предупреждения для этого правила. Может потребоваться отключить вывод предупреждения для ранее выпущенных библиотек.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

#pragma warning disable CA1720
// The code that's violating the rule is on this line.
#pragma warning restore CA1720

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

[*.{cs,vb}]
dotnet_diagnostic.CA1720.severity = none

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

Настройка кода для анализа

Используйте следующий параметр, чтобы выбрать части базы кода для применения этого правила.

Этот параметр можно настроить только для этого правила, для всех правил, к которым он применяется, или для всех правил в этой категории (именование), к которым она применяется. Дополнительные сведения см. в статье Параметры конфигурации правила качества кода.

Включение определенных контактных зон API

Вы можете настроить, для каких частей базы кода следует выполнять это правило в зависимости от их доступности. Например, чтобы указать, что правило должно выполняться только для закрытой контактной зоны API, добавьте следующую пару "ключ-значение" в файл EDITORCONFIG в своем проекте:

dotnet_code_quality.CAXXXX.api_surface = private, internal