主要内容

MISRA C:2012检查

您可以检查您的模型或子系统是否有可能生成符合MISRA C:2012的代码。

另请参阅

检查分配块的使用情况

检查身份证mathworks.misra.AssignmentBlocks

识别赋值没有block参数的块如果没有分配任何输出元素,则执行该操作设置为错误警告

描述

此检查适用于赋值下的Simulink块库中可用的块金宝app金宝app>数学操作

遵循此检查的建议,可以增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性,以及符合CERT C、CWE、ISO/IEC TS 17961标准的代码。

可与嵌入式编码器®而且金宝app®检查™

结果和建议措施

条件 建议的行动
模型或子系统可能包含的赋值数组初始化不完整的块,没有块参数如果没有分配任何输出元素,则执行该操作设置为错误警告

设置块参数如果没有分配任何输出元素,则执行该操作到其中一个推荐值:

  • 错误,如果赋值block不在Iterator子系统中。

  • 警告,如果赋值block在一个Iterator子系统中。

能力和限制

  • 在库模型上运行。

  • 分析库链接块的内容。

  • 分析屏蔽子系统中的内容。

  • 如果你有金宝app仿真软件检查许可,允许排除块和图表。

编辑时间检查。编辑时检查支持此检查。金宝app但是,不支持以下检查条件,因为编辑时检查无法确定是否金宝app赋值block在一个Iterator子系统中。

设置块参数如果没有分配任何输出元素,则执行该操作到其中一个推荐值:

  • 错误,如果赋值block不在Iterator子系统中。

  • 警告,如果赋值block在一个Iterator子系统中。

另请参阅

检查MISRA C:2012不推荐的块

检查身份证mathworks.misra.Blk金宝appSupport

识别MISRA C:2012兼容代码生成不支持或不推荐的代金宝app码块。

描述

遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动

使用三次样条插值或外推方法在模型或子系统中找到查找表块。具体的块有:

考虑Lookup Table块的其他插值和外推方法。

在模型或子系统中发现已废弃的查找表块。具体的块有:

  • 查找表

  • 查找表(二维)

考虑替换已弃用的Lookup Table块。
s函数生成器在模型或子系统中找到块。 考虑将S-Function Builder块替换为推荐用于生产的块。
从工作空间在模型或子系统中找到块 考虑用推荐用于生产的块替换From Workspace块。

字符串块在模型或子系统中找到。具体的块有:

考虑将String块替换为推荐用于生产的块。

能力和限制

您可以:

  • 在您的库模型上运行此检查。

  • 分析库链接块的内容。

  • 分析屏蔽子系统中的内容。

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

编辑时间检查。编辑时检查支持此检查。金宝app

另请参阅

检查不支持的块名称金宝app

检查身份证mathworks.misra.BlockNames

识别包含以下内容的块名/

描述

遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动
块名包含/在模型或子系统中找到。 删除/来自块名。

能力和限制

  • 在库模型上运行。

  • 分析库链接块的内容。

  • 分析屏蔽子系统中的内容。

  • 如果你有金宝app仿真软件检查许可,允许排除块和图表。

编辑时间检查。编辑时检查支持此检查。金宝app

另请参阅

检查MISRA C:2012的配置参数

检查身份证mathworks.misra.CodeGenSettings

识别可以影响MISRA C:2012兼容代码生成的配置参数。

描述

遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动
数学和数据类型
配置参数采用除法进行定点净斜率计算未设置为只对整数的倒数使用除法 采用除法进行定点净斜率计算只对整数的倒数使用除法

配置参数Inf或NaN块输出设置为没有一个错误而且金宝app支持非有限数设置为

配置参数Inf或NaN块输出设置为没有一个而且金宝app支持非有限数设置为

金宝app支持非有限数是:

  • ,设置Inf或NaN块输出警告

  • ,设置Inf或NaN块输出警告错误

配置参数模型验证块启用设置为使用本地设置让所有 模型验证块启用禁用所有
配置参数无定向事件广播设置为没有一个警告 无定向事件广播错误
配置参数换行溢出设置为没有一个 设置配置参数换行溢出警告错误
硬件实现
配置参数生产硬件有符号整数除法到四舍五入设置为未定义的 生产硬件有符号整数除法到四舍五入地板上
配置参数对有符号整数右移作为算术移位被选中。 清晰的对有符号整数右移作为算术移位
模拟目标
配置参数MATLAB函数的编译时递归极限是否设置为其他值0 MATLAB函数的编译时递归极限0
配置参数动态内存分配的MATLAB函数被选中。 清晰的动态内存分配的MATLAB函数
配置参数为MATLAB函数启用运行时递归被选中。 清晰的为MATLAB函数启用运行时递归
代码生成

配置参数位字段声明器类型说明符设置为uchar_T当选择这些参数中的任何一个时:

  • 将布尔数据打包到位字段中

  • 使用bitset存储状态配置

  • 使用bitset存储布尔数据

