Lcov生成的Info文件格式分析

本文解析了Lcov生成的*.info文件格式,该文件用于记录源文件的覆盖率信息,包括测试用例名称、源代码文件名、函数及分支覆盖率等关键指标。

作者:蓝白云


说明:本文参考的源代码版本为lcov 1.9

Lcov中的geninfoPerl脚本)将gCov生成*.bb/bbg(3.4以上版本变成了*.gcno)文件和*.da3.4以上版本变成了*.gcda)文件转换成*.info文本格式,然后再通过genhtml*.info生成*.html网页覆盖率报告。本文介绍*.info的文本中的内容代表什么含义。

 

*.info文件包含一个或多个源文件所对应的覆盖率信息,一个源文件对应一条“记录”“记录”中的详细格式如下:

TN: <Test name> 表示测试用例名称,即通过geninfo中的--test-name选项来命名的测试用例名称,默认为空;

SF: <File name> 表示带全路径的源代码文件名;

FN: <函数启始行号>, <函数名>; <函数有效行总数>; <函数有效行总数中被执行个数>

FNDA: <函数被执行的次数>, <函数名>; <函数有效行总数>; <函数有效行总数中被执行个数>

FNF: <函数总数>

FNH: <函数总数中被执行到的个数>

BRDA: <分支所在行号>, <对应的代码块编号>, <分支编号>, <执行的次数>

BRF: <分支总数>

BRH: <分支总数中被执行到的个数>

DA: <代码行号>, <当前行被执行到的次数>

LF: < counts> 代码有效行总数

LH: <counts> 代码有效行总数中被执行到的个数

end_of_record 一条“记录”结束符

JSON (JavaScript Object Notation) 文件通常用于存储数据,而 lcov-report 是用于测试覆盖率报告的一种格式。生成 lcov-report 需要在软件开发过程中配合使用代码覆盖率工具,如 Istanbul 或者 JaCoCo。 以下是使用 Istanbul 生成 JSON 格式覆盖率报告的基本步骤: 1. **安装依赖**: - 如果项目基于 Node.js,首先需要安装 `istanbul` 和 `coveralls`(如果要上传到 Coveralls 服务)。 ```bash npm install istanbul coveralls --save-dev ``` 2. **运行测试并收集覆盖率信息**: - 在运行测试之前,确保已经配置了相应的测试命令,比如 `mocha`, `jest`, 等等。 - 使用istanbul的`nyc`脚本来运行测试,并同时收集覆盖率数据。 ```bash nyc mocha # 或者 nyc jest ``` 3. **生成 JSON 报告**: - 测试完成后,`nyc report` 命令将生成 lcov.info 和 json 格式的覆盖率报告。 ```bash nyc report --report lcov --report=json ``` 这将生成一个名为 coverage.json 的 JSON 文件,记录了测试代码的覆盖率信息。 4. **转换成 lcov-report**: - 有些工具如 `lcov-parse` 可以从 JSON 转换成 lcov_report 格式,但直接生成 lcov_report 格式一般不是必需的。 5. **查看或分析报告**: - 可以通过命令行工具 `lcov` 或者专门的 GUI 工具查看生成lcov_report。 ```bash lcov -q --directory . --output-file coverage.lcov genhtml coverage.lcov -o coverage_html ``` 这将生成一个 HTML 格的报告,便于浏览和理解代码覆盖情况。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值