OpenHarmony 蓝区覆盖率搭建指导

这篇具有很好参考价值的文章主要介绍了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文件文章来源地址https://www.toymoban.com/news/detail-828261.html

到了这里,关于OpenHarmony 蓝区覆盖率搭建指导的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++ 代码覆盖率分析工具

    参考:https://hxysayhi.com/posts/7af8893f/ 本文对C++相关的代码覆盖率分析工具进行调研,作出简要的总结 内容提要 Squish Coco (收费) OpenCppConverage (开源) Squish Coco 简介 quish Coco是Tcl,QML,C#和C / C ++程序(包括SystemC程序)的完整代码覆盖工具链。它运行在macOS,Linux™和Microsoft®Wind

    2024年02月04日
    浏览(44)
  • 如何计算单元测试的覆盖率

    单元测试的覆盖率有:语句覆盖率(即行覆盖率)、分支覆盖率、条件覆盖率、分支条件覆盖率、路径覆盖率等。 语句覆盖率 所谓语句就是那些非分支、非判断的语句。 计算公式:程序执行到的语句总数 / 全部语句的总数 分支覆盖率 有判定语句的地方都会出现2个分支。

    2024年01月21日
    浏览(48)
  • java 单元测试覆盖率调研

    根据网上的资料搜索发现,现在常用的 java 单元测试覆盖率工具主要有: Emma Cobertura Jacoco Clover(商用) 工具 Jacoco Emma Cobertura 原理 使用 ASM 修改字节码 修改 jar 文件,class 文件字节码文件 基于 jcoverage,基于 asm 框架对 class 文件插桩 覆盖粒度 行,类,方法,指令,分支 行,类

    2024年02月12日
    浏览(41)
  • Google代码覆盖率最佳实践

    软件质量保障: 所寫即所思|一个阿里质量人对测试的所感所悟。 谷歌一直倡导的领域之一是使用代码覆盖率数据评估风险并识别测试中的真空。然而,代码覆盖率的价值一直是个争议的话题。每次聊到代码覆盖率时,似乎都会引发无尽的争论。由于大家固守自己阵营,所以

    2024年01月16日
    浏览(54)
  • Idea去掉显示的测试覆盖率

    一.启东时 误点击了  快捷键调出 【Ctrl 】+【Alt】+【F6】  

    2024年02月06日
    浏览(41)
  • Python库-coverage测试覆盖率

    Coverage.py 是用于测量Python程序代码覆盖率的工具。它 监视程序,注意代码的哪些部分已执行,然后 分析源以识别可以执行但未执行的代码。 覆盖率测量通常用于衡量测试的有效性。它 可以显示测试正在执行代码的哪些部分,以及哪些部分是 不。 用于运行测试套件并收集数

    2024年02月09日
    浏览(42)
  • Python:代码覆盖率工具coverage

    简介 :覆盖率测量通常用于衡量测试的有效性。它可以显示您的代码的哪些部分正在被测试执行,哪些不是。coverage是一个测量 Python 程序代码覆盖率的工具。它监视您的程序,注意代码的哪些部分已被执行,然后分析源代码以识别可能已执行但未执行的代码。 安装: 官方文

    2024年02月09日
    浏览(35)
  • arcgis建筑密度容积率覆盖率

    大多数研究会把覆盖率当作建筑密度。 用覆盖率更恰当一些。 建筑覆盖率: 建筑物占据面积/街区面积 排序检查数据,最大值0.75,最小值0. 建筑覆盖率,建筑密度的范围都应该在0-1之内 ,不是这个范围的检查计算过程或者数据。  【容积率的高低,对居住有什么影响?】

    2024年02月17日
    浏览(42)
  • 测试覆盖率 之 Cobertura的使用

    什么是代码覆盖率? 代码覆盖率是对整个测试过程中被执行的代码的衡量,它能测量源代码中的哪些语句在测试中被执行,哪些语句尚未被执行。 为什么要测量代码覆盖率? 众所周知,测试可以提高软件版本的质量和可预测性。但是,你知道你的单元测试甚至是你的功能测

    2024年01月19日
    浏览(40)
  • Python代码覆盖率分析工具Coverage

    目录 简介 安装 命令行中使用 调用API使用 Coverage是一个Python代码覆盖率分析工具,它可以用于衡量Python测试代码的质量。通过给代码执行带来的覆盖率数据,Coverage可以帮助开发人员找出被回归测试代码中的漏洞,并且指明哪些代码没有被测试到。 Coverage可以让你知道:哪些

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包