Строка больше чем с одним оператором

Несколько операторов на строке

Описание

Прежде чем предварительная обработка запускается, Строка больше чем с одной проверкой оператора на дополнительный текст после точки с запятой (;) на строке. Дефект не повышен для комментариев, for - определения цикла, фигурные скобки или наклонные черты влево.

Риск

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

Фиксация

Запишите один оператор на строку.

Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Комментарии.

Примеры

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

int multi_init(void){
_    int abc = 4; int efg = 0; //defect

    return abc*efg;
}

В этом примере abc и efg инициализируются на второй строке функции как отдельные операторы.

Исправление — разделенная от запятой инициализация

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

int multi_init(void){
    int a = 4, b = 0;

    return a*b;
}

Исправление — новая строка для каждой инициализации

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

int multi_init(void){
    int a = 4;
    int b = 0;

    return a*b;
}
int multi_loop(void){
    int a, b = 0;
    int index = 1;
    int tab[9] = {1,1,2,3,5,8,13,21};

    for(a=0; a < 3; a++) {b+=a;} // no defect

_   for(b=0; b < 3; b++) {a+=b; index=b;} //defect

_   while (index < 7) {index++; tab[index] = index * index;} //defect
    return a*b;
}

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

  • Первый цикл for имеет несколько точек с запятой. Polyspace® не повышает дефект для нескольких операторов в объявлении цикла for.

  • Polyspace действительно повышает дефект на втором цикле for, потому что существует несколько операторов после объявления цикла for.

  • Цикл while также имеет несколько операторов после объявления цикла. Polyspace повышает дефект на этой строке.

Исправление — новая строка для каждой инструкции циклов

Одно возможное исправление должно использовать новую строку для каждого оператора после объявления цикла.

int multi_loop(void){
    int a, b = 0;
    int index = 1;
    int tab[9] = {1,1,2,3,5,8,13,21};

    for(a=0; a < 3; a++) {b+=a;}

    for(b=0; b < 3; b++){
      a+=b;
      index=b;
    }

    while (index < 7){
      index++;
      tab[index] = index * index;
    }
    return a*b;
}
int multi_if(void){

    int a, b = 1;
    if(a == 0) { a++;} // no defect 
_    else if(b == 1) {b++; a *= b;} //defect
}

В этом примере существует два условных оператора: if и else if. Строка if не повышает дефект, потому что только один оператор следует за условием. Оператор else if действительно повышает дефект, потому что два оператора следуют за условием.

Исправление — новые строки для составных условных выражений

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

int multi_if(void){
    int a, b = 1;

    if(a == 0) a++;
    else if(b == 1){
      b++; 
      a *= b;
    }
}

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

Группа: Хорошая практика
Язык: C | C++
Значение по умолчанию: 'off'
Синтаксис командной строки: MORE_THAN_ONE_STATEMENT
Влияние: низко

Введенный в R2013b