【Linux】lcov2.0安装和perl修改镜像源
安装lcov 2.0
你可能不知道lcov是什么,简而言之,它是一个代码单元测试覆盖率的显示工具,基于gcov。
- 什么是单元测试覆盖率?
我们需要对项目中的每个函数编写单元测试,其实就是测试函数的功能。通过gcc/g++的相关编译选项,可以得到一个gcda文件,内部包含某个cpp文件中相关函数被执行了多少次,以及某些if/switch中的多分支是否覆盖上了;
lcov就可以解析这些gcda文件,得到如下图所示的函数测试覆盖率的报告
包括单元测试在内,这部分对代码函数测试的操作一般被称之为功能安全
,这里就不多说了。
lcov 2.0的安装命令相对来说很简单,就是下面这些
1 | wget https://github.com/linux-test-project/lcov/releases/download/v2.0/lcov-2.0.tar.gz |
perl
使用lcov的时候需要perl,此时就需要修改镜像源。默认的perl module的源是在国外的,国内基本上是完全用不了。
1 | # centos8 安装perl |
如果你的lcov运行的时候遇到下面类似的错误,那么就是因为perl缺少对应module导致的,比如如下报错是因为缺少Capture::Tiny
这个module;
1 | Can't locate Capture/Tiny.pm in @INC (you may need to install the Capture::Tiny module) (@INC contains: /usr/local/lib/lcov /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /usr/local/lib/lcov/lcovutil.pm line 14. |
perl使用清华源
使用清华源就行了 https://mirrors.tuna.tsinghua.edu.cn/help/CPAN/
因为我用的centos的系统,安装的perl版本很老,v5.26.3
,所以这里记录一个手动修改镜像源的办法
1 | perl --version |
在root用户下执行如下命令,会进入一个perl的命令行
1 | perl -MCPAN -e shell |
在perl的命令行中执行如下命令
1 | o conf init |
最终展现的结果应该如下,会自动往当前用户的家目录下创建一个配置文件
这里创建的配置文件是在root用户下,输入quit
退出perl的命令行后,我们直接vim打开这个配置文件
1 | vim /root/.cpan/CPAN/MyConfig.pm |
在里面找到urllist选项,根据已有格式添加一个新的镜像路径就可以了
我这里添加后的urllist配置项如下,第一项是镜像源就OK
1 | 'urllist' => [q[https://mirrors.tuna.tsinghua.edu.cn/CPAN/], q[http://www.cpan.org/]], |
但是要注意一下,在我这边的网络环境中,清华源在perl安装包的时候也容易抽风,我试出来比较稳定的ip如下,将其写入/etc/hosts
文件中,这样安装perl包的时候就不会timeout了
1 | 101.6.15.130 mirrors.tuna.tsinghua.edu.cn |
这个ip后续可能会有变化啊,请以你的实际情况为准!
perl安装module
后续安装包的时候,就可以用上镜像源了,安装包的语句如下,请注意这个安装语句最后还有个英文的单引号,一定不要把他删了!
1 | sudo perl -MCPAN -e 'install "包名"' |
我需要用perl是因为要用到lcov,在lcov仓库的readme里面提到了lcov需要的perl包,一个一个安装就行了(以下节选自lcov2.0
的仓库README)
1 | These perl packages include: |
比如我需要安装Capture::Tiny
包,就用如下命令
1 | sudo perl -MCPAN -e 'install "Capture::Tiny"' |
正常安装的命令输出结果如下图所示
ubuntu安装perl module
如果是ubuntu,安装perl的包会方便一点,因为apt源里面是有perl的module
1 | # ubuntu 22.04 可以直接安装下面的依赖项,就可以使用lcov 2.0了 |
你可以根据perl的包名中的关键字,尝试在apt list
里面找找有没有对应的包
1 | sudo apt list | grep 包名 |
使用lcov
对于lcov2.0的命令使用,可以参考我的linux仓库中的测试
https://gitee.com/musnows/raspberry-practice/tree/master/lcov_test