问题标签 [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 投票
6 回答
8851 浏览

c - 嵌入式软件的 Misra 标准

我需要使大量代码符合 MISRA。
第一个问题:有人可以根据经验对通过嵌入式系统编写良好的代码进行估计。我知道“写得好”的定义不明确且含糊不清,因此我要求进行原始估计。
第二个问题:对可定制(即允许抑制特定警告)并用于自动构建环境(即命令行界面)的工具的
任何建议 任何其他有助于完成此任务的有用建议。
谢谢伊利亚。

0 投票
2 回答
4795 浏览

c++ - Eclipse ide 需要与 MISRA 规则集成

如何将规则与

0 投票
3 回答
795 浏览

verification - 有没有人建立一个 C 文件来验证 MISRA-2004 的代码检查工具?

我们正在使用 PC-Lint 对我们的来源进行代码检查,以确保其符合 MISRA-2004。由于这是一个与安全相关的项目,并且我们正准备获得 TUV 的证书,因此我们需要证明我们对该工具的信心(他们不接受诸如“我多次使用它”之类的东西)。

我们的目标是拥有一套完整的负面测试,通过破坏 MISRA-2004 集的每个规则并强制工具产生错误或警告来检查工具。

是否有人已经这样做了,您愿意分享您的结果/C 代码吗?

0 投票
2 回答
19155 浏览

c - 用于检查 MISRA C 合规性的免费工具?

是否有任何开源或免费工具可以检查MISRA C合规性?

0 投票
4 回答
2921 浏览

c - 强制转换 NULL 指针函数参数导致违反 Misra 规则 11.3

我将 a 定义NULL_PTR0U

然后以 thisNULL_PTR作为参数调用一个函数。

调用函数原型:

在编译时,Misra 引发了违反规则 11.3 的错误。(不应在指针类型和整数类型之间执行强制转换。)

但如果我只是通过NULL_PTR如下,没有违规。

哪种方法更好?抑制 Misra 11.3 规则还是直接通过NULL_PTR不强制转换?

0 投票
5 回答
3868 浏览

java - 是否有与 MISRA C 等效的 Java?

在某些语言中,有规则/最佳实践/等。促进软件安全,确保预期的运行时行为等。想到的两个是用于 C/C++ 的 MISRA 和用于 Ada 的 Ravenscar 配置文件。如果您的代码被标记为遵循这些标准,通常会有一种温暖的模糊感。Java有这样的标准吗?

0 投票
4 回答
14748 浏览

c - 为什么我的工具会在这里抛出 MISRA 错误?

我能做些什么来避免 MISRA 对下面的代码给出这个错误?我尝试使用(unit16_t)进行投射。但是它不允许显式转换。

复杂表达式中从基础 MISRA 类型“unsigned char”到“unsigned int”的非法隐式转换(MISRA C 2004 规则 10.1)

0 投票
3 回答
4121 浏览

c - MISRA C:2004,移位错误

我正在使用带有 MISRA C:2004 检查的 IAR Workbench 编译器。
片段是:

MISRA 错误是: 错误[Pm136]:从基础 MISRA 类型“unsigned char”到“unsigned int”的非法显式转换(MISRA C 2004 规则 10.3)

我在上面的任何代码中都没有看到任何unsigned char内容。

讨论为什么 Misra 会在这里抛出错误?讨论了可能具有与左移不同的提升规则的乘法。

我的理解是编译器应该将表达式提升为更大的数据类型,而不是降级为更小的数据类型。

这里到底发生了什么?

如何使代码符合 MISRA C:2004?

编辑1:

将错误行更改为:

不会使错误消失。

0 投票
2 回答
4672 浏览

coding-style - MISRA 中评论规则的基本原理

MISRA 中的规则 2.2 规定“源代码只能使用/* ... */样式注释”。有谁知道这条规则的基本原理是什么?//风格评论有什么问题?

0 投票
3 回答
743 浏览

c - 将 tolow 设为静态

我需要使标准库函数tolower静态而不是“公共”范围。

我正在使用 IAR Embedded Workbench 编译器使用 MISRA C:2004 进行编译。编译器声明tolower为内联:

我从编译器收到以下错误:

以下是我建议的解决方案:

  1. 在另一个模块中使用tolower,在虚拟环境中,以便多个模块需要它。
  2. 实现功能而不使用tolower. 这是一个嵌入式系统。
  3. 添加一个“STATIC”宏,默认定义为空,但可以在包含头文件static之前定义。ctype.h

我正在寻找 MISRA 链接器错误的解决方案。我宁愿tolower只为 RS232_Server 翻译单元设置静态功能(如果我tolower在标准头文件中设置静态,可能会影响其他未来的项目。)

编辑1:

编译器是用于 ARM 处理器的 IAR Embedded Workbench 6.30。
我在 32 位模式(不是 Thumb 模式)下使用 ARM7TDMI 处理器。
tolower函数与调试端口一起使用。

编辑2:

我也收到了_LocaleC_isupper错误_LocaleC_tolower

解决方案:

  1. 我按照 Michael Burr 的建议将此问题通知了供应商。
  2. 由于本地化问题,我决定不重写库例程。
  3. 我按照 gbulmer 的建议在 main.c 文件中实现了一个函数指针;然而,这将是令人难以置信的评论,因为它应该在 IAR 解决他们的问题后被删除。