国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

這篇具有很好參考價(jià)值的文章主要介紹了OpenHarmony本地代碼和接口覆蓋率可視化操作梳理。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

一. 修改gn文件,編譯執(zhí)行測(cè)試套

1.?修改業(yè)務(wù)側(cè)BUILD.gn文件,增加編譯選項(xiàng)

2.設(shè)置lcov統(tǒng)計(jì)“branch coverage”的方法

3. 編譯測(cè)試版本+目標(biāo)用例

4. 在windows下搭建執(zhí)行環(huán)境,執(zhí)行測(cè)試用例

5. 查看測(cè)試生成gcda文件

二. 使用本地代碼覆蓋率腳本

7. 修改python腳本中的路徑

8. 執(zhí)行腳本

?三 . 本地接口覆蓋率腳本使用

9. 檢查接口覆蓋率的必要文件路徑

10. 修改localCoverage/interfaceCoverage/get_innerkits_json.py到對(duì)應(yīng)路徑:

11. 執(zhí)行python get_innerkits_json.py

12.?修改localcoverage/interfaceCoverage/interfaceCoverage_gcov_lcov.py

13. 執(zhí)行python interfaceCoverage_gcov_lcov.py

14.查看報(bào)告

?四. 使用命令行生成本地代碼覆蓋率(步驟二也可手動(dòng)操作,已完成步驟二可忽略此步)

1. 將生成的.gcda合并到.o/.gcno文件夾中

2. 生成info文件

3. 去除非本模塊信息

?4. 生成可視化數(shù)據(jù)


一. 修改gn文件,編譯執(zhí)行測(cè)試套

1.?修改業(yè)務(wù)側(cè)BUILD.gn文件,增加編譯選項(xiàng)

涉及到自己子系統(tǒng)的BUILD.gn中cflags或cfalgs_cc及idflags都需要加--coverage字段

C:OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

C++:

cflags_cc = [

“--coverage”,

]

2.設(shè)置lcov統(tǒng)計(jì)“branch coverage”的方法(若不需要分支覆蓋率,可忽略此步驟)

Lcov(1.10及往后)默認(rèn)是關(guān)閉?分支覆蓋率的。?

若要locv生成分支branch信息、輸出基本塊,需要修改/etc/lcovrc或~/.lcovrc文件,修改如下配置:

vi /etc/lcovrc
# Specify if branch coverage data should be collected andprocessed.

lcov_branch_coverage = 1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? //去掉注釋,值改為1
# Include branch coverage datadisplay (can be disabled by the --no-branch-coverage option of genhtml)

genhtml_branch_coverage = 1 ? ? ? ? ? ? ? ? ? ? ? ? //去掉注釋,值改為1.

3. 編譯測(cè)試版本+目標(biāo)用例

./build.sh --product-name rk3568 --ccache --target-cpu arm64
./build.sh --product-name rk3568 --ccache --target-cpu arm64 --build-target make_test 

tips:?make_test為編譯全部測(cè)試用例,也可編譯指定測(cè)試用例

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

?OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

Tips:如何檢查覆蓋率版本是否編譯成功?

編譯完成后需要在out/產(chǎn)品(rk3568)/obj/目錄下,根據(jù)源碼目錄查找到對(duì)應(yīng)的C/C++文件的gcno,說(shuō)明覆蓋率插樁成功

4. 在windows下搭建執(zhí)行環(huán)境,執(zhí)行測(cè)試用例

Windows環(huán)境搭建可參考官方文檔:

test_developertest: Development self-test framework | 開(kāi)發(fā)者自測(cè)試框架

執(zhí)行測(cè)試用例前可檢查設(shè)備是否在線,start.bat中執(zhí)行l(wèi)ist,若顯示online則設(shè)備在線。若設(shè)備離線,可在config文件夾中的user_config.xml文件中添加port和sn號(hào)。

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

?還需要在user_config.xml文件配置用例路徑(可參考以上搭建執(zhí)行環(huán)境官方文檔)

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

