检查 MISRA C:2023 的配置参数
mathworks.misra.CodeGenSettings
依赖关系: Embedded Coder® 和 Simulink® Check™
用法: C/C++ 代码生成 和 高完整性系统建模
规范: hisl_0060:提高 MISRA C 合规性的配置参数
说明
使用此检查来识别可能影响 MISRA C:2012 和 MISRA C:2023 合规代码生成的配置参数。遵循此检查的建议可以提高为嵌入式应用程序生成符合 MISRA C:2012 和 MISRA C:2023 标准的代码的可能性。
建议的行动和结果
查看检查中标记出的违规行为以及建议的修复措施。应用更改后,保存模型并重新运行检查分析。
您可以使用修复按钮,让模型顾问修复所有标记的违规行为。进行此项检查时,模型顾问将参数值更改为推荐值。
注意
对于以 GRT 为基础的目标模型,模型顾问不会将系统目标文件配置参数更新为以 ERT 为基础的系统。
表格列出了根据其在“配置参数”对话框中的位置而推荐的参数设置。
数学和数据类型
| 建模条件 | 建议的操作 |
|---|---|
模型配置参数使用除法进行定点净斜率计算未设置为 on 或只对整数的倒数使用除法。 | 将模型配置参数使用除法进行定点净斜率计算设置为 on 或只对整数的倒数使用除法。 |
模型配置参数模块输出为 Inf 或 NaN 设置为无或错误,并且支持: 非有限数设置为 on。 模型配置参数模块输出为 Inf 或 NaN 设置为无,支持: 非有限数设置为off。 | 当支持: 非有限数 (Simulink Coder)设置为 on 时,将模块输出为 Inf 或 NaN 设置为警告。 当支持: 非有限数 (Simulink Coder)设置为 off 时,将模块输出为 Inf 或 NaN 设置为警告或错误。 |
| 模型配置参数 Model Verification 模块启用设置为使用局部设置或全部启用。 | 将模型配置参数 Model Verification 模块启用设置为全部禁用。 |
| 模型配置参数无向事件广播设置为无或警告。 | 将模型配置参数无向事件广播设置为错误。 |
| 模型配置参数溢出时绕回设置为无。 | 将模型配置参数溢出时绕回设置为警告或错误。 |
硬件实现
| 建模条件 | 建议的操作 |
|---|---|
| 模型配置参数有符号整数除法舍入方式设置为未定义。 | 将模型配置参数有符号整数除法舍入方式设置为向零或向下舍入。 |
| 已选择模型配置参数采用算术移位方式右移有符号整数。 | 清除模型配置参数采用算术移位方式右移有符号整数。 |
仿真目标
| 建模条件 | 建议的操作 |
|---|---|
模型配置参数 MATLAB 函数的编译时递归限制设置为除 0 之外的值。 | 将模型配置参数 MATLAB 函数的编译时递归限制设置为 0。 |
| 已选择模型配置参数在 MATLAB 函数中使用动态内存分配。 | 清除模型配置参数在 MATLAB 函数中使用动态内存分配。 |
| 已选择模型配置参数为 MATLAB 函数启用运行时递归。 | 清除模型配置参数为 MATLAB 函数启用运行时递归。 |
代码生成
| 建模条件 | 建议的操作 |
|---|---|
当选择以下任一参数时,模型配置参数位字段声明符类型设定符将设置为
| 将模型配置参数位字段声明符类型设定符 (Embedded Coder)设置为 uint_T。 |
| 模型配置参数强制转换模式未设置为符合标准。 | 将模型配置参数强制转换模式 (Embedded Coder)设置为符合标准。 |
| 模型配置参数代码替换库未设置为无或 AUTOSAR 4.x。 | 将模型配置参数代码替换库 (Simulink Coder)设置为无或 AUTOSAR 4.x |
| 已选择模型配置参数外部模式。 | 清除模型配置参数外部模式 (Simulink Coder)。 |
| 已选择模型配置参数生成共享常量。 | 清除模型配置参数生成共享常量。有关详细信息,请参阅 模型配置参数:代码生成接口 (Simulink Coder) 中的 GenerateSharedConstants。 |
模型配置参数包括注释已清除。 | 选择模型配置参数包括注释 (Simulink Coder)。 |
| 已选择模型配置参数 MAT 文件记录。 | 清除模型配置参数 MAT 文件记录 (Simulink Coder)。 |
| 对于基于 ERT 的目标系统,配置参数 MATLAB 用户注释将被清除。 | 选择模型配置参数 MATLAB 用户注释 (Embedded Coder)。 |
| 未提供配置参数最大标识符长度的值。 | 根据您实现的限制,设置模型配置参数最大标识符长度 (Simulink Coder)的值。默认值为 31。 |
| 模型配置参数圆括号层级未设置为标准 (按标准规范使用圆括号) 或最多 (用圆括号指定优先级)。 | 将模型配置参数圆括号层级 (Embedded Coder)设置为标准 (按标准规范使用圆括号) 或最多 (用圆括号指定优先级)。 |
对于基于 ERT 的目标系统,当文件打包格式设置为紧凑或紧凑 (具有单独的数据文件) 时,配置参数在函数声明中保留 static 关键字将被清除。 | 选择模型配置参数在函数声明中保留 static 关键字 (Embedded Coder)。 |
| 已选择模型配置参数用有符号按位移位替代乘以 2 的幂的运算。 | 清除模型配置参数用有符号按位移位替代乘以 2 的幂的运算 (Embedded Coder)。 |
| 模型配置参数共享代码放置设置为自动。 | 将模型配置参数共享代码放置 (Simulink Coder)设置为共享位置。 |
| 对于基于 ERT 的目标系统,选择配置参数支持: 连续时间。 | 清除模型配置参数支持: 连续时间 (Embedded Coder)。 |
| 对于基于 ERT 的目标系统,选择配置参数支持非内联 S-Function。 | 清除模型配置参数支持非内联 S-Function (Embedded Coder)。 |
| 已选择模型配置参数禁止为 switch 语句生成不可达的默认 case。 | 清除模型配置参数禁止为 switch 语句生成不可达的默认 case (Embedded Coder)。 |
| 模型配置参数系统生成的标识符设置为经典。 | 将模型配置参数系统生成的标识符 (Embedded Coder)设置为缩短。 |
| 模型配置参数系统目标文件设置为基于 GRT 的目标。 | 将模型配置参数系统目标文件 (Simulink Coder)设置为基于 ERT 的目标。 |
| 当代码接口打包设置为可重用函数时,选择模型配置参数使用动态内存分配进行模型初始化。 | 清除模型配置参数使用动态内存分配进行模型初始化 (Embedded Coder)。 |
参数子检查取决于结果表中标记为 D 的参数的结果。当结果状态为 D-Warning 时,结果表中的当前值列对于子检查读取 Prerequisite constraint not met。更改参数后,请重新运行检查。
注意
某些子检查是针对基于 ERT 的系统的配置参数特有的。除非您将模型更改为基于 ERT 的系统,否则使用修复按钮时这些参数不会更新。
功能和限制
在检查结果中显示以下参数的设置作为附加信息:
将布尔数据打包到位字段中 (Embedded Coder)
代码接口打包 (component) (Simulink Coder)
文件打包格式 (Embedded Coder)
支持: 非有限数 (Simulink Coder)
不审查引用的模型
无需模型编译
版本历史记录
在 R2017b 中推出