目录
1.bazel编译需要的条件:
2.bazel build //要编译文件的目录
3.bazel介绍
4.手动编译运行Envoy · Henry’s Studio
5.使用bazel构建一个C++项目:
6.[bazel]-如何缓存
额外知识:
7.代码覆盖率–gcov/lcov/gcovr
8.lcov
9.bazel build之后如何执行目标文件?
10.bazel命令:
11.编译过程中的产物介绍:
12.lcov用法
13.Bazel学习研究
14.Bazel 构建 Golang 项目
15.bazel – 减少bazel内存使用量
16.bazel参数手册:
17.使用Bazel生成覆盖率报告
18.Linux开发环境学习–bazel+gtest在c++项目中的使用
19.bazel各个文件的介绍:
20.GCOV&LCOV&GCOVR入门
21.gcov过程:(包含插桩)
22.gcc参数说明:
23.gcovr官网:
1.bazel编译需要的条件:
BUILD文件;(指定要编译的文件)
WORKSPACE文件;(可以是空文件)
2.bazel build //要编译文件的目录
执行通过后,会生成bazel-bin文件;即,bazel会把编译好的东西放到bazel-bin中;
3.bazel介绍
bazel是构建工具;
gcc 编译器是:它只能编译。但是构建工具通常会调用编译器并为您进行一些管理。
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构建一个C++项目:
https://www.jianshu.com/p/72b228223804
6.[bazel]-如何缓存
参数位置很重要,一般放到命令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并列:可生成覆盖率数据文件和单测覆盖率可视化报告;
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)是一个测试代码覆盖率工具,可以统计每一行代码的执行次数以及耗时。
- https://blog.csdn.net/yanxiangyfg/article/details/80989680
- https://github.com/yanxiangyfg/gcov
lcov是gcov的图形化的前段工具,这里我们可以将覆盖率信息图形化,生成具体的报告文档
lcov会生成.c.gcov
和.info
文件
gcc和gcov的关系是什么?
8.lcov
lcov的版本:1.15
gcc的版本:8.2
http://ltp.sourceforge.net/coverage/lcov.php
perl 5.16.2升级:5.20.1
centos6.3,内核: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之后如何执行目标文件?
https://www.cnblogs.com/black-mamba/p/9834605.html
编译产出gcno文件,执行目标文件之后,才能生成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.编译过程中的产物介绍:
https://tech.youzan.com/ios-code-coverage/
某源文件的编译产物.gcno文件和.o文件,产生在同一个目录下,且.gcno和.gcda文件可重命名但是必须同名;
12.lcov用法
https://www.cnblogs.com/cjyp/p/9993667.html
13.Bazel学习研究
https://bbs.huaweicloud.com/blogs/198124
14.Bazel 构建 Golang 项目
https://www.qtmuniao.com/2019/12/07/bazel-build-golang/
15.bazel – 减少bazel内存使用量
https://www.coder.work/article/6227571
16.bazel参数手册:
https://docs.bazel.build/versions/main/user-manual.html
17.使用Bazel生成覆盖率报告
https://qa.1r1g.com/sf/ask/3251305291/
18.Linux开发环境学习–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参数说明:
https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html#Instrumentation-Options
23.gcovr官网:
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.什么是代码覆盖率:(关于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是否符合预期;符合预期,按理是缓存没问题的;
…………现在不知什么导致的增量行覆盖没更新…..
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区别:
https://cn.athabasca-foto.com/226668-gcov-what-is-the-difference-CXJVHT
--coverage
只是两个开关的缩写 -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