Ответ 1
Примечание. Я не пытаюсь ответить на вопрос. Но давайте посмотрим, что говорит это конкретное правило.
Правило S128 говорит:
Ключи коммутаторов должны заканчиваться безусловным оператором "break"
Когда выполнение не заканчивается явно в конце коммутатора case, он продолжает выполнять утверждения следующего случая. Хотя это иногда преднамеренно, часто это ошибка, которая ведет к неожиданному поведению.
Несоответствующий пример кода
switch (myVariable) {
case 1:
foo();
break;
case 2: // Both 'doSomething()' and 'doSomethingElse()' will be executed. Is it on purpose ?
doSomething();
default:
doSomethingElse();
break;
}
Соответствующее решение
switch (myVariable) {
case 1:
foo();
break;
case 2:
doSomething();
break;
default:
doSomethingElse();
break;
}
Исключения
Это правило ослабляется в следующих случаях:
switch (myVariable) {
case 0: // Empty case used to specify the same behavior for a group of cases.
case 1:
doSomething();
break;
case 2: // Use of return statement
return;
case 3: // Use of throw statement
throw new IllegalStateException();
default: // For the last case, use of break statement is optional
doSomethingElse();
}
Ссылки: https://sonar.spring.io/rules/show/squid:S128?layout=false