LCOV离线覆盖率报告
读取一份本地LCOV 1.x tracefile,重算覆盖率计数、保留未知分支,并下载完整离线HTML报告。
- 1添加输入
- 2调整设置
- 3获取结果
工具输入和文件在当前浏览器处理,不会上传。
开始之前
在不读取源文件路径的情况下检查测试运行器导出的覆盖率。查看真实行、函数和分支计数,识别过期声明汇总,并把独立HTML报告与原始tracefile一起交付。
如何使用
- 粘贴或打开测试运行器导出的完整LCOV 1.x tracefile。
- 核对重算汇总、未知分支和声明计数差异。
- 下载coverage.html及完整JSON/CSV,在本地打开HTML并保留原始tracefile。
支持范围与限制
一份UTF-8文件或粘贴tracefile,最多5 MiB、50000个覆盖点(DA + FN + BRDA)、1000个完整源文件记录。每个准确源路径只允许一条记录;重复路径明确拒绝,不静默合并测试上下文。已选文件优先;全部下载合计最多10 MiB,表格预览前200条源记录。
支持LCOV 1.x的TN、SF、FN、FNDA、DA、BRDA、LF/LH/FNF/FNH/BRF/BRH及可选VER。FNDA与FN顺序可不同,但每个函数必须同时有位置和次数。次数与分支标识为非负uint64;源行号1–2147483647。可选DA checksum必须为32位十六进制。新版FN结束行、FNL/FNA及MC-DC扩展拒绝。
覆盖率汇总从实际覆盖点重算。声明汇总不一致会在报告中保留差异,不用它充当分母。BRDA“-”保留为未知,计入已发现分支,不改成命中次数0。分母为0显示n/a/null,不显示100%。
完整HTML列出所有覆盖点和计数差异,转义文件、测试和函数文字,不含脚本或读取源路径的链接。JSON将uint64命中次数保存为十进制字符串;CSV包含每条源记录,表格安全保护可能给公式式标签加前缀。不会请求源文件、合并tracefile、运行测试或测量新的覆盖率。
操作示例
示例输入
TN:unit SF:src/example.c FN:1,covered FN:4,missing FNDA:3,covered FNDA:0,missing DA:1,3 DA:2,0 DA:4,0 BRDA:1,0,0,3 BRDA:1,0,1,- LF:3 LH:1 FNF:2 FNH:1 BRF:2 BRH:1 end_of_record
示例参数
{"secondary":"","params":{"spreadsheetSafe":true}}示例输出
{
"format": "LCOV 1.x",
"records": [
{
"path": "src/example.c",
"testName": "unit",
"version": null,
"lines": [
{
"line": 1,
"hits": "3",
"checksum": null
},
{
"line": 2,
"hits": "0",
"checksum": null
},
{
"line": 4,
"hits": "0",
"checksum": null
}
],
"functions": [
{
"name": "covered",
"line": 1,
"hits": "3"
},
{
"name": "missing",
"line": 4,
"hits": "0"
}
],
"branches": [
{
"line": 1,
"block": "0",
"branch": "0",
"hits": "3"
},
{
"line": 1,
"block": "0",
"branch": "1",
"hits": null
}
],
"declared": {
"LF": "3",
"LH": "1",
"FNF": "2",
"FNH": "1",
"BRF": "2",
"BRH": "1"
},
"computed": {
"LF": 3,
"LH": 1,
"FNF": 2,
"FNH": 1,
"BRF": 2,
"BRH": 1
},
"summaryDifferences": []
}
],
"coverPoints": 7,
"lines": 3,
"lineHits": 1,
"functions": 2,
"functionHits": 1,
"branches": 2,
"branchHits": 1,
"unknownBranches": 1,
"summaryDifferences": 0,
"summaryCountersAgree": true,
"lineCoveragePercent": 33.333333333333336,
"functionCoveragePercent": 50,
"branchCoveragePercent": 50
}出现问题时
核对FN/FNDA名称匹配、覆盖点键唯一、end_of_record完整、非负uint64次数及LCOV版本。重复路径或扩展格式请回到原工具重新导出;过期声明以报告重算值为准。修正原文件后重新运行。
常见问题
为什么声明汇总不一致?
工具从实际覆盖点重算。格式合法但过期的LF/LH等计数会与真实值一起报告,不会用于夸大覆盖率。
“-”表示分支执行了0次吗?
不表示。它说明没有可用执行次数;该分支继续标为未知,并计入已发现分支的分母。
报告能显示源代码或合并多个运行吗?
不能。路径只是转义文字,从不读取或请求。重复源路径或新版格式扩展会拒绝,请从原工具导出支持范围内的完整tracefile。