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