?tips:?<testcase>標(biāo)簽表示是否需要編譯用例;<dir>標(biāo)簽表示測(cè)試用例查找路徑。若不配置,覆蓋率文件會(huì)自動(dòng)生成在設(shè)備側(cè)的對(duì)應(yīng)源碼的編譯路徑下

在windows壞境下啟動(dòng)測(cè)試框架developtest/start.bat

執(zhí)行測(cè)試用例,這里以account子系統(tǒng)中的account_event_provider_test為例

run -t UT -ts account_event_provider_test -cov coverage

tips:?-t [TESTTYPE]: 指定測(cè)試用例類型,有UT,MST,ST,PERF,F(xiàn)UZZ,BENCHMARK等。(必選參數(shù))-tp [TESTPART]: 指定部件,可獨(dú)立使用。-tm [TESTMODULE]: 指定模塊,不可獨(dú)立使用,需結(jié)合-tp指定上級(jí)部件使用。-ts [TESTSUITE]: 指定測(cè)試套,可獨(dú)立使用。-tc [TESTCASE]: 指定測(cè)試用例,不可獨(dú)立使用,需結(jié)合-ts指定上級(jí)測(cè)試套使用。-h : 幫助命令。

執(zhí)行過(guò)程中可在設(shè)備中查看(tips: 此步是為了查看覆蓋率文件是否生成)

hdc_std shell在設(shè)備的data/test/obj查看

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

5. 查看測(cè)試生成gcda文件

執(zhí)行完畢后設(shè)備中的gcda會(huì)pull到test/developertest/reports/coverage中

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

Tips:(1)若在步驟3中生成gcda文件,但是在reports中沒(méi)有生成coverage,檢查coverage outpath是否配置正確

(2)在reports在建立coverage/data/cxx/測(cè)試套名,然后手動(dòng)將對(duì)應(yīng)obj目錄pull到coverage/data/cxx/測(cè)試套名 目錄下即可

  • 二. 使用本地代碼覆蓋率腳本

6. 將localCoverage目錄解壓并挪至編譯機(jī)的test目錄

localCoverage的python腳本已上傳至gitee,鏈接如下:

本地代碼和接口覆蓋率: 用于本地代碼和接口覆蓋率的python腳本

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

?將步驟4中生成的coverage文件夾復(fù)制到localCoverage/codeCoverage/results目錄下

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

解壓完之后執(zhí)行

dos2unix test/localCoverage/codeCoverage/codeCoverage_gcov_lcov.py

7. 修改python腳本中的路徑

打開(kāi)localCoverage/codeCoverage/?codeCoverage_gcov_lcov.py

修改CODEPATH至代碼根目錄

修改OUTPUT路徑,此處產(chǎn)品名為rk3568

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

修改llvm-cov工具的路徑:修改codeCoverage目錄下的llvm-gcov.sh文件為(可通過(guò)在源碼路徑下搜索find . -name “l(fā)lvm-cov”即可)

Llvm-gcov.sh文件格式如果是dos,請(qǐng)改成unix(dos2unix llvm-gcov.sh)

exec?/home/cjj/open/prebuilts/clang/ohos/linux-x86_64/llvm/bin/llvm-cov gcov "$@"

8. 執(zhí)行腳本

在test/localCoverage/codeCoverage目錄下執(zhí)行python codeCoverage_gcov_lcov.py即可

若出現(xiàn)下圖中錯(cuò)誤(若無(wú)錯(cuò)誤可忽略直接查看報(bào)告)

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

?可單獨(dú)運(yùn)行“single_test**”后面的命令:

lcov -c -b /home/cjj/open/out/rk3568 -d  /home/cjj/open/test/localCoverage/codeCoverage/results/coverage/data/cxx/AccountEventProviderTest/obj/base/account --gcov-tool /home/cjj/open/test/localCoverage/codeCoverage/llvm-gcov.sh -o /home/cjj/open/test/localCoverage/codeCoverage/results/coverage/reports/cxx/single_test/AccountEventProviderTest/account_output.info --ignore-errors source,gcov

若運(yùn)行后出現(xiàn)need tool ...llvm-gcov.sh

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

