| プロパティ | 値 |
|---|---|
| ルール ID | CA1801 |
| Title | 使用されていないパラメーターの確認 |
| [カテゴリ] | 使用方法 |
| 修正が中断ありか中断なしか | 中断なし - 変更に関係なく、メンバーがアセンブリの外部で参照されない場合。 中断なし - 本体内でパラメーターを使用するようにメンバーを変更した場合。 あり - パラメーターを削除するとアセンブリの外部から参照できるようになる場合。 |
| .NET 10 で既定で有効 | いいえ |
原因
メソッドのシグネチャに、メソッドの本体で使用されていないパラメーターがあります。
この規則では、次の種類のメソッドは検証されません。
デリゲートによって参照されるメソッド。
イベント ハンドラーとして使用されるメソッド。
シリアル化コンストラクター (ガイドラインを参照してください)。
シリアル化 GetObjectData メソッド。
abstract(Visual Basic ではMustOverride) 修飾子で宣言されたメソッド。virtual(Visual Basic ではOverridable) 修飾子で宣言されたメソッド。override(Visual Basic ではOverrides) 修飾子で宣言されたメソッド。extern(Visual Basic ではDeclareステートメント) 修飾子で宣言されたメソッド。
この規則では、、_、_1 などの_2シンボルを使用して名前が付けられたパラメーターは検出されません。 これにより、シグネチャの要件に必要なパラメーター (デリゲートとして使用されるメソッド、特別な属性を持つパラメーター、フレームワークによって実行時に暗黙的にアクセスされるがコードで参照されないパラメーターなど) に対する警告ノイズが軽減されます。
注意
この規則は、IDE0060 を優先して非推奨になっています。 ビルド時に IDE0060 アナライザーを適用する方法の詳細については、「コード スタイルの分析」を参照してください。
規則の説明
メソッド本体で使用されていない非仮想メソッドのパラメーターを確認して、それらにアクセスしていないことに関連する不正確さが存在しないことを確認します。 未使用のパラメーターがあると、メンテナンスとパフォーマンスのコストが発生します。
この規則に違反すると、メソッドの実装のバグにつながる場合があります。 たとえば、メソッドの本体でパラメーターを使用するべきでした。 旧バージョンとの互換性のためにパラメーターが存在する必要がある場合は、この規則の警告を抑制します。
違反の修正方法
この規則違反を修正するには、使用されていないパラメーター (破壊的変更) を削除するか、メソッド本体でパラメーターを使用します (非破壊的変更)。
どのようなときに警告を抑制するか
この規則による警告は抑制しても安全です。
以前に発行されたコードの修正は破壊的変更になります。
thisのカスタム拡張メソッドの Microsoft.VisualStudio.TestTools.UnitTesting.Assert パラメーター。 Assert クラスの関数は静的であるため、メソッド本体のthisパラメーターにアクセスする必要はありません。
警告を抑制する
単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。
#pragma warning disable CA1801
// The code that's violating the rule is on this line.
#pragma warning restore CA1801
ファイル、フォルダー、またはプロジェクトの規則を無効にするには、noneでその重要度を に設定します。
[*.{cs,vb}]
dotnet_diagnostic.CA1801.severity = none
詳細については、「コード分析の警告を抑制する方法」を参照してください。
分析するコードを構成する
次のオプションを使用して、コードベースのどの部分に対してこの規則を実行するか構成します。
このオプションを構成できる対象は、この規則だけ、それを適用するすべての規則、それを適用するこのカテゴリ (パフォーマンス) のすべての規則のいずれかです。 詳細については、「コード品質規則の構成オプション」を参照してください。
特定の API サーフェイスを含める
api_surface オプションを設定することで、アクセスの可否に基づいてこのルールを実行するコードベースの部分を構成できます。 たとえば、非パブリック API サーフェイスでのみ規則を実行するように指定するには、プロジェクトの .editorconfig ファイルに次のキーと値のペアを追加します。
dotnet_code_quality.CAXXXX.api_surface = private, internal
注意
XXXX の CAXXXX 部分を該当するルールの ID に置き換えます。
既定では、CA1801 規則はすべての API サーフェイス (パブリック、内部、プライベート) に適用されます。
例
2 つのメソッドを次の例に示します。 1 つのメソッドが規則に違反し、もう一方のメソッドが規則を満たしています。
// This method violates the rule.
public static string GetSomething(int first, int second)
{
return first.ToString(CultureInfo.InvariantCulture);
}
// This method satisfies the rule.
public static string GetSomethingElse(int first)
{
return first.ToString(CultureInfo.InvariantCulture);
}
関連規則
.NET