主要内容

MISRA C:2012合规信息汇总表

合规汇总表

MathWorks®计算由Embedded Coder生成的C代码®从仿真软件万博1manbetx®和Stateflow®MISRA C:2012编码标准。这项工作的结果可以在这些法规遵循汇总表中找到。这些表识别:

  • 获得依从性的方法:

    • 遵从性:通过遵守代码生成过程、建模指导方针或Model Advisor检查来实现对规则/指令的遵从性。在适用时,有说明说明,提供与合规方法或行动相关的信息,您可以执行以满足指示或规则。

    • 偏离:规则或指令不符合。

  • 是否Polyspace®MISRA C:2012 Checker支万博1manbetx持规则或指令。

您可以使用这些表格时,准备MISRA C:2012合规声明为您的项目,按照5.3节的要求MISRA C:2012关键系统C语言使用指南文档。这些表与发布的MISRA C:2012规则和指令表一致。这些仅基于强制性和强制性类别(不包括咨询和可读性类别)。

“实施”MISRA C:2012指令

指令 类别 合规 Polyspace支万博1manbetx持吗?
1.1 要求

兼容:

是的,部分支持万博1manbetx

“编译和构建”MISRA C:2012指令

指令 类别 合规 Polyspace支万博1manbetx持吗?
2.1 要求 兼容的 是的

“需求可追溯性”MISRA C:2012指令

指令 类别 合规 Polyspace支万博1manbetx持吗?
3.1 要求

兼容:

没有

《代码设计》MISRA C:2012指令

指令 类别 合规 Polyspace支万博1manbetx持吗?
4.1 要求

兼容:

是的
4.3 要求

兼容:

没有
4.6 咨询

不适用。

N/A
4.7 要求

兼容:

偏差:

是的一个
4.10 要求 兼容的 是的
4.11 要求

兼容:

是的
4.12 要求

兼容:

没有

一个Polyspace MISRA C:2012 Checker可能会将指令4.7标记为a17.7违反规则(Polyspace Bug仪)对于用户定义的函数,当不知道返回值是否包含错误信息时。

MISRA C:2012《标准C环境》规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
1.1 要求 兼容的 是的
1.3 要求 兼容的 是的

“未使用代码”MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
2.1 要求

兼容:

是的
2.2 要求 兼容的 是的

MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
3.1 要求

兼容:

是的
3.2 要求 兼容的 是的

《字符集和词汇约定

规则 类别 合规 Polyspace支万博1manbetx持吗?
4.1 要求 兼容的 是的

MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
6.1 要求

兼容:

是的
6.2 要求

兼容:

是的

“文字和常量”MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
7.1 要求 兼容的 是的
7.2 要求 兼容的 是的
7.4 要求 兼容的 是的

“声明和定义”MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
8.1 要求 兼容的 是的
8.2 要求 兼容的 是的
8.3 要求 兼容的 是的
8.6 要求 兼容的 是的
8.8 要求 兼容的 是的
8.10 要求 兼容的 是的
8.12 要求

兼容:

是的
8.14 要求 兼容的 是的

MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
9.1 强制性的

兼容:

是的
9.4 要求 兼容的 是的
9.5 要求 兼容的 是的

《基本类型模型》MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
10.2 要求 兼容的 是的
10.3 要求 兼容的 是的

《指针类型转换》MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
11.1 要求 兼容的 是的
11.2 要求 兼容的 是的
11.3 要求

兼容:

是的
11.6 要求 兼容的 是的
11.7 要求 兼容的 是的
11.8 要求

兼容:

是的

MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
12.2 要求 兼容的 是的

“副作用”MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
13.1 要求 兼容的 是的
13.2 要求

兼容:

是的
13.5 要求

兼容:

偏差:

是的
13.6 强制性的 兼容的 是的

MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
14.2 要求

兼容:

是的
14.3 要求

兼容:

是的

《控制流程》MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
15.2 要求 兼容的 是的
15.3 要求 兼容的 是的
15.6 要求 兼容的 是的
15.7 要求 兼容的 是的

MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
16.2 要求 兼容的 是的
16.3 要求 兼容的 是的
16.4 要求

兼容:

是的
16.5 要求 兼容的 是的
16.6 要求 兼容的 是的
16.7 要求 兼容的 是的

MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
17.1 要求 兼容的 是的
17.2 要求

兼容:

是的
17.3 强制性的 兼容的 是的
17.4 强制性的 兼容的 是的
17.6 强制性的 兼容的 是的

MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
18.1 要求 兼容的 是的
18.2 要求 兼容的 是的
18.3 要求 兼容的 是的
18.6 要求 兼容的 是的
18.7 要求 兼容的 是的
18.8 要求 兼容的 是的

MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
19.1 强制性的 兼容的 是的

《预处理指令》MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
20.2 要求 兼容的 是的
20.3 要求 兼容的 是的
20.4 要求 兼容的 是的
20.6 要求 兼容的 是的
20.7 要求 兼容的 是的
20.9 要求 兼容的 是的
20.11 要求 兼容的 是的
20.12 要求 兼容的 是的
20.13 要求 兼容的 是的
20.14 要求 兼容的 是的

MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
21.1 要求 兼容的 是的
21.2 要求

兼容:

是的
21.3 要求

兼容:

是的
21.4 要求 兼容的 是的
21.5 要求 兼容的 是的
21.6 要求

兼容:

是的
21.7 要求 兼容的 是的
21.8 要求 兼容的 是的
21.9 要求 兼容的 是的
21.10 要求 兼容的 是的
21.11 要求 兼容的 是的
21.12 要求 兼容的 是的

MISRA C:2012规则

规则 类别 合规 Polyspace支万博1manbetx持吗?
22.1 要求 兼容的 是的
22.2 强制性的 兼容的 是的
22.3 要求 兼容的 是的
22.4 强制性的 兼容的 是的
22.5 强制性的 兼容的 是的
22.6 强制性的 兼容的 是的

注解

这些解释性的注释参考自MISRA C:2012合规信息汇总表

指令1.1的解释说明

有关Embedded Coder的实现定义行为的信息可在配置运行时环境选项.编译器文档超出了作用域。

属性来管理字符集编码SavedCharacterEncoding模型参数。有关更多信息,请参见slCharacterEncoding

在“模型配置参数”对话框中配置整数除法硬件实现窗格。有关更多信息,请参见配置运行时环境选项

嵌入式编码器生成# pragma当用户:

在这两种情况下,您都有责任记录# pragma.有关更多信息,请参见通过插入语控制数据和函数在内存中的位置

启用位域的生成。

  1. 选择这些模型配置参数中的至少一个:

  2. 创建一个带有已定义位域的自定义存储类。看到使用自定义存储类设计器创建存储类为更多的信息。

如果您的模型使用一种数据类型到另一种数据类型的转换,Polyspace Checker会从模型生成的代码中显示出Dir 1.1的违规。在这种情况下,如果您根据MISRA指导方针记录这个显式转换,那么来自模型的违反就不是问题。

MISRA指令3.1的说明

您可以链接需求模型元素。这些链接包含在生成的C代码中,以提供从需求文档到模型元素以及生成代码的可追溯性。有关更多信息,请参见查看与模型万博1manbetx元素相关的Simulink需求链接链路块及要求(万博1manbetx仿真软件需求)

指令4.1的说明

您可以使用Polyspace错误发现者™来识别运行时错误和Polyspace代码验证™来证明没有运行时错误。更多信息,请参阅:

万博1manbetxSimulink Design Verifier可以用来检测模型级的设计错误。有关更多信息,请参见运行设计错误检测分析(万博1manbetx仿真软件设计验证器)

要处理溢出违规,请参见在Simulink模型中处理溢出万博1manbetx(定点设计师)

指令4.3的说明

嵌入式编码器不直接调用汇编语言代码。您可以通过S-functions、代码替换库、statflow和MATLAB添加对汇编语言函数的调用®块。这些调用被记录为调用外部C函数.在这些情况下,您负责封装。

有关更多信息,请参阅:

指令4.6的说明

Embedded Coder将基本数据类型替换为typedefs类型,这与Directive 4.6兼容。不需要指导原则,因为这种行为是Embedded Coder中的默认行为。有关更多信息,请参见替换和重命名数据类型以符合编码标准typedef

指令4.11的说明

满足本指令要求的是:

“静态演示输入参数永远不能取无效值”。

您可以使用Polyspace代码验证分析参数范围,证明不存在由超出范围的值引起的运行时错误。有关更多信息,请参见对用嵌入式编码器生成的代码运行多空间分析(Polyspace代码验证)

规则2.1的说明

嵌入式编码器不检查来自statflow的用户定义代码。你必须处理好被举报的违规行为。

规则5.1、5.2、5.4、5.5、5.6、5.7和5.8的说明

可配置嵌入式编码器以限制实现所施加的字符数量。有关更多信息,请参见最大标识符长度

为了确保不同类型的变量(局部作用域变量、全局作用域变量、宏等等)的唯一名称,实现命名约定。有关更多信息,请参见模型配置参数:代码生成符号

对于长标识符,建议使用共享实用程序。有关更多信息,请参见生成共享实用程序代码

规则8.12的解释性说明

嵌入式编码器支持枚举数据的使用万博1manbetx。用于定义枚举的文件可以手工生成,也可以自动生成。定义由Embedded Coder生成的枚举的文件在设计上符合MISRA C:2012 Rule 8.12。如果您手动创建定义文件,则需要负责确保遵从性。有关更多信息,请参见在Simulink模型中使用枚举数据万博1manbetx

规则10.1和10.2的解释性说明

嵌入式编码器不会直接创建char类型的数据。char类型的数据可以通过用户定义的s -函数、代码替换库和自定义存储类引入。在这种情况下,将普通char的使用限制为:

  • 用于字符值的普通字符类型

  • 用于数值的有符号和无符号字符类型