当一个项目集成到gitlab CI管道中时,这个管道通常分为几个步骤:
- 编译
- 单元测试
- 集成测试
这些测试可以在运行程序池中执行,每一步都可能在不同的服务器/运行程序上执行
我的问题是代码覆盖率。根据我的理解,代码覆盖率分析遵循以下步骤:
- 使用--coverage编译你的项目:它将生成.gcno文件
- 运行测试:它将生成.gcda文件
- 运行您选择的reporter,lcov或gcovr,为gitlab/sonarqube生成覆盖率报告
当所有这一切都在一个单一的工作在一个单一的亚军,一切工作顺利。但是,当您开始在不同作业之间拆分步骤时,会遇到路径问题。
CMake在.gcno文件中生成绝对路径。因此,当您运行测试时,引用的绝对路径可能不存在,您将无法生成覆盖率报告。
你如何解决这个问题?
我尝试使用
- 用sed命令手动修补.gcno文件。不够
- 使cmake生成相对路径:找不到一个简单的方法
1条答案
按热度按时间jjjwad0x1#
如果有人偶然发现这个问题,我们最终找到了一个解决这个问题的方法,到目前为止已经在一个小项目上进行了测试