MISRA合规证据应该留到什么程度MISRA合规审查通常先看哪些材料,许多做嵌入式软件的项目全都绕不开这些事。要把MISRA合规这件事办好,并不是光把静态扫描的工具拽过来跑上一遍就行了,也更不能只把违规的条数清到零就算交了差。真正应该留下来的那些证据,是要能说清楚项目到底用了哪一个版本的规矩,查过了哪些代码段落,中间翻出来了哪些毛病,这些毛病里又有哪些已经被修掉了,哪些是经过偏离那一套审批之后特意保留下来的。在MISRA Compliance:2020这份东西里面,它特别点明了,等项目跑到收尾的时候,是该攒出来一份合规方面的汇总材料,用它去记下项目在最后被声明出来的那个合规程度。
一、MISRA合规证据应该留到什么程度
在证据这一块,材料并不需要没边没际地往上摞,可是那几个要紧的环路得能从头合到尾,换句话讲,不管在什么时候翻出来一条违规,你都得能顺着它找到代码的准确位置、编了号的规则、怎么定的处理结断,还有当时审它的那份记档;反过来也一样,不管拿到哪一份合规的结论,都得能闹清楚它往后追的是哪一版的代码、工具那头是用什么配置跑的、归到哪一次的扫描结果里头。
1、先说明规则适用范围
项目在一开手的时候,就得白纸黑字地写好,自己用的到底是MISRA C还是MISRA C++,跟着的是哪一版的规矩,被圈进检查范围里头的又有哪些源文件、头文件、机器自己咕嘟出来的代码,还有从外边拿过来的第三方代码。要是这个检查的范围一开始就画得含含混混的,那后头哪怕是报告码得再齐整,想拿它去撑住结论的可靠劲儿也是很难的。对于那些最后没被拉进检查范围的代码,同样也得把里头的原因交代明白,再拿出替上去的管法,可不能光往上头撂一句“不适用”就算了。
2、保留工具配置和检查结果
在【静态分析报告】中,要能看到工具版本、规则集配置、扫描对象、代码基线、检查时间和违规结果。
这类材料要紧的地方,倒不是截出来的图有多漂亮,而是改天换个人还能不能把当时的扫描重头复现出来。拿同一套代码来说吧,如果规则集那一套设得不一样,扫出来的结果很可能会整个儿两样;工具的版本号一换,它对规则的兜底程度也会跟着变,所以工具的配置跟代码的版本这两样东西非得绑在一块儿留下不可。
3、保留违规处理记录
扫出来的那一条一条的违规,它到底是个什么光景,得给标得明明白白的:是已经修掉了,还是被确准成了一次误报,要不就是走了偏离给保留下来的,再不然就是暂时没去关掉的。碰上那些有法子动手去改的违规,得能一路顺着找过去,瞧见代码是被怎么扒拉过的,复扫出来的结果又是怎么样的;要是那些实在是动弹不得的违规,那就得把动不得的由头、呆在那里会搅出多大的险处、还有补上去的管束招数一样一样给交代利索。MISRA是答允在讲得过去的景况底下走偏离这条道的,可偏离这件事,它非落到纸面上不可,还得经过认账受权。
二、MISRA合规审查通常先看哪些材料
在MISRA的合规审查里头,一般不大会一上来就薅着代码一行一行地去抠,而是先要瞅瞅项目是不是已经搭起来了一个底层的合规架框,也就是规矩那头是怎么往下推的、工具是怎么设的、扫出来的违规是拿什么路子去办的、最末了的那个结断又是怎么拢起来的。
1、先看规则执行计划
干审查的人,一般都会先去翻翻项目有没有把每一条规矩要怎么查给讲清爽,到底哪些规矩是丢了给工具去扫的,哪些是得要人一双眼去审的,还有哪些规矩搁在这个项目身上是用不着的,这全部都得赶在前头就给划出个道道来。这么一来,后头再看到工具吐出来的那份报告的时候,才好去断它是不是真把那项目自己嘴里说的规矩范围全给罩住了,而不只是挑着跑了其中的一截儿。
2、再看合规汇总材料
可以通过【合规汇总报告】查看规则覆盖情况、违规总数、已修复数量、剩余偏离数量和最终结论。
合规汇总它的用处,就是把那些东一片西一片的检查结果,全给归弄到一堆去,好让审材料的人能很快地估出项目总体的那个光景。在MISRA Compliance:2020牵牵连连的框套里头,经常被提到的那些顶要紧的证据,就包括了执行打算、合规汇总、偏离记档,还有偏离的许可这几样。
3、重点看偏离审批材料
要是一轮看下来,项目里头还挂着没给清零的违规,那审查多半就会顺着往下再翻一翻偏离的那摞材料了。偏离记档里头,顶起码得写明白规则的号头、出问题的代码窝在什么位置、偏开去的究竟是为啥、跟着的风险是咋被扒拉过的、用上了什么替代的把式,还有最后审批出来的那个结断,光丢上去一句“老代码留着的”或者“项目上许了”这一类的话,大半是过不了关的,因为这些话压根就没法去证那藏在底下的险处真被好生掂量过。
三、MISRA合规材料怎么避免形式化
好些个项目,其实倒不是手里头没攥着材料,只是这些材料凑到一块儿,横竖就是接不上茬,比方讲,扫描出来的报告拿去对的是早八辈子的旧代码,偏离的那张单子上头压根儿就见不着半点儿审批的印子,合规汇总里摆着的数目跟工具那边吐出来的报告死活就是碰不拢,这一类的事闹出来,是会直杠杠地去削掉合规结断的可信份儿的。
1、保持版本一致
代码的基线、静态分析堆出来的那份报告、偏离的那份记档、缺欠的单子,还有合规汇总这老几位,全都得对准到同一个版本的模样上去才作数,只要代码但凡被拨拉过一下,又拨拉到了跟MISRA违规搭界的地方,那就得掉过头去重新扫上一遍,要不就得把可能被连带到的面给说个透亮,千万不能拿一份陈年的旧报告去给新版本里的那堆代码当撑腰。
2、把问题处理闭环
每次翻出来一个违规,它后头跟着的那一串处理的路子,都得能叫人看得清清楚楚。被修掉的那些,得有复扫过后落定的结果;走了偏离的那些,得把审批的字据给压在那儿;被认成误报的那些呢,也得有拿来确准的凭据才行。这么一来,在审查的时候,人家才看得出来,你们这个项目可不光是杵在那里发现了多少问题,而是真刀真枪地把这些问题一样一样都给处置到底了。
3、补充人工评审证据
有那么一些MISRA的规矩,它是不能全靠着工具去把门儿守瓷实的,还要靠人过一遍代码评审,或者是用上一份检查单子去填填缝。碰上这些个规矩的时候,大可以把当时评审留下来的那套记档,连同人给出来的结断一块儿悄悄地留下来,也好躲开掉那种“工具那头都闷着没吭声,所以约摸着就算是合规了吧”的景况。
总结
说到底,到底MISRA合规的那些个证据该往哪个份儿上留,还有照着规矩做的审查又多半会先翻哪几样材料,这里头打紧的地方,是得把规矩管着的面儿、工具怎么设的、检查过后的报告、违规是咋打发的、偏离那头的审批,还有最末了那份合规汇总,拢到一块儿串成一条能前后拉通的证据链。审查的那套章法呢,时常是先扒拉一下规矩的执行打算、合规那摞汇总、静态分析跑出来的结果,再有就是偏离的记档,然后才顺着冒出来的那些个疑问去追代码,去把缺欠的环给闭上。攒下来的那些材料,倒不一定就是摞得越高越好,但有一条死杠杠,就是得能往回追、能复现、还能把里头的事给掰扯清白。