bazel学习及覆盖率

目录

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

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注