位字段声明器类型说明符uint_T
配置参数铸造模式未设置为标准兼容 铸造模式标准兼容
配置参数代码替换库未设置为没有一个AUTOSAR 4.0

代码替换库没有一个AUTOSAR 4.0

配置参数外部模式被选中。 清晰的外部模式
配置参数生成共享常量被选中。 清晰的生成共享常量

配置参数包括评论清除。

选择包括评论
配置参数MAT-file日志被选中。

清晰的MAT-file日志

对于基于ert的目标系统,配置参数MATLAB用户评论清除。 选择MATLAB用户评论
配置参数的值最大标识符长度未提供。 将该值设置为与实现相关的限制。默认为31
配置参数括号水平未设置为标准(括号表示符合标准)最大值(用括号指定优先级) 括号水平标准(括号表示符合标准)最大值(用括号指定优先级)

对于基于ert的目标系统,配置参数在函数声明中保留static关键字文件包装格式设置为紧凑的紧凑(附独立数据文件)

选择在函数声明中保留static关键字
配置参数用有符号的位移位代替2的幂乘法被选中。 清晰的用有符号的位移位代替2的幂乘法
配置参数共享代码放置设置为汽车

共享代码放置共享位置

对于基于ert的目标系统,配置参数金宝app支持连续时间被选中 清晰的金宝app支持连续时间
对于基于ert的目标系统,配置参数金宝app支持非内联s函数被选中 清晰的金宝app支持非内联s函数
配置参数系统生成的标识符设置为经典 系统生成的标识符缩短
配置参数系统目标文件设置为基于grt的目标。 系统目标文件到基于ert的目标。
配置参数对模型初始化使用动态内存分配当选中时代码接口封装设置为可重用的功能

清晰的对模型初始化使用动态内存分配

请注意

仅在以下情况下选择代码接口封装设置为可重用的功能

行动的结果

点击修改所有将参数值修改为推荐值。

请注意

当你点击修改所有对于具有基于grt的目标的模型,模型顾问不会更新系统目标文件配置参数到基于ert的系统。

参数子检查取决于用标记的参数的结果D在结果表中。当结果是D-Warning,当前值列在结果表中的状态不满足先决条件约束对于子检查。修改参数后,请重新执行检查。

请注意

一些子检查是特定于基于ert的系统的配置参数的。单击时,这些参数不会更新修改所有除非你把模型改成基于ert的系统。

能力和限制

检查中提示以下参数设置:

  • BooleansAsBitfields

  • CodeInterfacePackaging

  • ERTFilePackagingFormat

  • 金宝appSupportNonFinite

此检查不检查引用的模型。

另请参阅

检查浮点值上的相等和不相等操作

检查身份证mathworks.misra.CompareFloatEquality

识别浮点值上的相等和不相等操作。

描述

检查标记对浮点值进行相等或不相等操作的源。

遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性,以及符合CERT C和CWE标准的代码。

如果使用Polyspace对浮点值进行了验证,则该检查不会标记具有相等或不相等操作的块®注释。当你运行检查时,带理由的块该表列出具有相等或不相等操作的块。

可与嵌入式编码器和金宝app仿真软件检查

请注意

Stateflow®如果模型包含statflow元素,则需要license。

结果和建议措施

条件 建议的行动

模型对象对浮点值具有相等或不相等操作。

考虑使用非浮点值进行相等或不相等操作。

能力和限制

您可以:

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

另请参阅

检查有符号整数上的位操作

检查身份证mathworks.misra.CompliantCGIRConstructions

识别包含有符号整数金宝app按位操作的Simulink块。

描述

遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性,以及符合CERT C和CWE标准的代码。

可与嵌入式编码器和金宝app仿真软件检查

请注意

如果模型包含状态流元素,则需要状态流许可。

结果和建议措施

条件 建议的行动
该模型包含对有符号整数进行逐位操作的块。 考虑使用无符号整数进行逐位操作。

能力和限制

您可以:

  • 检查假设为整个模型生成了代码。当代码由子系统构建或导出函数生成时,检查可能产生错误的结果。

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

另请参阅

检查递归函数调用

检查身份证mathworks.misra.RecursionCompliance

在状态流程图中识别递归函数调用。

描述

遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。检查标记有递归函数调用的图表。

可与嵌入式编码器和金宝app仿真软件检查

请注意

如果模型包含状态流元素,则需要状态流许可。

结果和建议措施

条件 建议的行动

Chart有一个递归函数调用。

删除递归函数调用。

另请参阅

检查没有默认大小写的开关大小写表达式

检查身份证mathworks.misra.SwitchDefault

识别没有默认大小写的开关大小写表达式。

描述

检查标志模型对象具有没有默认大小写的开关大小写表达式。

遵循此检查的建议,可以增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性,以及符合CERT C、CWE、ISO/IEC TS 17961标准的代码。

