OpenHarmony 蓝区覆盖率搭建指导

蓝区覆盖率搭建指导

  1. 下载所需环境

    安装所需第三方库

    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
    
  2. 编译覆盖率版本
    • 寻找所包含源代码.c最终生成动态库、静态库、可执行文件的gn文件,可以在**.gn或者.gni一路搜索.c文件,直到找到生成动态库、静态库或可执行文件的那一层,为其添加以下内容,若原来存在cflagsldflags**这两个编译变量在其基础上进行添加即可

      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的目录/生成目标动态库名称
      
  3. 运行测试用例
    • 测试框架搭建

      下载代码后在源代码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
      
  4. 使用脚本进行生成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

      python codeCoverage_gcov_lcov.py
      
    • 查看报告,报告路径在test/localCoverage/codeCoverage/results/coverage/reports/cxx/html下,在windows环境中查看html文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值