Проверить отсутствие регистра по умолчанию в операторе switch

В ReSharper 6.1 нет встроенного -элемента проверки на предмет отсутствующих операторов по умолчанию в переключателе для C #, однако пользовательские шаблоны в целом кажутся надежными. Я немного возился с ними для таких случаев, как отсутствие операторов else для блоков if, но я не уверен, как выполнить проверку на отсутствие значения по умолчанию.

Вот что у меня есть:

Шаблон поиска

switch($expr$)
{
    case $val$:
        $statement$
        break;
    $missingDefault$
}

Шаблон замены

switch($expr$)
{
    case $val$:
        $statement$
        break;
    default:
        break;
}

Где $expr$ — выражение, $val — выражение, $statement$ — любое количество операторов, а $missingDefault$ — не более 0 операторов.

Проблемы здесь следующие:

  • У нас может быть любое количество случаев, которые сами являются набором, состоящим из одного или нескольких операторов (case + break и т. д. )и любого количества выражений
  • Для сопоставления шаблонов поиска мы должны сопоставлять только те вхождения, в которых ничего нет после последнего случая (, т.е. нет по умолчанию)
  • Нам нужен «разрыв» в шаблоне поиска, чтобы мы могли определить отсутствие операторов после этого. Этот перерыв в любом случае требуется компилятору.

Очевидно, что этот шаблон поиска соответствует только вхождению, содержащему один случай и не имеющему значения по умолчанию , поэтому он относительно бесполезен. Мне нужен шаблон, который будет соответствовать переключателям с любым количеством случаев , любое количество которых может содержать или не содержать разрыв (, кроме последнего случая ), и может содержать любое количество операторов, и нет по умолчанию.

Спасибо за вашу помощь.

10
задан jropella 29 April 2017 в 10:07
поделиться