如何更顺畅地走向MISRA合规之路?
汽车工业软件可靠性协会(MISRA)的“关键系统中使用C语言的指南”(称为MISRA C 2012)是对C语言子集的定义,旨在最大限度地减少潜在的错误、安全漏洞和导致程序失败或严重错误的错误。虽然最初是为汽车系统创建的,但该指南已被许多其他行业的安全关键型应用所采用。在所有情况下,确定合规性(在供应商/客户关系中越来越多的要求)是复杂和耗时的。
市场上有许多工具可以报告错误,表明代码何时违反了指南,但很少有工具能够简化证明合规性所需的报告和文档流程——更不用说将指南实施到你的软件开发流程中了。为了简化在整个产品生命周期中实现、记录和维护MISRA合规性的整个过程,我们设计了我们的报告和分析平台(Parasoft DTP),与我们的C和C++测试工具C/C++test一起带来自动化和协助。在这篇文章中,我想要更好地解释你可以如何一起利用这些工具,使MISRA的合规性不再那么头疼。
坎坷的合规之路
合规是一种二元状态——代码要么合规,要么不合规,MISRA准则希望所有的代码都能符合标准中的指令和规则。因此,在一个大型复杂的项目中实现完全合规性并不是一件容易的事情。除了挑战之外,许多供应商/客户关系还要求通过文件证明对标准的遵守。
为了更好地明确实施MISRA编码指南的程序,MISRA在2016年发布了合规性指南,以帮助开发组织实现和记录合规性。为了通过自动化来简化这一过程,需要以下几点:
- 高水平、实时地查看项目整体状态,以确保合规性被嵌入到开发过程中。
- 自动创建符合MISRA合规准则的报告(如MISRA Compliance:2016),以减少生成证明文件的负担。
- 快速、简单的工作流程,用于调查违规行为,并对补救行动进行优先排序,以简化使项目“走上正轨”的过程,实现合规性。
考虑到这些准则,我们设计了报告和分析平台(DTP),以定制和扩展C/C++test的部署,提供智能分析,让利益相关者更深入地了解测试覆盖率和变更引入的风险。对于MISRA标准,DTP简化了实现、执行和记录合规性的过程,同时证明了功能、性能和安全性。
MISRA合规性仪表板
项目当前的合规状态是一个重要的衡量标准,衡量合规性的各种细枝末节也是如此。DTP提供了一个全面的MISRA合规性仪表盘,可以对项目进行现场评估。这种高层次的视图对管理人员和开发人员都很重要,它为管理人员提供了一个一目了然的合规性视图,并为开发人员提供了一个实现合规性进展的起点,有助于确定工作的优先级。
图1:DTP的MISRA合规性仪表板示例。
MISRA合规性套包
除了MISRA合规仪表盘,Parasoft还提供了一个完整的合规包,专门针对MISRA的合规文件要求。DTP的MISRA合规包根据MISRA Compliance:2016指南提供了自动文档,大大减少了向认证机构证明合规性所需的时间和精力。这些功能包括:
准则执行计划
MISRA准则执行计划展示了如何对每条MISRA准则进行核查。在大多数情况下,这显示了MISRA指令或规则与相关代码分析规则或DTP功能之间的联系。请看下面的例子:
图2:DTP的MISRA准则执行计划报告的一个例子。
准则重新分类计划
MISRA准则重新分类计划用于传达商定的准则的重要性,作为供应商/客户关系的一部分。该文件展示了如何针对当前项目对每条准则进行具体分类。强制性和要求的准则不能降级到较低的级别;但是,一个项目可以决定将要求的或咨询的准则升级到更严格的设置,咨询的可以不被采纳(即,使其成为不需要遵守的准则)。请看下面一个重新分类计划的例子:
图3:DTP的MISRA重新分类计划报告的一个例子。
偏差报告
MISRA偏离报告记录了偏离准则的行为,并提出适当的理由。任何时候,只要发现了违反规则的行为,但允许其继续存在,就必须记录在偏差报告中。在大多数情况下,这些都是代码分析中报告的被抑制的错误。下面是一个示例报告:
图4:DTP的MISRA偏差报告示例
准则遵守情况汇总
遵守情况摘要是项目总体遵守情况的主要记录。该报告记录了每项准则的遵守情况,以及任何相关的偏离或重新分类。下面是一个例子:
图5:DTP的MISRA遵守情况报告的一个例子。
走上合规的轨道
在大多数情况下,在分析源代码是否符合MISRA的要求时,违规行为是静态分析规则违规。在一个大型项目中,最初会有很多错误报告,快速有效地管理它们是至关重要的。DTP Violations Explorer是导航、评估、优先处理和分配报告的错误以进行补救的关键工具。如果静态分析规则的违反被证明是有效的,但合理的,被认为是无害的,或不适用,开发人员可以抑制错误,并记录偏差。这些偏差通过项目的每个级别向上报告,到仪表板和合规性文档。下图是违规浏览器的一个例子:
图6:在DTP违规资源管理器中正在调查的违规实例。
执行、合规和可追溯性
总之,在开发安全关键型软件时,MISRA标准提供了一套全面的准则,以防止安全漏洞和程序失败。然而,应用这些准则和证明合规性可能会过于繁琐,简化这项工作对于确保软件按时交付至关重要。
要让软件帮助你完成这项工作,你可以:
- 在每次构建软件后,使用C/C++test通过静态代码分析来验证MISRA准则,确保日常执行。
- 创建高级概述和详细报告,从DTP的MISRA合规性包中快速获得,以有效地证明合规性。
- 利用DTP实现项目需求与测试的可追溯性,这不仅是MISRA的重要要求,也是安全标准的要求。
最后,在整个生命周期中支持MISRA合规性对于持续执行和可追溯性非常重要,根据MISRA Compliance:2016指南,自动化文档是节省处理该指南的时间和挫折的关键。