exponenta event banner

Правило AUTOSAR C++ 14 M3-4-1

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

Описание

Определение правила

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

Объяснение

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

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

Внедрение Polyspace

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

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

Поиск неисправностей

Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.

Примеры

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

static int countReset; //Noncompliant

volatile int check;

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

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

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

Группа: Основные понятия
Категория: Обязательно, Автоматизировано
Представлен в R2019a