bazel学习及覆盖率
目錄
1.bazel編譯需要的條件:
2.bazel build //要編譯文件的目錄
3.bazel介紹
4.手動編譯運行Envoy · Henry’s Studio
5.使用bazel構(gòu)建一個C++項目:
6.[bazel]-如何緩存
額外知識:
7.代碼覆蓋率--gcov/lcov/gcovr
8.lcov
9.bazel build之后如何執(zhí)行目標文件?
10.bazel命令:
11.編譯過程中的產(chǎn)物介紹:
12.lcov用法
13.Bazel學習研究
14.Bazel 構(gòu)建 Golang 項目
15.bazel - 減少bazel內(nèi)存使用量
16.bazel參數(shù)手冊:
17.使用Bazel生成覆蓋率報告
18.Linux開發(fā)環(huán)境學習--bazel+gtest在c++項目中的使用
19.bazel各個文件的介紹:
20.GCOV&LCOV&GCOVR入門
21.gcov過程:(包含插樁)
22.gcc參數(shù)說明:
23.gcovr官網(wǎng):
1.bazel編譯需要的條件:
BUILD文件;(指定要編譯的文件)
WORKSPACE文件;(可以是空文件)
2.bazel build //要編譯文件的目錄
執(zhí)行通過后,會生成bazel-bin文件;即,bazel會把編譯好的東西放到bazel-bin中;
3.bazel介紹
bazel是構(gòu)建工具;
gcc 編譯器是:它只能編譯。但是構(gòu)建工具通常會調(diào)用編譯器并為您進行一些管理。
4.手動編譯運行Envoy · Henry’s Studio
https://www.dazhuanlan.com/2019/12/25/5e02670211467/?__cf_chl_jschl_tk__=8e5c643860f87b597555ee1ecd9d15e3ceda37f0-1600847786-0-AR8rvur6eBrnWNC0T0lMco510nZORoKgn8Vto7aw91nzHXC_4uwMmyyYY-5SSppQETC3biE8L2q78TQs7vVCmbH16dCnQvorQ4YNWA4AeCpsU6dJu4N_WTw1G23jTb9YO17e9pHH35sCzijIF_uuZzqst8sRWUUQtaVEsuHid5fYGfjLdU6Gf7vq1q5t5PJ9NV-3MndzDUuqpkZ9rrc1DHysRIM538LV8Jp_0InOfvMpPUnIrHmR7jx0cVXl3JfNaPGHdSgck4VfeG2urMNsKcULIUqJ3_l4Q_yAtmBKyKLFsBvY1vCqr0Df0q8toSnN9Q
依賴什么東西:https://bluesmilery.github.io/blogs/9ef0e127/
5.使用bazel構(gòu)建一個C++項目:
https://www.jianshu.com/p/72b228223804
6.[bazel]-如何緩存
參數(shù)位置很重要,一般放到命令build或test后面;
https://www.jianshu.com/p/3fb023f0752d
磁盤式緩存:https://www.jianshu.com/p/3804988c5606
Bazel入門(4. Remote Cache遠程緩存):https://zhuanlan.zhihu.com/p/265542636
額外知識:
sed命令:
文件鏈接到某目錄下:ln -s /home/test/a/* /home/test/package
7.代碼覆蓋率--gcov/lcov/gcovr
ccover和gcov并列;
gcovr和lcov并列:可生成覆蓋率數(shù)據(jù)文件和單測覆蓋率可視化報告;
https://cloud.tencent.com/developer/article/1470886
https://my.oschina.net/alphajay/blog/33725
?gcov lcov 覆蓋c/c++項目入門:https://www.cnblogs.com/turtle-fly/archive/2013/01/09/2851474.html
gcov工具的了解:(gcc coverage)是一個測試代碼覆蓋率工具,可以統(tǒng)計每一行代碼的執(zhí)行次數(shù)以及耗時。
- https://blog.csdn.net/yanxiangyfg/article/details/80989680
- https://github.com/yanxiangyfg/gcov
lcov是gcov的圖形化的前段工具,這里我們可以將覆蓋率信息圖形化,生成具體的報告文檔
lcov會生成.c.gcov和.info文件
gcc和gcov的關(guān)系是什么?
8.lcov
lcov的版本:1.15
gcc的版本:8.2
http://ltp.sourceforge.net/coverage/lcov.php
perl 5.16.2升級:5.20.1
centos6.3,內(nèi)核:3.10.0_3-0-0-28
下載perl-5.20.1.tar.gz可以安裝成功;http://www.cpan.org/authors/id/S/SH/SHAY/perl-5.20.1.readme
perl-5.26.1.tar.gz make的時候會失敗;報:
opmini.o: In function `Perl_ck_rvconst':
opmini.c:(.text+0x5baa): undefined reference to `_Static_assert'
opmini.o: In function `Perl_rpeep':
opmini.c:(.text+0xe135): undefined reference to `_Static_assert'
toke.o: In function `Perl_lex_start':
toke.c:(.text+0x8c45): undefined reference to `_Static_assert'
pp_hot.o: In function `Perl_pp_padrange':
pp_hot.c:(.text+0x4c59): undefined reference to `_Static_assert'
sv.o: In function `Perl_newRV_noinc':
sv.c:(.text+0x1889): undefined reference to `_Static_assert'
sv.o:sv.c:(.text+0x51b1): more undefined references to `_Static_assert' follow
collect2: ld returned 1 exit status
make: *** [makefile:363: lib/buildcustomize.pl] Error 1
You have mail in /var/spool/mail/root
9.bazel build之后如何執(zhí)行目標文件?
https://www.cnblogs.com/black-mamba/p/9834605.html
編譯產(chǎn)出gcno文件,執(zhí)行目標文件之后,才能生成gcda文件;
10.bazel命令:
http://zhulao.gitee.io/blog/2019/04/05/%E7%BC%96%E8%AF%91%E6%9E%84%E5%BB%BA%E5%B7%A5%E5%85%B7-bazel/index.html
11.編譯過程中的產(chǎn)物介紹:
https://tech.youzan.com/ios-code-coverage/
某源文件的編譯產(chǎn)物.gcno文件和.o文件,產(chǎn)生在同一個目錄下,且.gcno和.gcda文件可重命名但是必須同名;
12.lcov用法
https://www.cnblogs.com/cjyp/p/9993667.html
13.Bazel學習研究
https://bbs.huaweicloud.com/blogs/198124
14.Bazel 構(gòu)建 Golang 項目
https://www.qtmuniao.com/2019/12/07/bazel-build-golang/
15.bazel - 減少bazel內(nèi)存使用量
https://www.coder.work/article/6227571
16.bazel參數(shù)手冊:
https://docs.bazel.build/versions/main/user-manual.html
17.使用Bazel生成覆蓋率報告
https://qa.1r1g.com/sf/ask/3251305291/
18.Linux開發(fā)環(huán)境學習--bazel+gtest在c++項目中的使用
https://blog.csdn.net/likewind1993/article/details/104891958
19.bazel各個文件的介紹:
https://blog.csdn.net/ayqy42602/article/details/108378427
20.GCOV&LCOV&GCOVR入門
https://www.cnblogs.com/xkxf/p/10607500.html
21.gcov過程:(包含插樁)
https://blog.csdn.net/shift_wwx/article/details/102820300
22.gcc參數(shù)說明:
https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html#Instrumentation-Options
23.gcovr官網(wǎng):
https://gcovr.com/en/stable/
24.go語言模塊, e2e測試覆蓋率:
https://www.elastic.co/cn/blog/code-coverage-for-your-golang-system-tests
25.go 集成覆蓋率收集利器:
https://testerhome.com/topics/26129
編譯原理之基本塊和流圖:https://blog.csdn.net/l919898756/article/details/103266143
go的測試覆蓋率:https://brantou.github.io/2017/05/24/go-cover-story/
26.什么是代碼覆蓋率:(關(guān)于gcov和gcovr)
https://zhuanlan.zhihu.com/p/146432580
27.bazel query:
https://docs.bazel.build/versions/main/query-how-to.html
使用 Bazel 的查詢語言來跟蹤代碼中的依賴項;
28.源代碼文件變更+補充其上單測(變更)+新加單測文件,其中提交了4個tag,報告顯示增量分支為50%,增量行為0%,沒覆蓋到:
問題定位:
看增量報告是否有覆蓋到,然后看全量報告是否有覆蓋率到;
看看是否是緩存的問題;本地用緩存(hash文件和覆蓋率文件)先跑push前的代碼覆蓋率,將gcno和gcda放置同一目錄下;然后接著用緩存跑push后的代碼覆蓋率,對比新生成的gcno和gcda是否符合預期;符合預期,按理是緩存沒問題的;
............現(xiàn)在不知什么導致的增量行覆蓋沒更新.....
29.查看bazel的命令:
bazel help
bazel help test
30.代碼覆蓋率工具BullseyeCoverage研究
https://www.geek-share.com/detail/2492428224.html
https://www.bullseye.com/measurementTechnique.html
31.--coverage 和-lgcov和-fprofile-arcs區(qū)別:
https://cn.athabasca-foto.com/226668-gcov-what-is-the-difference-CXJVHT
--coverage?只是兩個開關(guān)的縮寫?-ftest-coverage -fprofile-arcs
https://www.osadl.org/Dumping-gcov-data-at-runtime-simple-ex.online-coverage-analysis.0.html
32.C/C++代碼覆蓋率工具gcov、lcov
https://www.huaweicloud.com/articles/51dc445414ba43c7f76e58bbe6d1d120.html
總結(jié)
以上是生活随笔為你收集整理的bazel学习及覆盖率的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 整体二分例题
- 下一篇: pinctrl和gpio子系统