主要内容

证书C、CWE和ISO/IEC TS 17961标准的安全编码检查

这些检查用于验证由Embedded Coder生成的代码®符合CERT C, CWE, ISO/IEC TS 17961(嵌入式编码)安全的编码标准。

另请参阅

检查安全编码标准的配置参数

检查身份证mathworks.security.CodeGenSettings

确定可能影响安全编码标准遵从性的配置参数。

描述

根据该检查的建议,生成符合CERT C、CWE、ISO/IEC TS 17961安全编码标准的代码的可能性增加。

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

结果和建议的行动

条件 建议的行动
诊断

配置参数Inf或NaN块输出设置为没有一个错误金宝app支持非谓语形式的数字设置为

配置参数Inf或NaN块输出设置为没有一个金宝app支持非谓语形式的数字设置为

金宝app支持非谓语形式的数字是:

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

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

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

配置参数包括评论清除。

选择包括评论
配置参数MAT-file日志被选中。 清晰的MAT-file日志
对于基于ert的目标系统,配置参数MATLAB用户评论清除。 选择MATLAB用户评论
配置参数用带符号的按位移位替换2的幂乘法被选中。 清晰的用带符号的按位移位替换2的幂乘法
对于基于ert的目标系统,配置参数金宝app支持连续时间被选中 清晰的金宝app支持连续时间
对于基于ert的目标系统,配置参数金宝app支持非内联S-functions被选中 清晰的金宝app支持非内联S-functions
配置参数系统目标文件设置为基于grt的目标。 系统目标文件以ERT为基础的目标。
配置参数对模型初始化使用动态内存分配被选中。 清晰的对模型初始化使用动态内存分配

请注意

选择只有当代码接口包装设置为可重用的功能

行动的结果

点击全部修改将参数值更改为建议值。

请注意

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

参数子检查依赖于参数记录的结果D在结果表中。当结果为D-Warning,当前值列中的结果表状态前提约束未满足subchecks。更改参数后,重新运行检查。

请注意

有些子检查是针对基于ert的系统的配置参数。单击时不会更新这些参数全部修改除非您将模型更改为基于ert的系统。

另请参阅

安全的编码标准(嵌入式编码)

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

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

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

描述

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

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

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

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

结果和建议的行动

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

功能和限制

您可以:

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

  • 分析库链接块的内容。

  • 分析隐藏子系统中的内容。

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

编辑时间检查

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

另请参阅

检查不推荐使用安全编码标准的块

检查身份证mathworks.security.Block金宝appSupport

识别不建议遵守安全编码标准的块。

描述

根据该检查的建议,生成符合CERT C、CWE、ISO/IEC TS 17961安全编码标准的代码的可能性增加。

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

结果和建议的行动

条件 建议的行动

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

考虑查找表块的其他插值和外推方法。

在模型或子系统中发现了已弃用的查查表块。具体的模块是:

  • 查找表

  • 查找表(二)

考虑替换已弃用的查找表块。
S函数生成器在模型或子系统中发现了块。 考虑用建议用于生产的块替换S-Function Builder块。
从工作空间在模型或子系统中发现了块 考虑用推荐用于生产的块替换From Workspace块。

在模型或子系统中发现了字符串块。具体的模块是:

考虑用推荐的生产区块替换String区块。

功能和限制

您可以:

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

  • 如果您有金宝app仿真软件检查许可证。

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

另请参阅

检查分配块的使用情况

检查身份证mathworks.misra.AssignmentBlocks

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

描述

这张支票适用于赋值可以在下面的Simulink块库中找到金宝app金宝app>数学操作

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

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

结果和建议的行动

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

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

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

  • 警告,如果赋值block位于Iterator子系统中。

功能和限制

  • 在库模型上运行。

  • 分析库链接块的内容。

  • 分析隐藏子系统中的内容。

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

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

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

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

  • 警告,如果赋值block位于Iterator子系统中。

另请参阅

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

检查身份证mathworks.misra.SwitchDefault

识别没有默认用例的开关用例表达式。

描述

check标志模型对象具有没有默认大小写的switch case表达式。

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

如果块是用Polyspace对齐的,则检查不会标记没有默认情况的块®注释。当你检查的时候块与理由表列出了没有默认情况的有正当理由的块。

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

结果和建议的行动

条件 建议的行动

模型对象有一个没有默认用例的开关用例表达式。

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

功能和限制

您可以:

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

  • 如果您有金宝app仿真软件检查许可证。

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

另请参阅

检查有符号整数的位操作

检查身份证mathworks.misra.CompliantCGIRConstructions

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

描述

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

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

这个检查需要一个状态流®当模型中使用statflow时,使用许可证。

结果和建议的行动

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

功能和限制

您可以:

  • 检查假定代码是为整个模型生成的。当代码由子系统构建或导出函数生成时,检查可能产生不正确的结果。

  • 如果您有金宝app仿真软件检查许可证。

另请参阅

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

检查身份证mathworks.misra.CompareFloatEquality

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

描述

