MISRA偏离记录不是给静态分析工具的告警补一句“确认无风险”,而是针对某一项规则的违背,进行一次正式的论证。记录里面需要说明,为什么这个违背没有办法直接去掉,它会出现在代码的什么位置,可能会带来哪些风险,以及为了控制这些风险,又采取了哪些限制措施和验证手段。只有走完规定的审核和批准流程,这条规则的违背,才能够作为一项受控的偏离被保留下来。
一、MISRA偏离记录怎么编写
偏离记录应当围绕着具体的规则和实际的代码场景来展开,不能用一段笼统的理由就把整个项目都给覆盖掉。如果是同一个原因造成的多处违背,可以共用主体部分的说明,但是每一个应用的位置,还是需要能够被准确地识别出来。
1、记录规则和适用位置
在【MISRA偏离记录】当中,要写清楚规则的编号、规则的版本、所在的代码文件、函数的名称,还有对应的具体位置。
如果偏离涉及到了宏的展开、生成的代码,或者多个相似的位置,可以用一个统一的标识,去建立一个位置的清单。记录必须能够追溯到每一个实际发生违背的点,不能只写上一句“通信模块相关代码”或者“部分底层驱动”,否则到了后面代码发生变更的时候,就很难再去确认偏离的范围了。
2、说明偏离发生的真实原因
偏离的理由,要解释清楚为什么当前的实现方式必须被保留,以及如果把它改成符合规则的写法,又会带来什么样的问题。可以从执行时间、资源占用、第三方代码的集成、编译器的行为,或者防御性编程这些角度去论证,但不能仅仅是拿开发方便、修改成本太高,或者工具误报来当作结论。
如果确实存在一种合理的替代写法,那就应该优先去修改代码。MISRA也明确指出了,偏离不能只是为了开发的便利,也不能在存在合理替代方案的情况下,就直接去批准。
3、写清限制和补偿措施
偏离记录还要说明清楚适用的条件、被禁止的范围、风险控制的办法,还有附加的验证要求。比如,只允许用在特定的数据类型上、固定某一个编译器的版本,或者只允许在指定的函数里面使用,并且要求去执行边界的测试、代码的评审,或者目标码的检查。
这些限制条件,决定了这项偏离是不是还继续有效。等到代码使用的条件发生了变化以后,就不能再继续沿用原来的记录,而不去做重新评估了。
二、MISRA偏离记录缺少依据怎么补充
依据不足,通常表现出来就是只有一条规则的编号,再加上一句简单的解释,缺少替代方案的比较、风险的分析,还有验证的证据。去补充的时候,不能单纯地把文字给拉长,而是要把判断的整个过程给补充完整。
1、补充替代方案分析
在【偏离理由】里面,把那些已经评估过的、符合规则的写法都给列出来,并且说明没有采用它们的具体原因。
比如说,修改之后会带来没办法接受的执行时间延长,会破坏掉现有的接口,会改变硬件访问的语义,又或者是需要去重写那些已经经过验证的第三方代码。这些理由,应当有数据、设计上的约束,或者测试的结果作为支撑,不能只是写上一句“改动比较大”。
2、补充风险影响分析
需要去分析,这个违背可能会对可读性、可移植性、运行时的行为、数据的范围,还有故障检测的能力,造成哪些影响。还要去检查一下,它是不是会同时触发别的MISRA规则,不能只对着工具当前报告的那一条告警,去进行孤立的判断。
如果说,这个风险没有办法通过分析来限定住,那它就不太适合被批准为偏离,而是应该退回到代码或者设计的层面,重新去处理。
3、补充验证和审核证据
可以在【验证证据】这一块,把代码评审的记录、静态分析的报告、单元测试、边界测试,还有目标码的检查结果,都给关联起来。
验证的内容,要能够跟前面识别出来的那些风险对应上。比方说,担心编译器的优化会把防御性的代码给删掉,那就应该去检查生成出来的目标码,而不是只提供一份普通的功能测试结果。MISRA公开的偏离许可当中,有一些场景也会明确地要求,去检查二进制的代码,看它是不是还保留着预期的那套逻辑。
三、MISRA偏离记录怎么纳入项目管理
偏离不是开发人员自己确认一下,就可以永久有效的备注,而是应该把它纳入到配置、变更,还有技术审批的流程里面去。项目更换了编译器、代码的版本,或者使用的条件发生了变化以后,原来的那些结论,可能就已经不再成立了。
1、区分偏离许可和偏离记录
偏离许可,描述的是一种可以被接受的通用使用场景,以及它的约束条件;而偏离记录呢,则是说明这个场景,是怎么被应用到当前的项目里面来的。引用已经有的许可,可以减少重复的论证,但是它不能替代项目当中的位置识别、风险的确认,还有批准的记录。
2、设置明确审批责任
偏离应当由指定的技术负责人来审核,在必要的时候,还需要经过功能安全、软件质量,或者是项目的负责人来批准。强制类的规则,是不能够通过偏离来放宽的;必需类的规则,也只有在具备了正式的偏离依据时,才能够保留违背。
3、在变更后重新确认
当代码的位置、编译的选项、数据的范围,或者是调用的环境发生了变化的时候,就应当重新去检查偏离的条件。原来的记录,只适用于那些已经被评估过的范围,不能因为规则的编号还是一样的,就自动地把它复制到新的代码和新的项目里面去。
总结
MISRA偏离记录怎么编写MISRA偏离记录缺少依据怎么补充,关键在于把规则、位置、必要性、风险、限制措施和验证证据连成一条完整的论证链条。依据不足时,应当补充替代方案比较、影响分析和针对性验证,而不是只增加解释性文字。偏离只有经过技术审批,并在变更后持续复核,才能成为合规过程中的受控例外。