汽车软件项目把静态分析工具接入以后,检查规则就不能再靠开发人员临时去勾选了。要搞清楚C/C++test里面的AUTOSAR检查到底该怎么配置,以及AUTOSAR的规则集又要怎么去切换,关键是要先分清楚,这一次项目要检查的到底是AUTOSAR C++14,还是Classic AUTOSAR项目里头的C语言代码。Parasoft的C/C++test针对AUTOSAR C++14提供了一套内置的检查器和合规报告功能,但有一些条目光靠静态分析是跑不完的,还得靠人工去评审,并且把偏差记录给留下来。
一、C/C++test AUTOSAR检查怎么配置
给AUTOSAR检查单独建一套测试配置是比较推荐的做法,别直接去改系统自带的那些配置,因为内置配置本身是没办法直接修改的,应该先把它复制一份出来,然后在复制出来的这版上面再去动手调整。
1、打开测试配置的窗口,在开发环境里点【Parasoft】→【Test Configurations】进到配置窗口里面,接着在内置的分类底下,找一个跟你的项目需求比较接近的静态分析配置,用右键去点一下【Duplicate】,把它复制到用户自定义的分类下面去。
2、把AUTOSAR的规则给启用起来,先选中刚刚复制好的那份配置,再进到【Static】→【Rules Tree】里面去查看规则的分类,然后把AUTOSAR C++14相关的那些规则给勾上。保存以前要核对一下规则的条数、严重级别,还有项目的适用范围,如果项目主要是用C语言写的,就不要直接把C++14的规则往上面套,得根据项目的质量计划去选一套对应的C语言规范配置才行。
3、把扫描的范围给限定好,那些自动生成的代码、第三方的库,还有工具生成出来的目录,都可以按项目的要求给排除出去。选好工程以后,顺着【Parasoft】→【Properties】→【Scope Settings】进去,用【Add Resources】或者【Add Pattern】把要排除的项目设好,文档里也写了,这些排除规则是支持用相对路径和通配符的。
4、实际跑一遍看看结果,把配置保存好,再选中工程,点一下【Parasoft】→【Test Using】,选上刚才建的那套AUTOSAR配置。等到执行完,在【Quality Tasks】视图里面就能看到违反的规则、代码所在的位置,还有它的严重级别了。
二、C/C++test AUTOSAR规则集怎么切换
规则集的切换,不要总是守在同一套配置里面反复地开关规则,比较把稳的办法是按照不同的用途提前准备好几套配置,比如可以做全量的AUTOSAR检查、只查新增代码、发布之前的扫描,还有本地的快速检查这几种。
1、先建好几套不同的配置,在【Test Configurations】窗口里面把基础配置复制出几份来,再分别到Rules Tree里面去调每一套要启用的规则和扫描的范围,给它们起名字的时候要把用途写清楚,像“AUTOSAR全量扫描”“AUTOSAR提交前扫描”这一类的。
2、跑的时候直接选就行,在本地做扫描的时候,顺着【Parasoft】→【Test Using】去挑你这次想用的那套目标配置就可以了。那些常用的配置,还可以右键点一下【Set As Favorite】,这样它就会出现在工具栏和快捷菜单里面。
3、在命令行里也可以指定配置,到了持续集成的环境下,不能再依赖人工手动去选配置了。在命令行执行的时候,可以通过配置的名字来指定要用哪一套规则集,也可以在设置文件里面用cpptest.configuration来指定默认的测试配置,官方文档里面也说明了,Built-in、User-defined和DTP托管的配置都是支持的。
4、团队里面要做到统一下发,如果是多人一起开发的项目,建议把配置放到DTP上面去统一维护。等连上了DTP,开发人员就可以在DTP分类里面直接使用团队已经定好的配置,不过存在DTP里的那些配置只能从DTP那一端去改,不能在本地自己随便编辑。
三、C/C++test AUTOSAR规则切换后怎么核对
规则切换完之后,得确认一下扫描结果的变化确实是来自规则集本身,而不是因为代码目录换了、编译环境变了,或者是过滤条件不一样了。
1、去核对一下配置的名称,看看这一次执行记录里面,实际跑起来的到底是不是你打算用的那套目标配置,特别是在流水线里面,还要检查一下命令的参数和默认配置之间有没有互相覆盖的情况。
2、拿切换前后的规则数量来对比一下,把切换前和切换后的这两份规则列表都导出来,然后去比一比哪些规则是新加进来的,哪些被关掉了,还有哪些规则的严重级别被调整过了。要是发现违规的数量一下子变得特别多或者特别少,那就应该先去查一下规则集和Scope那边的设置。
3、把偏差记录给保留好,做AUTOSAR合规并不只是把告警的条数清到零,对于那些实在没办法修改的条目,要把规则编号、代码的范围、不修改的理由、风险的影响,还有审批的结果这些东西都给记录下来,Parasoft也强调过,AUTOSAR里头的偏差是需要形成正式的记录的。
总结
等到规则集的配置稳定下来了以后,AUTOSAR的检查才比较适合放进持续集成的流水线里面去。C/C++test里面的AUTOSAR检查要怎么去配置,以及AUTOSAR的规则集又要怎么去切换,实际的做法就是先把内置配置复制一份,再到Rules Tree里面把对应的规则启用起来,然后按照本地开发、全量扫描和发布前这些不同的场景,分别建好不同的配置。要是碰到多人协作的项目,就可以通过DTP来进行统一的配置下发,这样就能避免不同的电脑上跑出不同口径的扫描结果。