?則可為llvm-gcov.sh賦予執(zhí)行權(quán)限:chmod 777 llvm-gcov.sh

重新執(zhí)行

lcov -c -b /home/cjj/open/out/rk3568 -d  /home/cjj/open/test/localCoverage/codeCoverage/results/coverage/data/cxx/AccountEventProviderTest/obj/base/account --gcov-tool /home/cjj/open/test/localCoverage/codeCoverage/llvm-gcov.sh -o /home/cjj/open/test/localCoverage/codeCoverage/results/coverage/reports/cxx/single_test/AccountEventProviderTest/account_output.info --ignore-errors source,gcov

若出現(xiàn)以下錯(cuò)誤

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

可執(zhí)行dos2unix llvm-gcov.sh,將DOS格式文本文件轉(zhuǎn)換成Unix格式

重新運(yùn)行上述lcov -c -b...腳本直到出現(xiàn)

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

?然后再執(zhí)行

python codeCoverage_gcov_lcov.py

查看報(bào)告:在codeCoverage/results/coverage/reports/cxx/html下生成可視化報(bào)告,打開(kāi)index.html即可查看。

?OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

?OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

?三 . 本地接口覆蓋率腳本使用

9. 檢查接口覆蓋率的必要文件路徑

接口覆蓋率數(shù)據(jù)生成是依賴步驟二中代碼覆蓋率生成的info文件(ohos_codeCoverage.info)

10. 修改localCoverage/interfaceCoverage/get_innerkits_json.py到對(duì)應(yīng)路徑:

可直接修改為絕對(duì)路徑:

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

11. 執(zhí)行python get_innerkits_json.py

?檢查out/rk3568/packages/phone/innerkits/ohos-arm64/kits_modules_info.json文件的存在

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

12.?修改localcoverage/interfaceCoverage/interfaceCoverage_gcov_lcov.py

修改腳本中的line3~9到對(duì)應(yīng)路徑:

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

13. 執(zhí)行python interfaceCoverage_gcov_lcov.py

14.查看報(bào)告

在localCoverage/interfaceCoverage/results/coverage/interface_kits目錄挪至本地,查看報(bào)告

?OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

?四. 使用命令行生成本地代碼覆蓋率(步驟二也可手動(dòng)操作,已完成步驟二可忽略此步)

1. 將生成的.gcda合并到.o/.gcno文件夾中

.o/.gcno文件路徑一般為(可通過(guò)find . -name “*.gcno”查找)

Z:\home\cjj\open\out\rk3568\obj\base\account\os_account\services\accountmgr\src\AccountEventProviderTest

tips:gcda文件是執(zhí)行測(cè)試測(cè)試用例,在設(shè)備上自動(dòng)生成覆蓋率數(shù)據(jù)文件,.o/.gcno文件是linux編譯機(jī)上編譯過(guò)程中生成的。

合并后,gcda,.o/.gcno文件在同一文件夾下

2. 生成info文件

解析gcda依賴特定的gcov版本,可通過(guò)-gcov-tool指定,手動(dòng)創(chuàng)建llvm-gcov.sh文件

在源碼根目錄下創(chuàng)建文件夾local_tools

mkdir local_tools

創(chuàng)建llvm-gcov.sh文件:

cd local_tools/

touch llvm-gcov.sh

使用項(xiàng)目編譯是使用的clang對(duì)應(yīng)的llvm-cov版本,在文件中寫入以下內(nèi)容:

#!/usr/bin/env sh
exec /home/cjj/open/prebuilts/clang/ohos/linux-x86_64/llvm/bin/llvm-cov gcov "$@"

增加可執(zhí)行權(quán)限:

chmod +x llvm-gcov.sh

生成info文件:

cd ~/open/out/rk3568/obj/base/account
lcov -d . -o cov_oa_all.info -c --gcov-tool ~/open/local_tools/llvm-gcov.sh

若直接用此時(shí)生成的info文件生成可視化數(shù)據(jù),則包含了其他模塊的統(tǒng)計(jì)信息

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

