博客
希望我们能与您分享和探讨成长中的点点滴滴
使用Helix QAC对OpenHarmony代码做静态分析
分享到
Helix QAC是一款权威的C/C++代码合规性静态分析工具,适用于对代码的规范性和可靠性有较高要求的软件系统。针对任何C/C++代码都可以使用Helix QAC来做静态分析,找出代码中不符合编码规范的语法问题,提高软件整体编码质量,优化编码开发习惯。本文对面向全场景、全连接、全智能时代的Harmony OS的开源项目OpenHarmony代码进行静态分析。
测试环境介绍
整个测试环境搭建在VMware Workstation虚拟机上,虚拟机分配4核心,4GB内存,安装Ubuntu Server 20.10操作系统,使用最新的Helix QAC 2021.2 for Linux,使用MobaXterm终端软件,SSH连接到虚拟机,图形界面通过SSH转发到MobaXterm自带的X Server,显示出图形化界面。OpenHarmony代码使用的是gitee上最新的master分支代码(截至2021年9月),使用内置示例工程wifi-iot项目,对wifi-iot项目做静态分析。
开发环境的配置
安装好Ubuntu server系统和Helix QAC 2021.2静态测试工具之后,就可以开始开发环境的配置。按照官方文档教程,通过apt安装必要的库和工具,使用官方文档推荐的“通过repo+https”方式下载源代码到虚拟机中。下载完成后,在shell里面输入hb set命令,设置当前的代码的根目录,以及要编译的项目,在这里选择代码中内置的wifiiot_hispark_pegasus项目。
选择完成后,开发相关的环境配置完成,接下来尝试编译源代码,输入hb build命令,就可以开始构建编译源代码了。
这一步的目的是确保源代码能够正确编译,没有任何编译错误,也就代表代码的开发环境配置完成。
测试环境的配置
使用Helix QAC对代码进行静态分析时,必要的前置条件就是确保代码可以完全编译成功,没有任何编译错误,只有这样才能保证静态分析的结果是可信的。在上一步已经验证代码是可以完全正确编译的,接下来就可以打开Helix QAC,创建一个静态分析项目,对代码进行静态分析。输入./qagui,就可以打开Helix QAC的图形化界面。
整个静态分析的过程均可以在图形化界面中完成,同时也提供了命令行的操作方式,便于和CI系统集成,在整个项目开发周期内,持续不断确保高标准代码质量。
创建一个静态分析的项目
到菜单Project->Create New Project,打开测试环境创建向导。
打开之后,根据实际需要设置项目的目录和项目名称。
根据实际使用的编译器,选择编译器对应的CCT,在这里,OpenHarmony中的wifi-iot项目是由riscv32-unknow-elf-gcc编译器编译的,在这里选择riscv32-unknow-elf-gcc编译器对应的CCT。
导入项目代码
项目创建完成,就可以导入代码,对代码做静态分析。在这里可以通过同步的方式,导入代码。
菜单Project->Synchronize,打开同步配置窗口,输入项目代码根目录,再输入编译命令,就可以导入源代码。同步需要对项目做rebuild,所以要事先清除,编译命令输入hb clean && hb build,点击Synchronize,会自动调用编译命令对代码完整编译,同时监控编译过程,把所有编译到的文件都导入到Helix QAC静态分析项目中。
同步完成后,可以看到被添加进Helix QAC静态分析项目的源文件。
静态分析代码以及分析结果
点击分析按钮,就可以对项目中所有的代码进行静态分析,在这里使用MISRA C 2012 规则,对代码的编码规范做检查。分析完成可以看到结果以及分析之后的数量。
针对当前代码版本的OpenHarmony代码,经过Helix QAC的静态分析,使用MISRA C 2012编码规范,总共发现了违反MISRA C 2012 规则的数量是63222,其中违反MISRA C 2012 Mandatory的数量是356,违反MISRA C 2012 Requird数量是39481。违反MISRA C 2012 Advisory的数量是27538。违反Mandatory分类和required分类的代码需要做出更正,违反Advisory分类的代码,可以根据需要做出修正。Helix QAC还可以自动生成报告,这里对于当前的分析结果生成一份代码审查报告(Code Review Report,CRR)。
以下是报告截图(部分)