主要内容

MISRA C:2012合规的基本原理

生成的代码不符合MISRA C:2012指南的实例被标记为偏离MISRA C:2012合规信息汇总表.根据MISRA C:2012指南第5.4节,有关偏差的信息包括:

  • 方针被偏离了

  • 允许偏离的情况

  • 偏差的理由,包括风险评估

  • 演示如何确保安全

  • 不符合的潜在后果

MISRA C:2012指令和规则的偏差包括:

MISRA C:2012指令4.7偏离原理

指令的定义

如果函数返回错误信息,则应该测试该错误信息。

基本原理

请注意

只有在使用基于autosar的代码生成目标时才违反此指令。

当函数调用提供指示不成功操作的信息时,调用程序必须在函数返回时检查错误指示。函数调用不局限于标准库中的调用。

描述

AUTOSAR发送方接口函数调用,例如Rte_Write_……,有返回类型Std_ReturnType指示写入值是否成功。匹配的Simulink模式万博1manbetx是一个顶级输出端口,被配置为AUTOSAR发送方接口。

模型示例

AUTOSAR的配置

生成的代码示例

在样例代码中,注意使用AUTOSAR函数调用Rte_Write_……Rte_Write_OUT_DE1_OUT_DE1(rtb_TmpSignalConversionAtIN_DE1);

void Runnable_Step(void){/*本地块i/o变量*/ real_T rtb_TmpSignalConversionAtIN_DE1;rtb_TmpSignalConversionAtIN_D_l = Rte_Read_IN_DE1_IN_DE1 (&rtb_TmpSignalConversionAtIN_DE1);…if (rtb_tmpsignalconversionatin_l > 0){…Rte_Write_OUT_DE1_OUT_DE1(rtb_TmpSignalConversionAtIN_DE1);}…}

的理由

的失败Rte_Write_……函数调用通常在接收端处理,因为函数调用的返回值并不总是包含所有潜在的错误。

要求偏差的条件

对于AUTOSAR发送端端口的所有实例都要求这种偏差。

不遵守规定的后果

当发送方操作不成功时,调用程序无法作出反应。

控制报告的措施

当Polyspace®对代码的分析发现已知的或可接受的编码规则违反,您可以通过以下方法在后续分析中抑制这些违反添加代码注释(Polyspace Bug Finder)外港块。类中的注释所证明的结果将隐藏在以后的分析中结果列表窗格。要查看违反编码规则的情况,请参见Polyspace桌面用户界面中的过滤和分组结果(Polyspace Bug Finder)

如果您已经为MISRA C:2004违规提供了注释,那么当您检查代码是否存在MISRA C:2012违规时,Polyspace将导入这些理由。有关其他信息,请参见将现有的MISRA C: 2004导入到MISRA C: 2012结果(Polyspace Bug Finder)

有关更多信息,请参见:

MISRA C:2012规则13.5偏离原理

规则定义

逻辑对象的右操作数& &||操作符不得含有持久的副作用。

基本原理

属性的右侧操作数的持续副作用& &而且||操作符的出现取决于左边的操作数,这与程序员的期望相反。

请注意

这个词持续的副作用术语的定义见MISRA C:2012关键系统中C语言使用指南文档。

描述

使用数学运算作为第二输入逻辑运算符配置为AND或or操作的块。

模型示例

生成的代码示例

在示例代码中,请注意操作数的使用& &Y1 = (u1& &(√U2< = 3.0));

/*输出块信号*/ boolean_T U1;/* '/U1' */ real_T U2;/* '/U2' */ boolean_T Y1;/* '<根>/逻辑算子' */ /*模型步函数*/ void DEV_R1305_01main_step(void){/*逻辑:'<根>/逻辑算子'合并:*常量:'/常量' *输入:'<根>/U1' *输入:'<根>/U2' * RelationalOperator: '/比较' *根号:'<根>/根号' */ Y1 = (U1 &&(根号(U2) <= 3.0));}

的理由

一些标准数学函数至少有一个修改全局变量的持久副作用errno变量,在C90或C99标准中定义。自errno变量没有被嵌入式编码器使用®,则第二操作数可视为无持续副作用。

请注意

Polyspace Bug Finder™将每个没有可用源代码的函数视为潜在的副作用。

要求偏差的条件

的右边参数所使用的标准数学函数的所有调用都要求这种偏差& &而且||操作符。

不遵守规定的后果

在本偏离记录中描述的情况下,不遵守MISRA C:2012规则13.5不产生任何后果。由于这种偏差,不存在额外的验证和验证需求。

控制报告的措施

当Polyspace对代码的分析发现已知或可接受的编码规则违反时,您可以通过以下方法在后续分析中抑制这些违反添加代码注释(Polyspace Bug Finder)逻辑运算符块。类中的注释所证明的结果将隐藏在以后的分析中结果列表窗格。要查看违反编码规则的情况,请参见Polyspace桌面用户界面中的过滤和分组结果(Polyspace Bug Finder)

如果您已经为MISRA C:2004违规提供了注释,那么当您检查代码是否存在MISRA C:2012违规时,Polyspace将导入这些理由。有关其他信息,请参见将现有的MISRA C: 2004导入到MISRA C: 2012结果(Polyspace Bug Finder)

有关其他信息,请参见MISRA C:2012合规信息汇总表