问题标签 [misra]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
207 浏览

c - #include *not* 后面可以跟吗还是“文件名”?

MISRA-C 2004开始:

19.3 (req): '#include' 指令后应跟 a<filename>"filename"序列。

什么是替代方案?后面可以跟or#include以外的东西吗?<filename>"filename"

编辑:他们指的是#defined 预处理器变量吗?

0 投票
1 回答
453 浏览

c++ - MISRA-C++:2008[8-4-3] : 在函数的所有退出路径中返回

在测试我的代码(静态分析)以查看我是否尊重 misra c++ 2008 时,我收到以下错误

函数不会在所有路径上都返回值。

该功能看起来像

我真的需要抛出一个异常,因为根据错误调用者应该做一些事情。可能的错误列表可能很大,并且不仅仅是此代码示例中不存在该值。

我该如何管理它?我认为在这种情况下,我使用的工具不应将其视为对 misra 的不合规。

感谢您的意见。

罗尼。

0 投票
2 回答
4405 浏览

c - 宏定义中的 Misra C 错误

这段代码报告了三个 misrac 错误:

  1. 不恰当的宏展开
  2. 类函数宏定义
  3. 不带括号的宏参数

原始代码是:

我试图改变它以消除错误

但我仍然收到前两个错误。需要做些什么来消除这些 Misra C 错误。

0 投票
1 回答
1112 浏览

c++ - 警告 634 和警告 613:MISRA

我有两种情况我无法解决这些警告.. 这些是重复警告

我试图检查 NULL 条件,但仍然存在警告。

部分代码:

我怎样才能避免这两个警告???

0 投票
2 回答
501 浏览

c++ - 警告 639:二进制操作中类型“uint64”的强类型不匹配

我在不同的文件中收到这些警告。我试图解决它,但对所有人(所有 6 种情况)仍然有相同的警告。

你能告诉我这样做的原因吗?

0 投票
3 回答
2335 浏览

c - MISRA 9.2 初始化浮点数和无符号数组

在以下几行中,我收到了来自 Parasoft C/C++ 测试静态分析工具和 IAR Embedded Workbench MISRA 检查器报告的不同问题:

Parasoft 静态分析 说:

IAR Embedded Workbench 对上述语句没有任何问题(并且其 MISRA 检查器已打开)。

我可以使变量“array_b”的消息消失:

但是,同样的技巧不适用于“array_a”:

现在 IAR Embedded Workbench MISRA 检查器正在抱怨,因为有符号整数常量 0 被分配给无符号整数:

Parasoft 静态分析未显示上述第 4 行的任何问题。

我相信这归结为 MISRA 规则 9.2 对“零”的解释:
例外

哪个检查器是正确的?

0 投票
7 回答
1852 浏览

c++ - 如何解决此 MISRA 警告:C++

这是如下代码:

警告:“必需的规则 8-4-4,使用的函数标识符没有 '&' 或带括号的参数列表”

我无法解决这个问题,请提出解决方案。

0 投票
1 回答
4328 浏览

c++ - 最高操作,“常数”,没有副作用 [MISRA 2004 Rule 14.2]

嗨,这是我的代码的一部分,并为此逻辑代码收到一些 MISRA 警告:

警告:(在第 1 行和第 2 行)

你能指导我解决这个问题吗...

0 投票
3 回答
5952 浏览

c - 如何使 (1 << 9) 通过 MISRA?

我们正在使用启用 MISRA C 2004 检查器的 Parasoft 静态分析。

该软件是一个嵌入式系统。我们喜欢将常量描述如下:

这将表明寄存器中的第 9 位应为 1 以打开电机。

该表达式未通过 MISRA,因此我们对其进行了更改:

这些更改转换为无符号整数常量,因为移位最好使用无符号整数完成。

语句 2 中的表达式仍然失败,因为需要检查右手运算符 (9U)。根据 MISRA,如果右手运算符大于左手运算符的底层类型的位宽,就会出现问题。

问题的根源在于 1U 的底层类型为unsigned char8 位。
我们写入的寄存器是 16 位的,所以理论上没有问题。

如何更改 [2] 中的表达式以使其通过 MISRA C 2004,而不是使用强制转换?

我在 8/32 位模式下使用带有 ARM7TDMI 处理器的 IAR Embedded Workbench。

编辑 1:示例代码。

错误文本:用作移位运算符右手操作数的常数应受到限制。

来自 Parasoft 提供的 MISRA 规则文档:

0 投票
3 回答
1904 浏览

c - 将 unsigned Char Boolean_type 重新定义为 True 和 false 结构

根据 Autosar_SWS,布尔值必须是unsigned char. 但是我的作品中有很多 MISRA 违规,例如 MISRA 规则 10.1(转换违规)、规则 12.6(有效布尔值)。

我想知道我是否为我的应用程序重新定义了 BOOLEAN,如下所示:

安全问题和后果是什么?