Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.
Тела операторов 'while', 'do-while', 'for', 'if', 'if-else', 'switch' должны быть заключены в фигурные скобки.
Использование фигурных скобок четко определяет, какие выражения составляют тело, повышает читаемость кода и снижает вероятность возникновения ряда ошибок. Например, при отсутствии фигурных скобок программист может ошибочно воспринять выравнивание или не заметить символ ';', случайно поставленный после оператора.
Пример 1:
void example_1(....) { if (condition) if (otherCondition) DoSmt(); else DoSmt2(); }
Форматирование данного кода не соответствует логике его выполнения, что может сбивать с толку. Расстановка фигурных скобок устраняет возможную неоднозначность:
void example_1(....) { if (condition) { if (otherCondition) { DoSmt(); } else { DoSmt2(); } } }
Пример 2:
void example_2(....) { while (count < 10) DoSmt1(); DoSmt2(); }
Форматирование данного кода также не соответствует логике его исполнения, так как к циклу относится только выражение 'DoSmt1()'.
Исправленный вариант:
void example_2(....) { while (count < 10) { DoSmt1(); DoSmt2(); } }
Примечание: 'if', следующий сразу после 'else' не обязательно должен быть заключен в фигурные скобки. На фрагмент кода, приведённый ниже, анализатор не будет выдавать предупреждение.
if (condition1) { .... } else if (condition2) { .... }
Данная диагностика классифицируется как:
|