AUTOSAR C++14 Rule A7-1-1

Constexpr или спецификаторы const должны использоваться для неизменяемого объявления данных

Описание

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

Constexpr или спецификаторы const должны использоваться для неизменяемого объявления данных.

Объяснение

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

Реализация Polyspace

Средство проверки отмечает параметры функции или локальные переменные, которые не квалифицированы к const, но никогда не изменяются в теле функции. Параметры функции целого числа, плавания, перечислимые и булевы типы не отмечаются.

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

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

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

Примеры

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

#include <string.h>

char returnNthCharacter (int n) {
    char* pwd = "aXeWdf10fg" ; //Noncompliant
    char nthCharacter;
        
    for(int i=0; i < strlen(pwd); i++) {
        if(i==n)
            nthCharacter = pwd[i];
    }
    return nthCharacter;
}

В этом примере, указатель pwd не const- квалифицированный. Однако вне инициализации с константой, это не повторно присвоено нигде в returnNthCharacter функция.

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

Группа: объявление
Категория: необходимый, автоматизированный
Введенный в R2020b