主要内容

MISRA C:2012合规信息汇总表

MathWorks®评估由嵌入式编码器生成的C代码®从仿真软件万博1manbetx®和Stateflow®MISRA C:2012编码标准。这些工作的结果可以在这些遵从性汇总表中找到。这些表确定:

  • 获得合规性的方法:

    • 遵从性:对规则/指令的遵从性是通过遵守代码生成过程、建模指南或Model Advisor检查来实现的。在适用的情况下,解释性说明提供了与您可以执行的合规方法或操作相关的信息,以满足指令或规则。

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

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

在为您的项目准备MISRA C:2012合规性声明时,您可以使用这些表格MISRA C:2012关键系统中C语言使用指南文档。这些表与MISRA C:2012规则和指令表保持一致。表中的类别是根据MISRA指南的附录E为自动生成的代码确定的。它们只能用于强制性和强制性类别(不能用于咨询性和可读性类别)。

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检查器可能会将指令4.7标记为a违反17.7规则(Polyspace Bug Finder)对于不知道返回值是否包含错误信息的用户定义函数。

“标准C环境”MISRA C:2012规则

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

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

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

兼容:

是的
2.2 要求 兼容的 是的

MISRA C:2012规则

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

兼容:

是的
3.2 要求 兼容的 是的

“字符集和词汇惯例”MISRA C:2012规则

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

MISRA C:2012规则

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

兼容:

是的
6.2 要求

兼容:

是的

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

规则 类别一个 合规 Polyspace支万博1manbetx持吗?
7.1 咨询 兼容的 是的
7.2 可读性 兼容的 是的
7.4 要求 兼容的 是的

一个对于手动生成的代码,指南建议使用规则7.1和7.2。

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

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

兼容:

是的
8.14 咨询 兼容的 是的

一个指南建议将规则8.14作为手动生成代码的必要条件。

“初始化”MISRA C:2012规则

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

兼容:

是的
9.4 要求 兼容的 是的
9.5 可读性 兼容的 是的

一个指南建议将规则9.5作为手动生成代码的必要条件。

“基本类型模型”MISRA C:2012规则

规则 类别一个 合规 Polyspace支万博1manbetx持吗?
10.2 咨询 兼容的 是的
10.3 咨询 兼容的 是的

一个指南建议将规则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 要求

兼容:

是的

一个指南建议将规则14.2作为手动生成代码的必要条件。

“控制流”MISRA C:2012规则

规则 类别一个 合规 Polyspace支万博1manbetx持吗?
15.2 咨询 兼容的 是的
15.3 咨询 兼容的 是的
15.6 要求 兼容的 是的
15.7 可读性 兼容的 是的

一个指南建议将15.2、15.3和15.7规则作为手动生成代码的必要条件。

“开关声明”MISRA C:2012规则

规则 类别一个 合规 Polyspace支万博1manbetx持吗?
16.2 咨询 兼容的 是的
16.3 咨询 兼容的 是的
16.4 咨询

兼容:

是的
16.5 咨询 兼容的 是的
16.6 咨询 兼容的 是的
16.7 咨询 兼容的 是的

一个对于手动生成的代码,指南建议根据需要使用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

“代码设计”MISRA C:2012修订1指令

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

MISRA C:2012修正案1规则

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

《标准图书馆》MISRA C:2012修订1规则

指令 类别 合规 Polyspace支万博1manbetx持吗?
21.13 强制性的 兼容的 是的
21.14 要求 兼容的 是的
21.15 要求 兼容的 是的
21.16 要求 兼容的 是的
21.17 强制性的 兼容的 是的
21.18 强制性的 兼容的 是的
21.19 强制性的 兼容的 是的
21.20 强制性的 兼容的 是的

“资源”MISRA C:2012修正案1规则

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

MISRA C:2012修正案2

“标准C环境”MISRA C:2012修订2规则

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

《标准图书馆》MISRA C:2012修订2规则

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

注解

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

指令1.1的说明说明

有关嵌入式编码器的实现定义行为的信息,请参见配置运行时环境选项.编译器文档超出了范围。

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

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

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

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

启用位字段的生成:

  1. 选择以下至少一个模型配置参数:

  2. 用已定义的位字段创建自定义存储类。看到使用自定义存储类设计器创建存储类获取更多信息。

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

MISRA指令3.1的说明

您可以链接需求模型元素。这些链接包含在生成的C代码中,以提供从需求文档到模型元素,再到生成的代码的可追溯性。有关其他信息,请参见查看与模型元素关联的需求工具箱链接而且链接块和要求(需求工具箱)

指令4.1的说明说明

你可以使用Polyspace Bug Finder™以识别运行时错误和Polyspace Code Prover™来证明没有运行时错误。有关信息,请参见:

万博1manbetxSimulink Design Verifier可用于检测模型级别的设计错误。有关更多信息,请参见分析模型的设计错误(万博1manbetxSimulink Design Verifier)

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

指令4.3的说明说明

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

有关更多信息,请参见:

指令4.6的说明说明

嵌入式编码器用typedefs类型替换基本数据类型,这与Directive 4.6兼容。不需要指南,因为此行为是嵌入式编码器的默认行为。有关其他信息,请参见替换和重命名数据类型以符合编码标准而且typedef

指令4.11的说明

本指令的要求满足:

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

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

规则2.1的说明

嵌入式编码器不检查状态流中的用户定义代码。你必须处理举报的违规行为。

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

嵌入式Coder是可配置的,以限制实现施加的字符数量。有关其他信息,请参见最大标识符长度

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

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

规则8.12的说明

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