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