V7008. Two or more 'case' branches perform the same actions.
Анализатор обнаружил ситуацию, когда в инструкции switch разные метки case содержат одинаковые фрагменты кода.
Такая ошибка может появиться, например, из-за копирования кода. Пример:
switch (selector) {
case "foo":
res = foo;
break;
case "bar":
res = bar;
break;
case "baz":
res = bar;
break;
}
Здесь в метке "baz" присваивается значение из переменной bar вместо baz. Исправленный вариант:
switch (selector) {
case "foo":
res = foo;
break;
case "bar":
res = bar;
break;
case "baz":
res = baz;
break;
}
Часто это предупреждение также свидетельствует об избыточном коде, который можно улучшить объединением меток. Пример с избыточным кодом:
switch (selector) {
case "fooX":
res = foo;
break;
case "fooY":
res = foo;
break;
case "barX":
res = bar;
break;
case "barY":
res = bar;
break;
}
Здесь нет ошибки, но этот код можно сделать читабельнее и компактнее за счёт объединения меток case:
switch (selector) {
case "fooX":
case "fooY":
res = foo;
break;
case "barX":
case "barY":
res = bar;
break;
}