首页
学习
活动
专区
工具
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.1K41

量化你团队代码质量

准备工具 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 报告最后到反馈全流程均通过仓库代码配置文件方式实现,符合我们预期想法。

89830
  • 【可测试性实践】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环境跑通了

    15310

    使用 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.5K72

    C++语言单元测试与代码覆盖率

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

    3.2K10

    使用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.2K30

    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.5K50

    有赞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

    有赞前端质量保障体系

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

    1.3K30

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

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

    1.3K30

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

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

    2.2K20

    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.6K30
    领券