对于 ReSharper 6.1,对于 C# 的 switch 中缺少默认语句,没有内置检查项,但是自定义模式看起来通常很健壮。对于缺少 if 块的 else 语句之类的情况,我对它们进行了一些处理,但我不确定如何检查缺少的默认值。
这是我到目前为止所拥有的:
搜索模式
switch($expr$)
{
case $val$:
$statement$
break;
$missingDefault$
}
替换模式
switch($expr$)
{
case $val$:
$statement$
break;
default:
break;
}
其中 $expr$ 是一个表达式,$val 是一个表达式,$statement$ 是任意数量的语句,$missingDefault$ 是最多 0 个语句。
这里的问题如下:
- 我们可以有任意数量的 case,它们本身就是由一个或多个语句(case + break 等)和任意数量的表达式组成的集合
- 对于搜索模式匹配,我们应该只匹配在最后一种情况之后没有任何内容的情况(即没有默认值)
- 我们需要搜索模式中的“中断”,以便我们可以在之后定义不存在的语句。无论如何,编译器需要这个中断。
显然,这种搜索模式只匹配包含单个 case 且没有 default的匹配项,因此相对没用。我需要一个模式来匹配具有任意数量 case 的开关,其中任意数量可能包含也可能不包含中断(最后一种情况除外),并且可以包含任意数量的语句,并且没有默认值。
谢谢你的帮助。