MISRA C:2012检查
您可以检查您的模型或子系统是否有可能生成符合MISRA C:2012的代码。
另请参阅
检查分配块的使用情况
检查身份证:mathworks.misra.AssignmentBlocks
识别赋值没有block参数的块如果没有分配任何输出元素,则执行该操作设置为错误或警告.
描述
此检查适用于赋值下的Simulink块库中可用的块金宝app金宝app>数学操作.
遵循此检查的建议,可以增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性,以及符合CERT C、CWE、ISO/IEC TS 17961标准的代码。
可与嵌入式编码器®而且金宝app®检查™.
结果和建议措施
条件 | 建议的行动 |
---|---|
模型或子系统可能包含的赋值数组初始化不完整的块,没有块参数如果没有分配任何输出元素,则执行该操作设置为错误或警告. | 设置块参数如果没有分配任何输出元素,则执行该操作到其中一个推荐值:
|
能力和限制
在库模型上运行。
分析库链接块的内容。
分析屏蔽子系统中的内容。
如果你有金宝app仿真软件检查许可,允许排除块和图表。
编辑时间检查。编辑时检查支持此检查。金宝app但是,不支持以下检查条件,因为编辑时检查无法确定是否金宝app赋值block在一个Iterator子系统中。
设置块参数如果没有分配任何输出元素,则执行该操作到其中一个推荐值:
错误,如果赋值block不在Iterator子系统中。
警告,如果赋值block在一个Iterator子系统中。
另请参阅
MISRA C:2012,规则9.1
ISO/IEC TS 17961: 2013, uninitref
证书c, exp33-c
CWE CWE - 908
MISRA - C(嵌入式编码)
检查MISRA C:2012不推荐的块
检查身份证:mathworks.misra.Blk金宝appSupport
识别MISRA C:2012兼容代码生成不支持或不推荐的代金宝app码块。
描述
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。
可与嵌入式编码器和金宝app仿真软件检查.
结果和建议措施
能力和限制
您可以:
在您的库模型上运行此检查。
分析库链接块的内容。
分析屏蔽子系统中的内容。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
编辑时间检查。编辑时检查支持此检查。金宝app
另请参阅
检查不支持的块名称金宝app
检查身份证:mathworks.misra.BlockNames
识别包含以下内容的块名/
.
描述
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。
可与嵌入式编码器和金宝app仿真软件检查.
结果和建议措施
条件 | 建议的行动 |
---|---|
块名包含/ 在模型或子系统中找到。 |
删除/ 来自块名。 |
能力和限制
在库模型上运行。
分析库链接块的内容。
分析屏蔽子系统中的内容。
如果你有金宝app仿真软件检查许可,允许排除块和图表。
编辑时间检查。编辑时检查支持此检查。金宝app
另请参阅
MISRA C:2012,规则3.1
MISRA - C(嵌入式编码)
检查MISRA C:2012的配置参数
检查身份证:mathworks.misra.CodeGenSettings
识别可以影响MISRA C:2012兼容代码生成的配置参数。
描述
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。
可与嵌入式编码器和金宝app仿真软件检查.
结果和建议措施
条件 | 建议的行动 |
---|---|
数学和数据类型 | |
配置参数采用除法进行定点净斜率计算未设置为在 或只对整数的倒数使用除法 . |
集采用除法进行定点净斜率计算来在 或只对整数的倒数使用除法 . |
配置参数Inf或NaN块输出设置为 配置参数Inf或NaN块输出设置为 |
当金宝app支持非有限数是:
|
配置参数模型验证块启用设置为使用本地设置 或让所有 . |
集模型验证块启用来禁用所有 . |
配置参数无定向事件广播设置为没有一个 或警告 . |
集无定向事件广播来错误 . |
配置参数换行溢出设置为没有一个 |
设置配置参数换行溢出来警告 或错误 . |
硬件实现 | |
配置参数生产硬件有符号整数除法到四舍五入设置为未定义的 |
集生产硬件有符号整数除法到四舍五入来零 或地板上 . |
配置参数对有符号整数右移作为算术移位被选中。 | 清晰的对有符号整数右移作为算术移位. |
模拟目标 | |
配置参数MATLAB函数的编译时递归极限是否设置为其他值0 . |
集MATLAB函数的编译时递归极限来0 . |
配置参数动态内存分配的MATLAB函数被选中。 | 清晰的动态内存分配的MATLAB函数. |
配置参数为MATLAB函数启用运行时递归被选中。 | 清晰的为MATLAB函数启用运行时递归. |
代码生成 | |
配置参数位字段声明器类型说明符设置为
|
集位字段声明器类型说明符来uint_T . |
配置参数铸造模式未设置为标准兼容 . |
集铸造模式来标准兼容 . |
配置参数代码替换库未设置为没有一个 或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仿真软件检查许可证。
另请参阅
MISRA C:2012, Dir 1.1
证书c, flp02-c
CWE CWE - 1077
注释代码并隐藏已知或可接受的结果(Polyspace Bug Finder)
MISRA - C(嵌入式编码)
检查有符号整数上的位操作
检查身份证:mathworks.misra.CompliantCGIRConstructions
识别包含有符号整数金宝app按位操作的Simulink块。
描述
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性,以及符合CERT C和CWE标准的代码。
可与嵌入式编码器和金宝app仿真软件检查.
请注意
如果模型包含状态流元素,则需要状态流许可。
结果和建议措施
条件 | 建议的行动 |
---|---|
该模型包含对有符号整数进行逐位操作的块。 | 考虑使用无符号整数进行逐位操作。 |
能力和限制
您可以:
检查假设为整个模型生成了代码。当代码由子系统构建或导出函数生成时,检查可能产生错误的结果。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
另请参阅
MISRA C:2012,规则10.1
证书c, int13-c
CWE CWE - 682
MISRA - C(嵌入式编码)
检查递归函数调用
检查身份证:mathworks.misra.RecursionCompliance
在状态流程图中识别递归函数调用。
描述
遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。检查标记有递归函数调用的图表。
可与嵌入式编码器和金宝app仿真软件检查.
请注意
如果模型包含状态流元素,则需要状态流许可。
结果和建议措施
条件 | 建议的行动 |
---|---|
Chart有一个递归函数调用。 |
删除递归函数调用。 |
另请参阅
MISRA C:2012, Rule 17.2
避免图表中不必要的递归(Stateflow)
检查没有默认大小写的开关大小写表达式
检查身份证:mathworks.misra.SwitchDefault
识别没有默认大小写的开关大小写表达式。
描述
检查标志模型对象具有没有默认大小写的开关大小写表达式。
遵循此检查的建议,可以增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性,以及符合CERT C、CWE、ISO/IEC TS 17961标准的代码。
如果使用Polyspace注释对块进行了验证,则检查不会标记没有默认情况的块。当你运行检查时,带理由的块表列出了块,没有默认情况下,有一个理由。
可与嵌入式编码器和金宝app仿真软件检查.
结果和建议措施
条件 | 建议的行动 |
---|---|
模型对象有一个没有默认大小写的开关大小写表达式。 |
为开关情况块,考虑选择块参数显示默认情况显式指定默认大小写。 |
能力和限制
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
编辑时间检查。编辑时检查支持此检查。金宝app
另请参阅
MISRA C:2012, Rule 16.4
ISO/IEC TS 17961: 2013, swtchdflt
证书c, msc01-c
CWE CWE - 478
注释代码并隐藏已知或可接受的结果(Polyspace Bug Finder)
MISRA - C(嵌入式编码)
检查不推荐用于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
另请参阅
使用代码生成支持的块和产品下载188bet金宝搏金宝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接收机接口端口没有匹配错误端口ImplicitReceive ,ExplicitReceive ,或EndToEndRead . |
添加缺失错误端口并映射到相应的AUTOSAR接收机接口输入。 |
能力和限制
您可以:
分析顶层/根级模型。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
另请参阅
MISRA C: 2012,指令4.7
MISRA - C(嵌入式编码)
注释代码并隐藏已知或可接受的结果(Polyspace Bug Finder)
配置AUTOSAR元素和属性(AUTOSAR Blockset)
AUTOSAR组件配置(AUTOSAR Blockset)
检查模型函数中是否缺少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(嵌入式编码)