Переменная, возможно, не была инициализирована [MISRA 2012, правило 9.1, обязательно] - PullRequest
0 голосов
/ 31 октября 2018

У меня есть функция, которая принимает секунды и преобразует их во время и дату. Однако я получаю предупреждение о переменной массива 'cumDaysInMonths', возможно, не инициализирован [MISRA 2012, правило 9.1, обязательное]. Я инициализировал его, а затем обновил в цикле. Предупреждения на обеих линиях и связаны между собой.

Инициализация выглядит следующим образом:

unsigned short cumDaysInMonths[MONTHS_IN_A_YEAR] = {0,31,59,90,120,151,181,212,243,273,304,334};

И использование внутри цикла выглядит следующим образом:

for(list_index = 2; list_index < MONTHS_IN_A_YEAR; list_index++)
{
    cumDaysInMonths[list_index]++;
}

Я не могу понять причину этого предупреждения и как это исправить?

1 Ответ

0 голосов
/ 31 октября 2018

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

В связанных вопросах на правой стороне я вижу по крайней мере один вопрос, связанный с MISRA C ++ ложным предупреждением .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...