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 | 要求 | 兼容: |
没有 |
MISRA C:2012《标准C环境》规则
规则 | 类别 | 合规 | Polyspace支万博1manbetx持吗? |
---|---|---|---|
1.1 | 要求 | 兼容的 | 是的 |
1.3 | 要求 | 兼容的 | 是的 |
“未使用代码”MISRA C:2012规则
MISRA C:2012规则
规则 | 类别 | 合规 | Polyspace支万博1manbetx持吗? |
---|---|---|---|
3.1 | 要求 | 兼容: |
是的 |
3.2 | 要求 | 兼容的 | 是的 |
《字符集和词汇约定
规则 | 类别 | 合规 | Polyspace支万博1manbetx持吗? |
---|---|---|---|
4.1 | 要求 | 兼容的 | 是的 |
MISRA C:2012规则
规则 | 类别 | 合规 | Polyspace支万博1manbetx持吗? |
---|---|---|---|
5.1 | 要求 | 兼容: |
是的 |
5.2 | 要求 | 兼容: |
是的 |
5.4 | 要求 | 兼容: |
是的 |
5.5 | 要求 | 兼容: |
是的 |
5.6 | 要求 | 兼容: |
是的 |
5.7 | 要求 | 兼容: |
是的 |
5.8 | 要求 | 兼容: |
是的 |
“文字和常量”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规则
MISRA C:2012规则
规则 | 类别 | 合规 | Polyspace支万博1manbetx持吗? |
---|---|---|---|
12.2 | 要求 | 兼容的 | 是的 |
“副作用”MISRA C:2012规则
规则 | 类别 | 合规 | Polyspace支万博1manbetx持吗? |
---|---|---|---|
13.1 | 要求 | 兼容的 | 是的 |
13.2 | 要求 | 兼容: |
是的 |
13.5 | 要求 | 兼容: 偏差: |
是的 |
13.6 | 强制性的 | 兼容的 | 是的 |
MISRA C:2012规则
《控制流程》MISRA C:2012规则
规则 | 类别 | 合规 | Polyspace支万博1manbetx持吗? |
---|---|---|---|
15.2 | 要求 | 兼容的 | 是的 |
15.3 | 要求 | 兼容的 | 是的 |
15.6 | 要求 | 兼容的 | 是的 |
15.7 | 要求 | 兼容的 | 是的 |
MISRA C:2012规则
MISRA C:2012规则
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合规信息汇总表.
有关Embedded Coder的实现定义行为的信息可在配置运行时环境选项.编译器文档超出了作用域。
属性来管理字符集编码SavedCharacterEncoding
模型参数。有关更多信息,请参见slCharacterEncoding
.
在“模型配置参数”对话框中配置整数除法硬件实现窗格。有关更多信息,请参见配置运行时环境选项
嵌入式编码器生成# pragma
当用户:
在这两种情况下,您都有责任记录# pragma
.有关更多信息,请参见通过插入语控制数据和函数在内存中的位置.
启用位域的生成。
选择这些模型配置参数中的至少一个:
将布尔数据打包成位域.该参数仅适用于以下场景基于ert的系统目标文件.
创建一个带有已定义位域的自定义存储类。看到使用自定义存储类设计器创建存储类为更多的信息。
如果您的模型使用一种数据类型到另一种数据类型的转换,Polyspace Checker会从模型生成的代码中显示出Dir 1.1的违规。在这种情况下,如果您根据MISRA指导方针记录这个显式转换,那么来自模型的违反就不是问题。
您可以链接需求模型元素。这些链接包含在生成的C代码中,以提供从需求文档到模型元素以及生成代码的可追溯性。有关更多信息,请参见查看与模型万博1manbetx元素相关的Simulink需求链接和链路块及要求(万博1manbetx仿真软件需求).
您可以使用Polyspace错误发现者™来识别运行时错误和Polyspace代码验证™来证明没有运行时错误。更多信息,请参阅:
万博1manbetxSimulink Design Verifier可以用来检测模型级的设计错误。有关更多信息,请参见运行设计错误检测分析(万博1manbetx仿真软件设计验证器).
要处理溢出违规,请参见在Simulink模型中处理溢出万博1manbetx(定点设计师).
嵌入式编码器不直接调用汇编语言代码。您可以通过S-functions、代码替换库、statflow和MATLAB添加对汇编语言函数的调用®块。这些调用被记录为调用外部C函数.在这些情况下,您负责封装。
有关更多信息,请参阅:
Embedded Coder将基本数据类型替换为typedefs类型,这与Directive 4.6兼容。不需要指导原则,因为这种行为是Embedded Coder中的默认行为。有关更多信息,请参见替换和重命名数据类型以符合编码标准和typedef.
满足本指令要求的是:
“静态演示输入参数永远不能取无效值”。
您可以使用Polyspace代码验证分析参数范围,证明不存在由超出范围的值引起的运行时错误。有关更多信息,请参见对用嵌入式编码器生成的代码运行多空间分析(Polyspace代码验证).
嵌入式编码器不检查来自statflow的用户定义代码。你必须处理好被举报的违规行为。
可配置嵌入式编码器以限制实现所施加的字符数量。有关更多信息,请参见最大标识符长度.
为了确保不同类型的变量(局部作用域变量、全局作用域变量、宏等等)的唯一名称,实现命名约定。有关更多信息,请参见模型配置参数:代码生成符号.
对于长标识符,建议使用共享实用程序。有关更多信息,请参见生成共享实用程序代码
嵌入式编码器支持枚举数据的使用万博1manbetx。用于定义枚举的文件可以手工生成,也可以自动生成。定义由Embedded Coder生成的枚举的文件在设计上符合MISRA C:2012 Rule 8.12。如果您手动创建定义文件,则需要负责确保遵从性。有关更多信息,请参见在Simulink模型中使用枚举数据万博1manbetx.
嵌入式编码器不会直接创建char类型的数据。char类型的数据可以通过用户定义的s -函数、代码替换库和自定义存储类引入。在这种情况下,将普通char的使用限制为:
用于字符值的普通字符类型
用于数值的有符号和无符号字符类型