2.静态分析执行
为了方便后续将鸿蒙的静态分析过程部署到持续集成平台上,本文以命令行的方式进行静态分析操作的演示。具体步骤如下:
-
创建QAC工程,命令如下:
qacli admin --qaf-project-config --qaf-project . --cct "/home/zhou/.config/Perforce/Helix-QAC-2021.1/config/cct/GNU_GCC-riscv32-unknown-elf-gcc_7.3.0-riscv32-unknown-elf-C-c99.cct" --acf "/home/zhou/.config/Perforce/Helix-QAC-2021.1/config/acf/HMOS.acf" --rcf "/home/zhou/.config/Perforce/Helix-QAC-2021.1/config/rcf/HMOS.rcf"
为了更全面地了解鸿蒙系统的代码质量,本文在QAC工程的分析配置文件HMOS.acf中添加了MISRA C 2012合规模块、CERT C合规模块及CWE C合规模块。
-
MISRA C 2012:为开发安全关键系统提供编码标准,广泛应用于汽车软件开发。
-
CERT :信息安全编码标准,能确保您的软件免受潜在的软件安全漏洞的侵害。
- CWE C:常见弱点枚举(CWE)列表标识了软件和硬件中的软件安全弱点。
-
过滤鸿蒙中包含的第三方源码,命令如下:
qacli pprops -P . --sync-setting FILE_FILTER --set "/home/zhou/Downloads/openHarmony/third_party"
通过该命令,我们可以将鸿蒙工程中包含的第三方源码从QAC工程中过滤出去,这样我们可以更好地通过QAC的分析结果衡量鸿蒙源码的代码质量。
-
将wifiiot_hispark_pegasus工程源码加载到QAC工程中,具体命令如下:
qacli sync -P . -t MONITOR "cd /home/zhou/Downloads/openHarmony&&hb clean&&hb build"
该命令是通过监测wifiiot_hispark_pegasus工程的编译过程,自动将编译过程中调用的源文件和头文件添加到QAC工程中。
-
执行QAC分析,具体命令如下:
qacli analyze -P . -cf
-
生成合规报告:
qacli report -P . -t RCR
-
将分析结果上传到QAC的网页端,方便查看,命令如下:
qacli upload -P . --qav-upload --upload-project HMOS --snapshot-name v1.0 --upload-source ALL -U https://192.168.9.126:8081/ --username admin --password admin
静态分析结果分析
模块wifiiot_hispark_pegasus的总体合规情况如下:
QAC共计报出107618条诊断消息,共计违反规则290264次,违反的规则数目为302条(包含MISRA C、CERT C和CWE C),符合的规则有216条,由于模块的文件合规率高达94.19%,但是工程合规率却只有41.70%,所以可以看出违反规则的情况集中在少部分源文件中。