MISRA C++:2008 Rule 6-3-1

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

Описание

Определение правила

Оператор, образующий тело переключателя, в то время как, сделать... в то время как или для оператора является составным оператором.

Объяснение

Составной оператор включён в скобки.

Если блок кода, связанный с оператором итерации или выбора, не содержится в скобках, можно совершить ошибки в связи. Для примера:

  • Вы можете неправильно связать строку кода с итерацией или оператором выбора из-за ее отступа.

  • Вы можете случайно поместить точку с запятой после итерации или оператора выбора. Из-за точки с запятой линия, следующая за оператором, больше не связана с оператором, хотя вы планировали иначе.

Эта проверка применяет практику добавления скобок после оператора выбора или итерации даже для одной линии в теле. Позже, когда добавляется больше линий, разработчику, добавляющему их, не нужно отмечать отсутствие скобок и включать их.

Реализация Polyspace

Шашечные флаги for циклы, где первая лексема, следующий за for оператор не является левой скобкой, для образца:

for (i=init_val; i > 0; i--)
   if (arr[i] < 0)
      arr[i] = 0;
Аналогичные проверки выполняются для switch, for и do..while операторы.

Вторая линия сообщения на панели Result Details указывает, какой оператор нарушает правило. Например, в предыдущем примере вторая линия сообщения утверждает, что for цикл нарушает правило.

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

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

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

Группа: Операторы
Категория: Требуемая
Введенный в R2013b