如果使用Polyspace注释对块进行了验证,则检查不会标记没有默认情况的块。当你运行检查时,带理由的块表列出了块,没有默认情况下,有一个理由。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动

模型对象有一个没有默认大小写的开关大小写表达式。

开关情况块,考虑选择块参数显示默认情况显式指定默认大小写。

能力和限制

您可以:

  • 在您的库模型上运行此检查。

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

编辑时间检查。编辑时检查支持此检查。金宝app

另请参阅

检查不推荐用于C/ c++产品代码部署的块

检查身份证mathworks.codegen.PCG金宝appSupport

识别代码生成不支持或不推荐用于C/ c+金宝app+产品代码部署的块。

描述

这种检查部分地识别了不推荐用于C/ c++产品代码生成的模型构造。为金宝app仿真软件编码器™和Embedded Coder,这些模型构造标识出现在表中金宝appSimulink块支持金宝app(金宝app仿真软件编码器)

在某些情况下,该检查标记代码生成支持的块。金宝app对于这些块,您应该查看支持说明中提供的脚注信息,并遵循Model Advisor提供的建议操作。金宝app

遵循此检查的建议可以增加生成符合CERT C、CWE和ISO/IEC TS 17961标准的代码的可能性。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动
模型或子系统包含不应该用于生产代码部署的块。 考虑替换结果中列出的块。单击可疑项列表中的元素以定位条件。
模型或子系统包含支持但不推荐用于生产代码生成的块。金宝app 检查支持说明,并遵循M金宝appodel Advisor提供的建议操作。

能力和限制

您可以:

  • 在您的库模型上运行此检查。

  • 分析库链接块的内容。

  • 分析屏蔽子系统中的内容。

  • 排除块和图表,如果你有金宝app仿真软件检查许可证。

编辑时间检查

编辑时检查支持此检查。金宝app

另请参阅

检查AUTOSAR接收机接口是否缺少错误端口

检查身份证mathworks.misra.AutosarReceiverInterface

识别没有匹配错误端口的AUTOSAR接收机接口输入。

描述

遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。检查标志AUTOSAR接收器接口输入丢失错误端口。下表标识了当相应的错误端口缺失时由检查标记的接收机接口端口的AUTOSAR数据访问模式类型。

AUTOSAR数据访问模式类型 被Check标记?
ImplicitReceive 是的
ExplicitReceive 是的
QueuedExplicitReceive 没有
ErrorStatus 没有
ModeReceive 没有
IsUpdated 没有
EndToEndRead 是的
ExplicitReceiveByVal 没有
否则 没有

当使用Polyspace注释对错误端口进行校正时,检查不会标记缺失的错误端口。当你运行检查时,带理由的块表中列出了缺少的有理由的错误端口。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动

AUTOSAR接收器接口输入没有匹配的错误端口。

添加缺失错误端口并映射到相应的AUTOSAR接收机接口输入。

当数据访问方式为时,AUTOSAR接收机接口端口没有匹配错误端口ImplicitReceiveExplicitReceive,或EndToEndRead

添加缺失错误端口并映射到相应的AUTOSAR接收机接口输入。

能力和限制

您可以:

  • 分析顶层/根级模型。

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

另请参阅

检查模型函数中是否缺少const限定符

检查身份证mathworks.misra.ModelFunctionInterface

识别输入数据指针中缺失的const限定符。

描述

遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。check标记没有const限定符的输入数据指针。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动
没有为输入数据指针定义const限定符。 考虑向输入数据指针添加一个const限定符。

另请参阅

  • MISRA C:2012,规则8.13

  • MISRA - C(嵌入式编码)

检查整型字长

检查身份证mathworks.misra.IntegerWordLengths

识别不符合硬件实现设置的整数字长

描述

该检查标记字长超过硬件实现设置允许的比特数的整数。

遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性,以及符合CERT C和CWE标准的代码。

可与嵌入式编码器和金宝app仿真软件检查

请注意

如果模型包含状态流元素,则需要状态流许可。

结果和建议措施

条件 建议的行动

模型对象包含不符合硬件实现设置的整数字长。

更新整数,使其长度不超过允许的位数。可以在“配置参数”对话框中查看允许的比特数硬件实现>设备详细信息窗格。

能力和限制

您可以:

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

另请参阅

检查用作总线元素名称的总线对象名称

检查身份证mathworks.misra.BusElementNames

标识用作总线元素名称的总线对象名称。

描述

使用此检查可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。检查标记Simulink的实例。金宝app总线对象名称作为Simulink。金宝app总线元素名称。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动
总线对象名称用作总线元素名称。 更改标记的总线对象名称或总线元素名称,使它们不相同。

另请参阅

  • MISRA C:2012,规则5.6

  • MISRA AC AGC,规则5.3

  • MISRA - C(嵌入式编码)