变量可能尚未初始化[MIRA 2012规则9.1,强制性]

Variable may not have been initialized [MISRA 2012 Rule 9.1, mandatory]

本文关键字:规则 强制性 2012 MIRA 初始化 变量      更新时间:2023-10-16

我有一个函数,它以秒为输入,并将其转换为时间和日期。然而,我遇到了关于数组变量"cumDaysInMonths"可能尚未初始化的警告[MIRA 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]++;
}

我不明白这个警告的原因以及如何修复它?

这很可能是静态分析器中的一个错误,它在您提到的两行上都检测到假阳性
这是静态分析中的一个常见问题,甚至IEEE也有一篇关于消除这种误报的论文。

在右侧的相关问题中,我可以看到至少一个问题与MISRA C++误报警告有关。