CERT C: Rec. EXP15-C

Не помещайте точку с запятой в ту же линию как если, поскольку, или в то время как оператор

Описание

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

Не помещайте точку с запятой в ту же линию как если, поскольку, или в то время как statement.[1]

Реализация Polyspace

Это средство проверки проверяет на Точку с запятой на той же линии как будто, на или в то время как оператор.

Примеры

развернуть все

Проблема

Semicolon on same line as if, for or while statement происходит когда точка с запятой на той же линии как последняя лексема ifдля или while оператор приводит к пустому телу.

Средство проверки делает исключение для случая где if оператор сразу сопровождается else оператор:

if(condition);
else {
  //...
}

Риск

Точка с запятой после ifдля или while оператор часто указывает на программную ошибку. Побочная точка с запятой изменяет поток выполнения и приводит к непреднамеренным результатам.

Фиксация

Если вы хотите пустое тело для ifдля или while оператор, перенесите точку с запятой в блок и поместите блок в новую строку, чтобы явным образом указать на ваше намерение:

if(condition)
   {;}
В противном случае удалите побочную точку с запятой.

Пример - побочная точка с запятой
int credentialsOK(void);

void login () {
    int loggedIn = 0;
    if(credentialsOK());
      loggedIn = 1;
}

В этом примере побочная точка с запятой приводит к пустому if тело. Присвоение loggedIn=1 всегда выполняется. Однако присвоение должно было, вероятно, быть выполнено только при условии.

Коррекция – удаляет побочную точку с запятой

Если точка с запятой была непреднамеренна, удалите точку с запятой.

int credentialsOK(void);

void login () {
    int loggedIn = 0;
    if(credentialsOK())
      loggedIn = 1;
}

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

Группа: Rec. 03. Выражения (EXP)
Введенный в R2020a

[1]  Это программное обеспечение было создано MathWorks, включающим фрагменты: “Веб-сайт SEI CERT-C”, © 2017 Carnegie Mellon University, веб-сайт SEI CERT-C © 2017 Carnegie Mellon University”, CERT SEI C Кодирование Стандарта – Правил для Разработки безопасных, Надежных и Защищенных систем – 2 016 Выпусков”, © 2016 Carnegie Mellon University, and “CERT SEI Стандарт Кодирования C++ – Правил для Разработки безопасных, Надежных и Защищенных систем на C++ – 2 016 Выпусков” © 2016 Carnegie Mellon University, со специальным разрешением от его Института программной инженерии.

ЛЮБОЙ МАТЕРИАЛ УНИВЕРСИТЕТА КАРНЕГИ-МЕЛЛОН И/ИЛИ ЕГО ИНСТИТУТА ПРОГРАММНОЙ ИНЖЕНЕРИИ СОДЕРЖАЛ, ЗДЕСЬ ПРЕДОСТАВЛЯЕТСЯ НА ОСНОВЕ "ASIS". УНИВЕРСИТЕТ КАРНЕГИ-МЕЛЛОН НЕ ДАЕТ ГАРАНТИЙ НИКАКОГО ВИДА, ИЛИ ОПИСАЛ ИЛИ ПОДРАЗУМЕВАЛ, ОТНОСИТЕЛЬНО ЛЮБОГО ВОПРОСА ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИЛ, ГАРАНТИЯ ПРИГОДНОСТИ ДЛЯ ЦЕЛИ ИЛИ ВЫСОКОГО СПРОСА, ИСКЛЮЧИТЕЛЬНОСТИ, ИЛИ ЗАКАНЧИВАЕТСЯ ПОЛУЧЕННЫЙ ИЗ ИСПОЛЬЗОВАНИЯ МАТЕРИАЛА. УНИВЕРСИТЕТ КАРНЕГИ-МЕЛЛОН НЕ ДАЕТ ГАРАНТИИ НИКАКОГО ВИДА ОТНОСИТЕЛЬНО СВОБОДЫ ОТ ПАТЕНТА, ТОВАРНОГО ЗНАКА ИЛИ НАРУШЕНИЯ АВТОРСКОГО ПРАВА.

Это программное обеспечение и сопоставленная документация не были рассмотрены, ни являются подтвержденным Университетом Карнеги-Меллон или его Институтом программной инженерии.