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).
有关更多信息,请参见:
AUTOSAR可运行程序的建模模式(AUTOSAR Blockset)
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合规信息汇总表.