如何快速跟踪自动生成代码的MISRA符合性

由Ram Cherukuri

代码生成极大地简化了MISRA遵从性过程。除了确保安全性和可靠性之外,编码标准(如MISRA)的主要目标是可读性、可维护性和可移植性。因为模型是开发过程的核心,并且可以以一致的方式为不同平台从模型生成代码,所以它简化了可移植性和可维护性部分。

因此,在代码生成的环境中有一个较小的规则子集,如MISRA AC AGC或作为新的MISRA C:2012编码规则的一部分。为了生成符合MISRA的代码,您需要确保不违反某些建模模式,并适当配置代码生成选项。

您可以查看关于生成的信息MISRA兼容代码与嵌入式编码器®.类似地,你可以了解使用dSPACE®TargetLink

但在大多数现实世界的应用程序中,您最终会遇到某些需要通过偏差过程解决的违规情况,这是MISRA推荐的。其中一些可能是设计决策的结果。

您可以手动或作为构建系统的一部分对生成的代码运行分析。然后,您可以通过在代码中添加注释或将注释与结果单独保存来解决任何违规问题。您可以使用Polyspace工具执行相同的任务,但如果有更有效的方法呢?如果您必须重新生成代码,那么重复评审100个违规项可能会浪费多少工程时间?

与基于模型的设计工具集成的好处

这种集成的主要好处是使偏离过程更有效。通过在模型级别添加理由,您可以避免每次生成代码时的返工,无论是在更新之后还是针对不同的目标平台。您可以继续维护您的模型作为设计的中心,并自动将理由传播到Polyspace®分析;这是由于集成了自动编码器,如Embedded Coder和TargetLink。

左移操作是MISRA违规,但这是一种高效代码的设计选择。此外,它没有副作用,而且被证明是安全的。它可以追溯到可以被注释的增益块。

在上面的示例中,为了提高效率,设计选择生成使用位移位操作而不是乘法的代码。下面,您可以看到Embedded Coder提供的启用或禁用这些设置的选项。嵌入式编码器进一步提供了代码生成顾问来指导流程,以提高效率或符合MISRA。

如上面示例中所讨论的,配置移位操作使用的代码生成选项。

此外,Polyspace自动配置在代码生成上下文中适用的规则子集。例如,在MISRA C:2012的情况下,如果您正在生成代码,某些规则将被重新分类,而Polyspace MISRA检查器在从代码生成环境启动时将导入该信息。

从代码生成环境导入的设置示例。

实际上,您可以将Polyspace的执行作为代码生成之后的后处理步骤自动化,以便在将代码组件签入源代码管理系统之前评估它是否符合MISRA。例如,您可以选择可以在本地分析和处理的规则的单个单元子集。回溯到模型的可追溯性可以帮助您在模型中直接处理这些违规。最后但并非最不重要的一点是,您可以生成详细的MISRA报告来记录遵从性的级别。

有关使用Polyspace工具遵守MISRA的更多信息,请参阅下面的链接: