V2507. MISRA. The body of a loop\conditional statement should be enclosed in braces.
Данное диагностическое правило основано на руководстве 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)
{ .... }
Данная диагностика классифицируется как:
|