问题标签 [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.
c - 嵌入式软件的 Misra 标准
我需要使大量代码符合 MISRA。
第一个问题:有人可以根据经验对通过嵌入式系统编写良好的代码进行估计。我知道“写得好”的定义不明确且含糊不清,因此我要求进行原始估计。
第二个问题:对可定制(即允许抑制特定警告)并用于自动构建环境(即命令行界面)的工具的
任何建议 任何其他有助于完成此任务的有用建议。
谢谢伊利亚。
verification - 有没有人建立一个 C 文件来验证 MISRA-2004 的代码检查工具?
我们正在使用 PC-Lint 对我们的来源进行代码检查,以确保其符合 MISRA-2004。由于这是一个与安全相关的项目,并且我们正准备获得 TUV 的证书,因此我们需要证明我们对该工具的信心(他们不接受诸如“我多次使用它”之类的东西)。
我们的目标是拥有一套完整的负面测试,通过破坏 MISRA-2004 集的每个规则并强制工具产生错误或警告来检查工具。
是否有人已经这样做了,您愿意分享您的结果/C 代码吗?
c - 用于检查 MISRA C 合规性的免费工具?
是否有任何开源或免费工具可以检查MISRA C合规性?
c - 强制转换 NULL 指针函数参数导致违反 Misra 规则 11.3
我将 a 定义NULL_PTR
为0U
然后以 thisNULL_PTR
作为参数调用一个函数。
调用函数原型:
在编译时,Misra 引发了违反规则 11.3 的错误。(不应在指针类型和整数类型之间执行强制转换。)
但如果我只是通过NULL_PTR
如下,没有违规。
哪种方法更好?抑制 Misra 11.3 规则还是直接通过NULL_PTR
不强制转换?
java - 是否有与 MISRA C 等效的 Java?
在某些语言中,有规则/最佳实践/等。促进软件安全,确保预期的运行时行为等。想到的两个是用于 C/C++ 的 MISRA 和用于 Ada 的 Ravenscar 配置文件。如果您的代码被标记为遵循这些标准,通常会有一种温暖的模糊感。Java有这样的标准吗?
c - 为什么我的工具会在这里抛出 MISRA 错误?
我能做些什么来避免 MISRA 对下面的代码给出这个错误?我尝试使用(unit16_t)进行投射。但是它不允许显式转换。
复杂表达式中从基础 MISRA 类型“unsigned char”到“unsigned int”的非法隐式转换(MISRA C 2004 规则 10.1)
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:
将错误行更改为:
不会使错误消失。
coding-style - MISRA 中评论规则的基本原理
MISRA 中的规则 2.2 规定“源代码只能使用/* ... */
样式注释”。有谁知道这条规则的基本原理是什么?//
风格评论有什么问题?
c - 将 tolow 设为静态
我需要使标准库函数tolower
静态而不是“公共”范围。
我正在使用 IAR Embedded Workbench 编译器使用 MISRA C:2004 进行编译。编译器声明tolower
为内联:
我从编译器收到以下错误:
以下是我建议的解决方案:
- 在另一个模块中使用
tolower
,在虚拟环境中,以便多个模块需要它。 - 实现功能而不使用
tolower
. 这是一个嵌入式系统。 - 添加一个“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
解决方案:
- 我按照 Michael Burr 的建议将此问题通知了供应商。
- 由于本地化问题,我决定不重写库例程。
- 我按照 gbulmer 的建议在 main.c 文件中实现了一个函数指针;然而,这将是令人难以置信的评论,因为它应该在 IAR 解决他们的问题后被删除。