3. 去除非本模塊信息

cov_oa_all.info包含了其他模塊的統(tǒng)計(jì)信息,需要去除,使用-remove,根據(jù)實(shí)際情況設(shè)置

例如

lcov -o rm_cov_oa_all.info ?--remove cov_oa_all.info ?"*/third_party/*" "*/v1/*"

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

?4. 生成可視化數(shù)據(jù)

genhtml -o result --ignore-errors source rm_cov_oa_all.info

OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

?OpenHarmony本地代碼和接口覆蓋率可視化操作梳理

?OpenHarmony本地代碼和接口覆蓋率可視化操作梳理文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-425428.html

到了這里,關(guān)于OpenHarmony本地代碼和接口覆蓋率可視化操作梳理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C++ 代碼覆蓋率分析工具

    C++ 代碼覆蓋率分析工具

    參考:https://hxysayhi.com/posts/7af8893f/ 本文對(duì)C++相關(guān)的代碼覆蓋率分析工具進(jìn)行調(diào)研,作出簡(jiǎn)要的總結(jié) 內(nèi)容提要 Squish Coco (收費(fèi)) OpenCppConverage (開(kāi)源) Squish Coco 簡(jiǎn)介 quish Coco是Tcl,QML,C#和C / C ++程序(包括SystemC程序)的完整代碼覆蓋工具鏈。它運(yùn)行在macOS,Linux?和Microsoft?Wind

    2024年02月04日
    瀏覽(41)
  • 單元測(cè)試——測(cè)試代碼功能及代碼覆蓋率

    單元測(cè)試——測(cè)試代碼功能及代碼覆蓋率

    目錄 目錄 前言 一、單元測(cè)試是什么? 二、前置準(zhǔn)備 ?三、測(cè)試代碼 ?四、示例 ?五:?jiǎn)卧獪y(cè)試覆蓋率 單元測(cè)試的寫法不固定,這里以我自己的一種寫法為例,算是很簡(jiǎn)單的一種寫法 ? ????????單元測(cè)試其實(shí)就是寫一些測(cè)試函數(shù),測(cè)試代碼的功能是否正常運(yùn)行,一般如果

    2024年02月07日
    瀏覽(41)
  • Python:代碼覆蓋率工具coverage

    Python:代碼覆蓋率工具coverage

    簡(jiǎn)介 :覆蓋率測(cè)量通常用于衡量測(cè)試的有效性。它可以顯示您的代碼的哪些部分正在被測(cè)試執(zhí)行,哪些不是。coverage是一個(gè)測(cè)量 Python 程序代碼覆蓋率的工具。它監(jiān)視您的程序,注意代碼的哪些部分已被執(zhí)行,然后分析源代碼以識(shí)別可能已執(zhí)行但未執(zhí)行的代碼。 安裝: 官方文

    2024年02月09日
    瀏覽(26)
  • Lombok導(dǎo)致代碼單元測(cè)試覆蓋率崩塌

    Lombok 由于其使用的便利性, 目前流傳非常廣泛。甚至有呼聲希望其能被Java官方引入,成為JDK的一部分。 當(dāng)然凡事都有兩面性,Lombok的引入也是有代價(jià)的。一時(shí)注釋一時(shí)爽,結(jié)果導(dǎo)致代碼在不知不覺(jué)中翻了好幾倍。 例如以下幾個(gè)簡(jiǎn)單的注解,背后是N多個(gè)自動(dòng)生成的方法: @Da

    2024年02月07日
    瀏覽(19)
  • Python代碼覆蓋率分析工具Coverage

    目錄 簡(jiǎn)介 安裝 命令行中使用 調(diào)用API使用 Coverage是一個(gè)Python代碼覆蓋率分析工具,它可以用于衡量Python測(cè)試代碼的質(zhì)量。通過(guò)給代碼執(zhí)行帶來(lái)的覆蓋率數(shù)據(jù),Coverage可以幫助開(kāi)發(fā)人員找出被回歸測(cè)試代碼中的漏洞,并且指明哪些代碼沒(méi)有被測(cè)試到。 Coverage可以讓你知道:哪些

    2024年02月11日
    瀏覽(23)
  • 如何有效保證Java代碼單元測(cè)試覆蓋率

    如何有效保證Java代碼單元測(cè)試覆蓋率

    我們?cè)趯?shí)際項(xiàng)目開(kāi)發(fā)過(guò)程中,不同level的童鞋由于專業(yè)技能的層次不同,導(dǎo)致在參與實(shí)際開(kāi)發(fā)的業(yè)務(wù)代碼中經(jīng)常會(huì)出現(xiàn)各種bug,項(xiàng)目管理中好的pm或許會(huì)給充足的時(shí)間來(lái)讓開(kāi)發(fā)童鞋們定位修復(fù)這些bug,也有各種客觀原因的PM不會(huì)在項(xiàng)目中預(yù)留這些時(shí)間,往往就需要開(kāi)發(fā)自己通過(guò)

    2023年04月17日
    瀏覽(21)
  • 單元測(cè)試必備:Asp.Net Core代碼覆蓋率實(shí)戰(zhàn),打造可靠應(yīng)用 !

    單元測(cè)試必備:Asp.Net Core代碼覆蓋率實(shí)戰(zhàn),打造可靠應(yīng)用 !

    在前幾章我們深度講解了單元測(cè)試和集成測(cè)試的基礎(chǔ)知識(shí),這一章我們來(lái)講解一下 代碼覆蓋率 ,代碼覆蓋率是單元測(cè)試運(yùn)行的 度量值 ,覆蓋率通常以百分比表示,用于衡量代碼被測(cè)試覆蓋的程度,幫助開(kāi)發(fā)人員評(píng)估測(cè)試用例的質(zhì)量和代碼的健壯性。常見(jiàn)的覆蓋率包括語(yǔ)句覆蓋

    2024年04月23日
    瀏覽(23)
  • cmake + gtest安裝使用 C++單元測(cè)試 gcov locv代碼覆蓋率

    cmake + gtest安裝使用 C++單元測(cè)試 gcov locv代碼覆蓋率

    CMakeLists.txt速查簡(jiǎn)單編寫 打開(kāi)–g3 選項(xiàng),去掉-O2以上級(jí)別的代碼優(yōu)化選項(xiàng);否則編譯器會(huì)對(duì)代碼做一些優(yōu)化,例如行合并,從而影響行覆蓋率結(jié)果; 這里我比較懶就沒(méi)有加 加到test目錄下的CMakeLists.txt即可 , 其中代碼編譯完之后會(huì)在test/CMakeFiles/test.dir/ 生成test.cpp.gcno文件, 在運(yùn)

    2024年02月05日
    瀏覽(53)
  • springboot項(xiàng)目使用Junit5 + mockito + jacoco 實(shí)現(xiàn)單元測(cè)試以及代碼覆蓋率檢查

    在創(chuàng)建springboot項(xiàng)目時(shí)會(huì)默認(rèn)添加spring-boot-starter-test依賴,其中已經(jīng)包含了junit、mockito依賴,根據(jù)springboot版本的不同junit和mockito的版本也會(huì)有所不同 先說(shuō)一下各自功能: junit只說(shuō)一點(diǎn),junt4和junit5的注解不同,使用方式略有差異,其他不贅述了,基本用法都懂。 mockito是mock的

    2023年04月23日
    瀏覽(33)
  • 【項(xiàng)目實(shí)戰(zhàn)】使用Maven插件(jacoco-maven-plugin),實(shí)現(xiàn)生成代碼覆蓋率報(bào)告

    jacoco-maven-plugin是一個(gè)Maven插件,用于生成代碼覆蓋率報(bào)告。 它可以幫助您了解您的代碼中哪些部分已經(jīng)被測(cè)試覆蓋,哪些部分需要更多的測(cè)試。 注意,jacoco-maven-plugin 需要 Java 1.5 或更高版本才能運(yùn)行。 要使用jacoco-maven-plugin,需要在Maven項(xiàng)目中添加以下配置:

    2024年02月15日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包