对于 ReSharper 6.1,C# 中没有内置的检查缺失 switch 的默认语句的检查项,但自定义模式似乎总体上很健壮。我已经在一些情况下尝试了它们,例如 if 块中缺少 else 语句,但不确定如何检查缺少默认值。
这是我目前拥有的内容:
搜索模式
switch($expr$)
{
case $val$:
$statement$
break;
$missingDefault$
}
替换模式
switch($expr$)
{
case $val$:
$statement$
break;
default:
break;
}
这里存在以下问题:
- 我们可以有任意数量的情况,它们本身是由一个或多个语句(case + break等)和任意数量的表达式组成的集合
- 对于搜索模式匹配,我们应该只匹配最后一个case之后没有内容的情况(即没有default)
- 我们需要在搜索模式中加入'break',以便我们可以定义此后语句不存在。不管怎样,编译器都要求加上这个break。
显然,这种搜索模式只匹配包含单个case和没有default的情况,因此相对无用。我需要一种能够匹配带有任意数量的情况、其中任何一个情况可能包含或不包含break(除了最后一个case),并且可以包含任意数量的语句,但没有default的模式。
感谢您的帮助。