蓝区覆盖率搭建指导
-
下载所需环境
安装所需第三方库
sudo apt install lcov; sudo apt install dos2unix; pip install lxml; pip install selectolax; pip install CppHeaderParser;
配置lcov分支覆盖选项
sudo vim /etc/lcovrc;
修改配置文件中的两项使其支持分支覆盖统计
lcov_branch_coverage = 1 // 去掉注释,值改为1 genhtml_branch_coverage = 1 // 去掉注释,值改为1
-
编译覆盖率版本
-
寻找所包含源代码.c最终生成动态库、静态库、可执行文件的gn文件,可以在**.gn或者.gni一路搜索.c文件,直到找到生成动态库、静态库或可执行文件的那一层,为其添加以下内容,若原来存在cflags和ldflags**这两个编译变量在其基础上进行添加即可
cflags = [ "--coverage" ] # c++为cflags_cc = [ "--coverage" ] ldflags = [ "--coverage" ]
编译修改gn后的镜像,然后按正常流程进行烧录
./build.sh --product-name rk3568 --ccache --no-sdk-prebuilt
-
编译测试用例时,加上**–gn-args use_clang_coverage=true**参数即可实现上述效果
./build.sh --product-name rk3568 --build-target 测试套名 --gn-args use_clang_coverage=true --ccache --no-sdk-prebuilt
-
检查是否生成gcno文件,在编译目录生成的obj目录下,obj对应目录下有生成的.o和对应的.gcno文件
ls -ltr out/rk3568/obj/想要统计源文件.c的目录/生成目标动态库名称
-
-
运行测试用例
-
测试框架搭建
下载代码后在源代码test/testfwk目录下就是测试框架的内容,为保证更新代码后测试框架无需再次配置,可以将testfwk文件夹拷贝到代码目录外,进行修改对应的配置文件
# 在代码主目录下执行 cp -r test/testfwk ~;
配置测试框架的配置文件,在testfwk/developer_test/config目录下的user_config.xml修改以下内容
# <testcase>true</testcase> 修改为 <testcase>false</testcase> # 该方法需要有smbd映射的磁盘才可以,否则需将测试用例和测试框架复制到windows环境中 # 配置测试用例的目录,注:将该目录配置至tests层即可,框架自动检测unittest等目录 <test_cases> <dir>windows映射磁盘的目录</dir> # 例: <dir>Z:\code\out\rk3568\tests</dir> </test_cases> # 配置覆盖文件生成的路径 <coverage> <outpath>Z:\testfwk\coverage_out</outpath> </coverage>
-
测试用例在框架中执行,在windows映射的磁盘中找到刚配置的测试框架,运行start.bat脚本启动测试框架,选择1.rk3568或者4.rk3568,然后使用以下命令进行运行测试用例
run -t UT -ts 测试套名 -cov coverage
-
-
使用脚本进行生成html统计文档
-
下载脚本 本地代码和接口覆盖率: 用于本地代码和接口覆盖率的python脚本 (gitee.com)
将其下载至本地,并解压
-
在windows下将解压后的localCoverage,拷贝到映射虚拟机的磁盘的代码主目录/test下,与testfwk同级
-
配置两个配置文件
-
配置test/localCoverage/codeCoverage/codeCoverage_gcov_lcov.py
# 代码根目录 CODEPATH = "/home/cjj/open" # 修改为自己的代码主目录
-
配置test/localCoverage/codeCoverage/llvm-gcov.sh
# exec /home/cjj/open/prebuilts/clang/ohos/linux-x86_64/llvm/bin/llvm-cov gcov "$@" 修改为 exec 自己的代码主目录/prebuilts/clang/ohos/linux-x86_64/llvm/bin/llvm-cov gcov "$@"
-
-
保险起见,执行转换命令
dos2unix codeCoverage_gcov_lcov.py llvm-gcov.sh;
-
使用hdc file recv将开发板中生成的文件拷贝到脚本的test/localCoverage/codeCoverage/results/coverage/data/cxx目录下,在windows的cmd中使用hdc工具进行操作
hdc file recv /data/test/用户名/代码目录/out/rk3568/obj windows下映射的路径代码主目录\test\localCoverage\codeCoverage\results\coverage\data\cxx\测试套名\obj # 例: hdc file recv /data/test/linux/code/out/rk3568/obj Z:\code\test\localCoverage\codeCoverage\results\coverage\data\cxx\LNNConnectionFsmMockTest\obj # 第一次执行带obj,若已经存在目录即不可带obj # 例: hdc file recv /data/test/linux/code/out/rk3568/obj Z:\code\test\localCoverage\codeCoverage\results\coverage\data\cxx\LNNConnectionFsmMockTest # 目录存在不带\obj
-
在虚拟机中运行python脚本生成报告,进入到覆盖率脚本目录代码主目录/test/localCoverage/codeCoverage文章来源:https://www.toymoban.com/news/detail-828261.html
python codeCoverage_gcov_lcov.py
-
查看报告,报告路径在test/localCoverage/codeCoverage/results/coverage/reports/cxx/html下,在windows环境中查看html文件文章来源地址https://www.toymoban.com/news/detail-828261.html
-
到了这里,关于OpenHarmony 蓝区覆盖率搭建指导的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!