IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 使用 Github Actions 和 Codecov 监控 C/C++ 仓库的代码覆盖率 -> 正文阅读

[开发测试]使用 Github Actions 和 Codecov 监控 C/C++ 仓库的代码覆盖率


前言

我总是有强烈的欲望去追求更高代码质量,而代码覆盖率是衡量代码质量的指标之一,它意味着你编写的单元测试、回归测试是否有完整执行到所有代码行。

对于 C/C++ 这种需要 “小心翼翼” 的编程语言,内存泄漏、越界、野指针等问题防不胜防,这些问题也是破坏代码质量的重要元凶,提早发现并修正此类问题可以帮助我们提升代码质量。我喜欢使用 AddressSanitizer 来发现这些问题,它很好用,我很喜欢。

高代码覆盖率 + AddressSanitizer ,意味着我们几乎所有代码都进行内存方面的监控和检查,这让我们更加安心。

基于上述目的,可以得出:高质量代码需要高覆盖率。那么如何提高代码覆盖率呢?我们需要做好两件事情:良好的编程习惯做好代码覆盖率监控

对于编程习惯,自然是要多些单元测试,推荐使用测试驱动开发,详细参考 测试驱动开发(TDD)实践与技巧,这里不再赘述。

如何做好代码覆盖率监控,是我们今天要讨论的主题。更加限定一点,讨论如何在 github 上使用 Codecov 对 C/C++ 项目监控代码覆盖率。


一、Github Actions

Github Actions 是 Github 推出的持续集成服务,与 Gitlab CI 类似。这部分参考 GitHub Actions 入门教程

二、使用 Lcov 获取代码覆盖率

这部分参考 关于代码覆盖lcov的使用,总结下来想要使用 lcov 获得代码覆盖率,你需要:

  1. 安装 lcov
  2. 在 c/c++ 编译选项中添加 -fprofile-arcs -ftest-coverage,编译可执行文件
  3. 运行可执行文件
  4. 使用 lcov 收集代码覆盖率信息

具体的,你可以参考 codecov_cpp_test 这个仓库的代码,它在 CMakeLists.txt 中添加 -fprofile-arcs -ftest-coverage 进行编译,在 tests/test_hellocov.cpp 中使用 googletest 进行单元测试。你可以这样编译并运行它:

git submodule update --init --recursive
cmake -S . -B build
cmake --build build
cd build
ctest --verbose

在这里插入图片描述
运行完单元测试后,你会发现在 build/tests/CMakeFiles 中多出来一些 .gcda 和 .gcno 文件,lcov 就是利用它们来生成代码覆盖率报告的。具体命令为:

# 收集 gcda 和 gcno,生成 cover.info
lcov -c -d ./ -o cover.info

# 利用 cover.info 生成 html 报告
genhtml -o cover_report --legend --title "lcov" --prefix=./ cover.info

三、Github Actions 配置 Codecov

Codecov 是一个测试结果的展示平台,你可以上传 lcov 生成的 cover.infoCodecov,它就可以为你可视化这些结果,比 genhtml 生成的 html 页面更加友好。此外,你还可以获取 codecov 的小徽章放在你的仓库页面中。

在 Github Actions 中配置 Codecov 相当的容易,步骤为:

  1. 编译、运行你的代码
  2. 安装 lcov,使用 lcov 生成 .info 文件
  3. 使用 codecov/codecov-action@v2 上传 .info 文件

实际例子请参考 codecov_cpp_test/codecov.yml,对于 codecov 为 codecov_cpp_test-codecov

如果你的仓库是私有的,需要额外设置 TOKEN,具体步骤为:

  1. 在 Codecov 的仓库 Setting 页面中,复制 Repository Upload Token
    在这里插入图片描述
  2. 在 github 仓库中设置 CODECOV_TOKEN 为 Actions secrets
    在这里插入图片描述
    在这里插入图片描述
  3. 在 codecov.yml 中使用 CODECOV_TOKEN
    在这里插入图片描述

总结

本文首先介绍了 C/C++ 项目中可以利用 lcov 来监控代码覆盖啦,接着我们对 Github Actions 和 Codecov 做了分别介绍,并通过 codecov_cpp_test 向大家说明了如何在 github 中使用 codecov

参考

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 12:07:07  更:2022-04-26 12:08:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 3:40:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码