ReSharper 6.1 の場合、C# のスイッチ内でデフォルト ステートメントが欠落しているというビルトインの検査項目はありませんが、カスタム パターンは一般的に堅牢に見えます。if ブロックの else ステートメントが欠落しているなどのケースでは、少しいじりましたが、欠落しているデフォルトをチェックする方法がわかりません。
これが私がこれまでに持っているものです:
検索パターン
switch($expr$)
{
case $val$:
$statement$
break;
$missingDefault$
}
交換パターン
switch($expr$)
{
case $val$:
$statement$
break;
default:
break;
}
$expr$ は式、$val は式、$statement$ は任意の数のステートメント、$missingDefault$ は最大 0 個のステートメントです。
ここでの問題は次のとおりです。
- ケースはいくつでも持つことができ、それ自体が 1 つ以上のステートメント (case + break など) と任意の数の式で構成されるコレクションです。
- 検索パターン マッチングでは、最後のケースの後に何もない (つまり、デフォルトがない) 出現に対してのみマッチングする必要があります。
- その後、ステートメントが存在しないことを定義できるように、検索パターンに「ブレーク」が必要です。とにかく、このブレークはコンパイラによって必要とされます。
明らかに、この検索パターンは単一の caseを含み、 default を含まないオカレンスに対してのみ一致するため、比較的役に立ちません。任意の数の caseを持つ switch と一致するパターンが必要です。そのうちの任意の数にはブレークが含まれる場合と含まれない場合があり (最後の case を除く)、任意の数のステートメントを含めることができ、デフォルトはありません。
ご協力いただきありがとうございます。