检查标志源导致对浮点值进行相等或不等操作。

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

如果用Polyspace注释对浮点值进行了相等或不等操作,则检查不会对块进行标记。当你检查的时候块与理由表列出了具有对正的相等或不等操作的块。

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

此检查需要Stateflow许可证。

结果和建议的行动

条件 建议的行动

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

考虑使用非浮点值来进行相等或不等式运算。

功能和限制

您可以:

  • 如果您有金宝app仿真软件检查许可证。

另请参阅

检查整型字长

检查身份证mathworks.misra.IntegerWordLengths

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

描述

检查标志是字长超过硬件实现设置允许的位数的整数。

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

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

结果和建议的行动

条件 建议的行动

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

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

功能和限制

您可以:

  • 如果您有金宝app仿真软件检查许可证。

另请参阅

检测死逻辑

检查身份证mathworks.sldv.deadlogic

识别在模拟期间处于不活动状态的逻辑。

描述

此检查将识别在模拟期间保持不活动的模型部分。

您可以使用以下命令运行更详细的分析,以标识死逻辑和活动逻辑金宝app仿真软件设计校验™设计错误检测。有关更多信息,请参见检测由错误值引起的死逻辑(金宝app仿真软件设计验证器)

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

结果和建议的行动

结果 建议的行动
失败了,模式不兼容

解决模型不兼容问题。请参阅:

也看到用自动存根处理不兼容性(金宝app仿真软件设计验证器)

在模型中发现死逻辑 金宝app仿真软件设计验证器证明了这些决策和条件结果是不可能发生的,并且是模型中的死逻辑。死逻辑也可以是参数指定约束或输入端口指定最小和最大约束的副作用。在极少数情况下,死逻辑可能是由金宝app仿真软件设计验证器.可能有一些目标是该分析没有决定的。要扩展此分析的结果,请使用金宝app仿真软件设计验证器设计错误检测来识别活动逻辑。从Simulink金宝app编辑器中选择应用程序>设计验证器>设置.在配置参数窗口中,从设计验证器>设计错误检测窗格中,选择两个死的逻辑确定活动的逻辑
在模型中未找到死逻辑 金宝app仿真软件设计验证器未在模型中找到死逻辑。可能存在此分析未确定的目标。若要扩展此分析的结果,请使用金宝app仿真软件设计验证器设计错误检测来识别活动逻辑。从Simulink金宝app编辑器中选择应用程序>设计验证器>设置.在配置参数窗口中,从设计验证器>设计错误检测窗格中,选择两个死的逻辑确定活动的逻辑

另请参阅

检测整数溢出

检查身份证mathworks.sldv.integeroverflow

检测模型中的整数或定点数据溢出错误

描述

此检查标识超出整数或定点操作数据类型范围的操作。

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

结果和建议的行动

结果 建议的行动
失败了,模式不兼容

解决模型不兼容问题。请参阅

也看到用自动存根处理不兼容性(金宝app仿真软件设计验证器)

在模型中发现整数溢出

要查看导致整数溢出的条件,请创建一个利用模型。当您模拟装具时,输入复制错误。点击查看测试用例在Model Advisor报告中。

另请参阅

检测除零

检查身份证mathworks.sldv.divbyzero

检测模型中按零除的错误

描述

此检查将识别模型中导致零除错误的操作。

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

结果和建议的行动

结果 建议的行动
失败了,模式不兼容

解决模型不兼容问题。请参阅

也看到用自动存根处理不兼容性(金宝app仿真软件设计验证器)

在模型中找到零除法

要查看导致被零除的条件,请创建一个利用模型。当您模拟装具时,输入复制错误。点击查看测试用例在Model Advisor报告中。

另请参阅

检测超出绑定的数组访问

检查身份证mathworks.sldv.arraybounds

检测访问数组索引边界外的操作

描述

这个检查在Simulink Design Verifier中检测出超出边界的数组访问实例。金宝app

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

结果和建议的行动

结果 建议的行动
失败了,模式不兼容

解决模型不兼容问题。请参阅

也看到用自动存根处理不兼容性(金宝app仿真软件设计验证器)

在模型中发现超出边界的数组访问

要查看导致越界数组访问的条件,请创建一个利用模型。当您模拟装具时,输入复制错误。点击查看测试用例在Model Advisor报告中。

另请参阅

检测指定的最小和最大值违反

检查身份证mathworks.sldv.minmax

检测超过指定的最小值和最大值的信号

描述

该分析检查整个模型和输出端口的中间信号的指定的最小值和最大值(设计范围)。如果分析检测到一个信号超出了设计范围,那么结果将识别出模型中错误发生的位置。

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

结果和建议的行动

结果 建议的行动
失败了,模式不兼容

解决模型不兼容问题。请参阅

也看到用自动存根处理不兼容性(金宝app仿真软件设计验证器)

模型中最小值和/或最大值的违背

要查看导致违规的条件,请创建一个利用模型。当您模拟装具时,输入复制错误。点击查看测试用例在Model Advisor报告中。

另请参阅