首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从lcov的覆盖率报告中排除文件

基础概念

lcov 是一个用于生成代码覆盖率报告的工具,它通常与 GCC 和其他编译器一起使用。覆盖率报告可以帮助开发人员了解哪些代码行已经被测试,哪些还没有被测试。lcov 生成的报告非常详细,但有时我们可能希望排除一些文件或目录,以简化报告或避免某些不必要的信息。

相关优势

  1. 简化报告:排除不必要的文件可以使覆盖率报告更加简洁,便于快速定位关键代码的覆盖率情况。
  2. 避免干扰:某些文件可能包含大量不会被测试的代码(如配置文件、第三方库等),排除这些文件可以避免它们对覆盖率报告的干扰。
  3. 提高效率:在大型项目中,排除不必要的文件可以减少报告生成的时间,提高工作效率。

类型

lcov 提供了多种方式来排除文件或目录,主要包括:

  1. 通过命令行参数排除:在运行 lcov 命令时,可以使用 --exclude 参数来指定要排除的文件或目录。
  2. 通过配置文件排除:可以创建一个 .lcovrc 配置文件,在其中定义要排除的文件或目录规则。

应用场景

  1. 排除第三方库:在项目中使用第三方库时,通常不需要测试这些库的代码,因此可以将它们从覆盖率报告中排除。
  2. 排除配置文件:配置文件通常不包含业务逻辑代码,因此可以将它们从覆盖率报告中排除。
  3. 排除测试框架代码:测试框架本身的代码也不需要被测试覆盖率报告覆盖,可以将其排除。

如何排除文件

假设我们有一个项目结构如下:

代码语言:txt
复制
project/
├── src/
│   ├── main.cpp
│   ├── utils.cpp
│   └── utils.h
├── test/
│   ├── test_main.cpp
│   └── test_utils.cpp
└── third_party/
    └── library.cpp

我们希望排除 third_party 目录和 test 目录中的文件。可以通过以下两种方式实现:

通过命令行参数排除

代码语言:txt
复制
lcov --capture --directory . --output-file coverage.info --exclude "*/third_party/*" --exclude "*/test/*"

通过配置文件排除

创建一个 .lcovrc 文件,内容如下:

代码语言:txt
复制
genhtml_excludes = */third_party/* */test/*

然后运行 lcov 命令:

代码语言:txt
复制
lcov --capture --directory . --output-file coverage.info

遇到的问题及解决方法

如果在排除文件时遇到问题,可能是以下原因:

  1. 路径错误:确保排除的路径是正确的,可以使用绝对路径或相对路径。
  2. 权限问题:确保 lcov 有足够的权限访问和读取项目文件。
  3. 配置文件格式错误:确保 .lcovrc 文件的格式正确,没有语法错误。

解决方法:

  1. 检查路径:确保排除的路径是正确的,可以使用 echo 或其他工具验证路径。
  2. 检查权限:使用 chmod 等命令调整文件权限,确保 lcov 可以访问相关文件。
  3. 验证配置文件:仔细检查 .lcovrc 文件的格式,确保没有语法错误。

参考链接

通过以上方法,你可以有效地从 lcov 的覆盖率报告中排除不必要的文件,从而简化报告并提高工作效率。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

代码覆盖率--gcovlcovgcovr

lcov有很多参数配合使用可以满足各种需求,lcov的使用方法可以通过以下这条命令查询: lcov --help 我们一般关注以下这几个参数: -c 或者 --capture 指定从编译产物中收集覆盖率信息...-e FILE PATTERN 或者 --extract FILE PATTERN 从指定的文件中根据PATTERN过滤结果。...lcov软件包提供的另外一个命令genhtml来生成最终需要的html格式的覆盖率报告文件。...最后,通过genhtml得到HTML格式的报告,报告结果存储在文件夹coverage_report中。...gcovr 一般场景下使用gcov和lcov能满足代码覆盖率的获取和展示工作,lcov和genhtml配合生成的HTML报告内容详尽,简洁直观,行覆盖率、分支覆盖率都有,但是HTML文件在常用的持续集成工具

10.3K41

量化你团队的代码质量

准备工具 clang-tidy、infer 用于静态代码检查 lcov 用于统计单元测试代码覆盖率 gcovr 用于生成覆盖率报告及转为 SonarQube 支持的报告格式 sonar-scanner...lcov 与基础报告对比生成结果 这个步骤比较繁琐,我们找到了一个开源的 CMake 插件 CodeCoverage.cmake,有了这个插件,您只需要在您的工程中添加几行 CMake 代码即可实现覆盖率统计能力...表示要上报的 clang-tidy 分析报告 sonar.exclusions 表示要排除的目录,包括测试覆盖率、静态分析结果 上传时只需要调用 sonar-scanner 即可将当前分支信息上报到...Total:80.6% 就是总的覆盖率情况,这一步很重要,我们要在 GitLab 中添加一段正则代码,匹配最终的结果,GitLab 会在 Job 执行完成后从输出内容中正则匹配到对应内容并显示到 GitLab...至此,代码质量相关工具工程化基本结束,我们从代码提交到 CI 再到 SonarQube 报告最后到反馈全流程均通过仓库代码配置文件的方式实现,符合我们预期的想法。

1K30
  • C++语言的单元测试与代码覆盖率

    生成的结果中会包含概述页面,以方便浏览。 lcov支持我们前面提到的所有四种覆盖率。 这个链接是lcov生成的报告样例:lcov – code coverage report。...-e FILE PATTERN 或者 --extract FILE PATTERN 从指定的文件中根据PATTERN过滤结果。...lcov软件包提供的另外一个命令genhtml来生成最终需要的html格式的覆盖率报告文件。...关于Google Mock的更多内容请参见:Google Mock的文档。 持续集成 对于演示项目的覆盖率报告是通过手动执行脚本文件生成的。...可以在持续集成工具中包含我们编写的脚本,然后将覆盖率报告的html结果发布到某个Web服务器上,最后再以邮件的形式将链接地址发送给大家。

    3.3K10

    使用gcov和lcov测试代码覆盖率

    gcov与 lcov简介 通过gcov和lcov,可以很直观的看到代码的运行情况,同时也可以查看代码的行覆盖率,函数覆盖率等等信息,为开发提供一个方便的测试手段。...,主要特点有: 基于Html输出,并生成一棵完整的HTML树 输出包括概述、覆盖率百分比、图表,能快速浏览覆盖率数据 支持大项目,提供三个级别的视图:目录视图、文件视图、源码视图 lcov安装 下载地址.../test 生成了gcda文件 转换覆盖率信息 lcov -c -o test.info -d . -c 生成覆盖率信息 -o 生成目标文件 -d 目录 .....: 100.0% (2 of 2 functions) 可以看到output目录下有index.html文件 使用浏览器打开html文件,即可查看覆盖率报告 覆盖率报告分析 ?...总结 结合使用gcov和locv,可以比较直观的观察到运行的程序是否按照自己的设计,跑到了对应的代码中。当然对于以上过程,完全可以写成脚本,而无需每一次都进行如此繁杂的操作。

    4.3K30

    【可测试性实践】C++ 单元测试&代码覆盖率统计

    引言 最近在调研C++工程怎么做单元测试和代码覆盖率统计,由于我们工程有使用Boost库,尝试使用Boost.Test来实现单元测试并通过Gcov和Lcov来生成代码覆盖率报告。...gcov:GCC 自带的代码覆盖率工具。 lcov:用于生成 HTML 格式的覆盖率报告。 genhtml:用于将 lcov 生成的覆盖率数据转换为 HTML 文件。...GCOV 代码覆盖率统计流程 画板 由于gcov生成的代码覆盖率统计文件可视化较低,所以需要借助lcov,genhtml工具直接生成html报告。...生成覆盖率报告 # 生成初始的覆盖率信息 lcov --capture --directory ....Mac+VSCode,但Lcov对Mac系统并不太友好,前面的demo工程虽然编译通过了,但生成代码覆盖率报告就报错,猜测Mac的符号表机制跟Linux不太一样,最后还是在私有构建机的Linux环境跑通了

    25810

    使用 Gcov 和 LCOV 度量 CC++ 项目的代码覆盖率

    本篇分享如何使用 Gcov 和 LCOV 对 C/C++ 项目进行代码覆盖率的度量,以及在之前 关于代码覆盖率(Code Coverage) 篇中没有提到的观点写在了本文最后的《不要高估代码覆盖率指标》...,和 *.gcno; 运行(测试)生成的可执行文件,生成了 *.gcda 数据文件; 有了 *.gcno 和 *.gcda,通过源码生成 gcov 文件,最后生成代码覆盖率报告。...有了代码覆盖率 .gcov 文件,通过 LCOV[5] 生成可视化代码覆盖率报告。 生成 HTML 结果报告的步骤如下: # 1....旁注: 还有另外一个生成 HTML 报告的工具叫 gcovr[6],使用 Python 开发的,它的报告在显示方式上与 LCOV 略有不同。...借 Martin Fowler 在这篇测试覆盖率[7]的文章说的一句话: 代码覆盖率是查找代码库中未测试部分的有用工具,然而它作为一个数字说明你的测试有多好用处不大。

    5.7K72

    Sonar Scanner 之 C++扫码篇

    工具链 - 覆盖率报告lcov/gcovr gcov生成的覆盖率结果文件可读性很差,一般都需要额外的工具对gcov的结果文件进行解析和进一步优化,生成可读性更好的xml或者html文件。...lcov和gcovr是两个比较流行的gcov报告解析器。其中lcov的功能更为强大一些,有覆盖率结果累加等功能,但是只提供了html报告。...而gcovr比lcov更好的一个场景是提供了cobetura兼容格式的xml报告,从而可以让sonar来解析c++的覆盖率报告。...工作过程 一个典型的过程是: 部署上述工具,形成标准化的编译扫码环境 从代码库检出代码,并转换到相应的分支 通过cppcheck进行代码扫码 通过make进行gcc编译,编译过程中通过gccv进行插桩...如果有valgrind的测试也可以在此处执行。 使用gcovr分析gcc覆盖率报告文件,并生成xml格式的cobetura兼容报告。

    7.9K50

    有赞iOS精准测试实践

    分析器根据参数向文件服务拿去对应的 gcno gcda 文件,然后生成报告。 分析器通知相关人员报告结果。...然而 LCOV 工具并不能满足我们在 多版本之间的代码覆盖率迁移合并、基于 git diff 的增量代码覆盖率统计、基于增量代码覆盖率数据的报告展示 等方面的需求,因此我们对它做了一些扩展,使其能具备上述的功能...3.3.1 单版本覆盖率 在单版本代码代码覆盖率的统计中,我们只需要调用 LCOV 工具的以下代码实现对应的功能(具体指令及参数的含义请参阅 LCOV 工具): 生成覆盖率:lcov-c--derive-func-data-d...info 的结构进行写入文件操作 完成行号平移之后,两个版本的 .info 文件中的数据已经对齐了行号,可以用上述 LCOV 工具进行合并,合并完成后,用行号标记来统计差异的代码覆盖率数据。...在提交代码时,git hook 脚本会对提交的代码进行增量代码覆盖率分析,生成报告及覆盖率数据,将报告地址和覆盖率数据添加到提交信息中。

    2.3K32

    集成测试 Cypress 配置

    /code-coverage/support来支持覆盖率报告输出。...收尾 上述配置完,启动测试用例后,会自动生成覆盖率报告,但是在项目根目录生成。因为还缺 nyc的配置…....nyc 又是什么,仅仅是我们安装 babel-plugin-istanbul依赖的时候引入的一个命令行工具,用于在命令行中可视化输出覆盖率。就是下面这个样子。....nyc_output文件,GitHub 的 Issue 上有人建议去除这个文件,官方的 README 中也没有给出对应的配置方式,好在底下有人放出了配置参数,我将这个文件放到了生成覆盖率的文件夹中(coverage...新建一个 .nycrc 的配置文件,然后配置如下内容,这样命令行中也可以看到覆盖率了。 { "report-dir": ".

    1.4K30

    集成测试 Cypress 配置

    /code-coverage/support来支持覆盖率报告输出。...收尾 上述配置完,启动测试用例后,会自动生成覆盖率报告,但是在项目根目录生成。因为还缺 nyc的配置…....nyc 又是什么,仅仅是我们安装 babel-plugin-istanbul依赖的时候引入的一个命令行工具,用于在命令行中可视化输出覆盖率。就是下面这个样子。....nyc_output文件,GitHub 的 Issue 上有人建议去除这个文件,官方的 README 中也没有给出对应的配置方式,好在底下有人放出了配置参数,我将这个文件放到了生成覆盖率的文件夹中(coverage...新建一个 .nycrc 的配置文件,然后配置如下内容,这样命令行中也可以看到覆盖率了。 { "report-dir": ".

    1K10

    SonarQube8.3中的Maven项目的测试覆盖率报告

    从SonarQube6.2开始,测试报告不再在这些类别中分开。SonarQube将所有测试报告合并为一份涵盖整体的测试报告。...在以下各节中,提出了满足以下条件的解决方案: 构建工具:Maven。 该项目可以是多模块项目。 单元测试和集成测试是每个模块的一部分。 测试覆盖率是通过JaCoCo Maven插件来衡量的。...之后,我们来看看Maven项目配置以生成涵盖单元测试和集成测试的测试报告。最后,SonarQube的仪表板中显示了SonarQube的配置,用于测试报告的可视化查看。...SonarQube测试报告可视化 现在,我们想在SonarQube中可视化我们的测试报告。成功构建后,我们必须在我们的项目中运行SonarMaven3插件(命令mvn sonar:sonar)。...,我们会看到总体测试覆盖率报告。

    1.4K30

    有赞前端质量保障体系

    前端重用户交互,单纯的接口测试、单元测试不能真实反映用户的操作路径,并且从以往的经验中总结得出,因为各种不可控因素导致的发布 A 功能而 B 功能无法使用,特别是核心简单场景的不可用时有出现,所以每次发布一个应用前...mochawesome 是 mocha 测试框架的第三方插件,支持生成漂亮的 html/css 报告。...当然,在获取覆盖率的时候有需求文件是不需要统计的,可以通过在根路径下增加 .istanbule.yml 文件的方式,来排除或者指定需要统计覆盖率的文件 verbose: false instrumentation...推行一段时间的单测后发现,在有赞的 Node 框架中,业务层的 server 端只做接口组装,client 端面向浏览器,都不太适合做单元测试,所以我们只针对基础框架和通用组件进行单测,保障基础服务可以通过单测排除大部分的问题...更改后,使用 sentry 的姿势是: sentry 的全局信息上报,并进行筛选 错误类型: TypeError 或者 ReferenceError 错误出现用户 > 1k 错误出现在 js 文件中 出现错误的店铺

    1.3K30

    iOS自动化探索(十)代码覆盖率统计

    中配置编译选项后, 编译后会为每个可执行文件生成对应的 .gcno 文件;之后在代码中调用覆盖率分发函数,会生成对应的 .gcda 文件。...把上面第4步拷贝的所有.gcda文件拷贝到第六步打开的目录中 步骤7:生成覆盖率报告 打开终端, cd进入项目目录/Pods/XcodeCoverage, 运行命令: ....iOS沙盒文件 覆盖率数据合并 在覆盖率统计测试中,可能会遇到测试用例需要在不同的设备上运行, 这个时候我们就需要收集每一台手机上的覆盖率数据然后合并输出为1份报告 具体操作如下 #1....收集每一台测试手机的覆盖率日志 同单台手机时操作方法 #4. 为每一台手机生成一份覆盖率测试报告 同单台手机时操作方法, 注意备份台手机的报告文件夹 #4....合并生成报告 运行./mergecov即可生成合并的报告, 存放在当前目录的report文件夹

    2.3K20

    iOS 覆盖率检测原理与增量代码测试覆盖率工具实现

    为了解决上述问题,我们深入调研了覆盖率报告的生成逻辑,并结合团队的开发流程,开发了一套嵌入在代码提交流程中、基于单次代码提交(git commit)生成报告、对开发者透明的增量代码测试覆盖率工具。...覆盖率检测原理 生成覆盖率报告,首先需要在 Xcode 中配置编译选项,编译后会为每个可执行文件生成对应的 .gcno 文件;之后在代码中调用覆盖率分发函数,会生成对应的 .gcda 文件。...例 1 中基本块 B0,B1 对应的 .gcno 文件结构如下图所示,从图中可以看出,BB 的主结构完全记录了基本块之间的跳转关系。 !...我们做的增量代码测试覆盖率工具是基于 lcov 的扩展,报告展示如上节末尾图 8 所示。 !.../lcov/genhtml.1.php)生成可读性比较好的 HTML 报告。

    1.6K20

    iOS 增量代码覆盖率检测实践

    覆盖率检测原理 生成覆盖率报告,首先需要在 Xcode 中配置编译选项,编译后会为每个可执行文件生成对应的 .gcno 文件;之后在代码中调用覆盖率分发函数,会生成对应的 .gcda 文件。...例 1 中基本块 B0,B1 对应的 .gcno 文件结构如下图所示,从图中可以看出,BB 的主结构完全记录了基本块之间的跳转关系。 ?...我们做的增量代码测试覆盖率工具是基于 lcov 的扩展,报告展示如上节末尾图 8 所示。 ?...图9 gcov 输出,行前数字代表执行次数,#### 代表没执行 比 gcov 直接生成报告多了一步,lcov 的处理流程是将 .gcno 和 .gcda 文件解析成一个以 .info 结尾的中间文件(...这个文件已经包含全部覆盖率信息了),之后通过覆盖率报告生成工具生成可读性比较好的 HTML 报告。

    1.7K30
    领券