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

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

Описание

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

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

Объяснение

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

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

Реализация Polyspace

Средство проверки правила определяет, используется ли объект в одном блоке только. Если объект используется в одном блоке, но задается вне блока, средство проверки повышает нарушение.

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

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

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

static int countReset; //Noncompliant

volatile int check;

void increaseCount() {
    int count = countReset;
    while(check%2) {
     count++;
    }
}

В этом примере, переменной countReset объявляется глобальной переменной, используемой в одной функции только. Совместимое решение объявляет, что переменная локальная переменная к функции уменьшает свою видимость.

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

Группа: фундаментальные понятия
Категория: необходимый
Введенный в R2013b