AUTOSAR C++14 Rule M3-4-1

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

Описание

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

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

Объяснение

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

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

Реализация Polyspace

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

Когда вы объявляете переменную вне основанного на области значений for цикл и использование это только в блоке цикла, Polyspace® отмечает переменную. Если вы не можете объявить переменную в блоке цикла, выровняйте по ширине этот результат с помощью комментариев в результате или кода. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.

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

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

Примеры

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

static int countReset; //Noncompliant

volatile int check;

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

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

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

Группа: фундаментальные понятия

Введенный в R2019a