CA1720:識別子には型名を含めないでください

プロパティ
ルール ID CA1720
Title 識別子には型名を含めないでください
[カテゴリ] 名前を付ける
修正が中断ありか中断なしか あり
.NET 8 では既定で有効 いいえ

原因

メンバー内のパラメーターの名前に、データ型名が含まれています。

\- または -

メンバーの名前に、言語固有のデータ型名が含まれています。

既定では、この規則の対象は外部から参照可能なメンバーのみですが、これは構成可能です。

規則の説明

パラメーターとメンバーの名前では、パラメーターとメンバーの型ではなく意味を伝えるようにします。パラメーターとメンバーの型は、開発ツールで表示されるためです。 メンバー名では、データ型名を使用する必要がある場合、言語固有の名前ではなく、言語に依存しない名前を使用します。 たとえば、C# の型名 int の代わりに、言語に依存しないデータ型名 Int32 を使用します。

パラメーターまたはメンバーの名前に含まれる各個別トークンは、大文字と小文字を区別せずに、次の言語固有のデータ型名に対してチェックされます。

  • Bool
  • WChar
  • Int8
  • UInt8
  • Short
  • UShort
  • int
  • UInt
  • 整数型
  • UInteger
  • Long
  • ULong
  • 符号なし
  • 符号付き
  • Float
  • Float32
  • Float64

さらに、パラメーターの名前は、大文字と小文字を区別せずに、次の言語と無関係なデータ型名に対してもチェックされます。

  • Object
  • Boolean
  • Char
  • String
  • SByte
  • Byte
  • UByte
  • Int16
  • UInt16
  • Int32
  • UInt32
  • Int64
  • UInt64
  • IntPtr
  • Ptr
  • ポインター
  • UInptr
  • UPtr
  • UPointer
  • Single
  • Double
  • Decimal (10 進数型)
  • 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