MISRA C:2012 Rule 16.2

Метка переключателя должна только использоваться, когда наиболее тесно заключающий составной оператор будет телом оператора switch

Описание

Управляйте определением

Метка переключателя должна только использоваться, когда наиболее тесно заключающий составной оператор будет телом оператора switch

Объяснение

Стандарт C разрешает помещать метку переключателя (например, case или default) прежде чем любой оператор содержится в теле оператора switch. Эта гибкость может привести к неструктурированному коду. Чтобы предотвратить неструктурированный код, убедитесь, что метка переключателя появляется только на наиболее удаленном уровне тела оператора switch.

Обменивайтесь сообщениями в отчете

Все сообщения в файле отчета начинаются "с синтаксиса операторов switch MISRA-C нормативное ограничение".

  • Инициализаторы не должны использоваться в пунктах переключателя.

  • Дочерний оператор переключателя должен быть составным оператором.

  • Все пункты переключателя должны появиться на том же уровне.

  • Пункт переключателя должен только содержать метки переключателя и переключать пункты и никакой другой код.

  • Оператор switch должен только содержать метки переключателя и переключать пункты и никакой другой код.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Проверяйте информацию

Группа: операторы switch
Категория: необходимый
Категория AGC: консультация
Язык: C90, C99