本地覆盖率、固件与Notebook交付检查
在本地读取LCOV计数、合并稀疏Intel HEX地址并清理Notebook输出,核对完整下载、支持预算与接收工具。
选择能回答具体任务的文件合同
测试运行器已产生覆盖率数据且需要可读汇总时,使用LCOV报告;bootloader与应用需要占用已知不同地址时,使用HEX地址合并;保存的大量显示输出使Notebook难以打开且需要其代码时,使用输出清理。三个工具都不运行测试、不刷写设备、不执行Notebook单元。
运行前选择原始文件。成功下载包含完整结果,表格最多预览200条记录、区段或单元。把原件与产物一起保留,让接收者可以重新核对。
| 任务 | 提供 | 下载及接收复核 |
|---|---|---|
| LCOV离线报告 | 一份完整LCOV 1.x tracefile | HTML/JSON/CSV;与测试运行器计数比较 |
| Intel HEX地址合并 | 不重叠的原始HEX文件 | 规范HEX/地址映射JSON/CSV;在固件工具核对地址 |
| Notebook输出清理 | nbformat 4 minor 0–5 .ipynb | 清理副本/源码清单/CSV;在Jupyter核对源码和附件 |
读取真实覆盖率并保留未知分支
示例trace含三条DA,其中一条有命中;FN/FNDA定义两个函数,其中一个命中。两条BRDA含一个命中次数和一个“-”。报告为行1/3、函数1/2、分支1/2,另列一个未知分支,不把缺少次数改成0。
LF/LH等声明汇总与真实覆盖点比较。格式合法但过期的计数保留声明/重算差异;无函数记录没有函数分母,显示n/a而非100%。
源路径和函数名称只是文字。完整离线HTML会转义它们,不含执行脚本、不读取对应源文件。每个准确源路径只允许一条记录,重复路径、新版FNL/FNA/FN结束行/MC-DC扩展拒绝。应从原工具导出支持格式,不删除有意义记录。
合并固件导出前解决地址归属
合法HEX记录包含长度、地址、类型、数据与记录校验和,每份文件必须以一个EOF结束。支持00–05、扩展段/线性地址及CS:IP或EIP入口。校验和合法的记录仍可能与其他文件冲突。
每个重复存储地址都使整个合并失败,即便字节完全相同。入口记录类型或数值不同也冲突。应先在链接/构建输入中解决归属,失败不会得到部分合并下载。
稀疏存储不填地址空隙。0xFFFFFFFF处的一个字节只是结束地址为0x100000000的单字节区段,不是4 GiB分配。完整地址映射JSON含准确区段字节,应与接收固件工具的边界一致。工具不验证目标Flash布局、启动行为、应用CRC或固件认证。
恢复Notebook源码而不渲染保存输出
清理器把Notebook作为数据解析,校验支持的单元/输出,删除代码单元outputs并重置execution_count。不渲染HTML/JavaScript MIME、不启动内核。显式选项只控制根metadata.widgets,其他元数据和Markdown/raw附件继续保留。
保留source字符串/字符串数组表示、单元顺序、ID、CRLF及中文。元数据整数、小数保留原数字token,包括123456789012345678901234567890和1.2345678901234567890123456789。JSON排版可能改变,原文件不会覆盖。
cell-sources.json记录每个原始单元source及拼接后UTF-8 SHA-256。到别处执行前,应确认清理副本和清单含预期代码。孤立代理码元源码会拒绝,避免哈希默默替换。输出删除不等于秘密删除:源码、附件、执行时间/信任/自定义元数据可能继续含敏感内容。
按完整预算处理并有意识恢复
支持范围内输入仍可能超过计算或合计输出限制。保留的大量Notebook内容、过多HEX区段或很长LCOV名称均可能放大产物;输出超限没有部分结果。
| 工具 | 输入 | 附加预算 |
|---|---|---|
| LCOV | 一份已选/粘贴trace≤5 MiB | 50000覆盖点;1000记录;总输出10 MiB |
| Intel HEX | 最多64文件、组合≤2 MiB | 50000记录;1 MiB存储字节;总输出10 MiB |
| Notebook | 已选≤64 MiB;粘贴≤8 MiB | 200000 JSON值;128层;10000单元;总输出10 MiB |
- LCOV语法失败时核对FN/FNDA名称和所有end_of_record;计数差异单独重算。
- HEX失败时在原工具修正校验和、长度、EOF,或解决区域重叠与入口声明。
- Notebook失败时使用完整支持版本、有效结构字段和minor 5唯一ID;取消后原件或较小有效文件可重新运行。
- 仅在任务语义不受损时拆分。改扩展名或删未知记录不是格式转换。
参考资料
- Flutter LCOV报告具体提问
任务来源:真实提问希望阅读导出的lcov覆盖率,不估计需求规模。
- Bootloader与应用HEX合并提问
任务来源:两份固件需要合并;浏览器产物不自动化Eclipse或证明设备适配。
- 不渲染输出打开Notebook提问
任务来源:保存图片/DataFrame输出使打开占用过大内存,但需要保留代码,不从提问推导性能承诺。
- Official LCOV project
仅正确性来源:本工具为限定1.x合同,不支持所有新版扩展。
- IntelHex merge reference
正确性及独立reader来源,不是需求证据。
- Jupyter nbformat description
正确性来源,不保证执行安全或个人信息清除。
本分类工具使用说明
展开工具,查看操作步骤、可调选项和支持范围,再直接进入工作区。
LCOV离线覆盖率报告读取一份本地LCOV 1.x tracefile,重算覆盖率计数、保留未知分支,并下载完整离线HTML报告。
在不读取源文件路径的情况下检查测试运行器导出的覆盖率。查看真实行、函数和分支计数,识别过期声明汇总,并把独立HTML报告与原始tracefile一起交付。
操作步骤
- 粘贴或打开测试运行器导出的完整LCOV 1.x tracefile。
- 核对重算汇总、未知分支和声明计数差异。
- 下载coverage.html及完整JSON/CSV,在本地打开HTML并保留原始tracefile。
可调选项
- 保护CSV表格公式式文字
- 默认开启
能力与限制
- 一份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、运行测试或测量新的覆盖率。
Intel HEX地址合并按稀疏32位地址合并本地Intel HEX 00–05文件,先核对记录校验和、地址重叠及入口冲突再交付。
仅在存储地址没有重叠时合并bootloader与应用HEX导出。检查完整区段和入口声明,再下载规范HEX与稀疏地址映射,不为大段地址空隙填充数据。
操作步骤
- 选择原始bootloader/应用HEX文件,或粘贴一份完整HEX进行检查。
- 检查存储范围、区段边界和入口类型;任何重叠都会在下载前失败。
- 下载merged.hex、完整地址映射JSON及区段报告,刷写前用接收固件工具复核。
可调选项
- 保护CSV表格公式式文字
- 默认开启
能力与限制
- 粘贴一份HEX文件,或选择最多64份UTF-8文件,组合最多2 MiB;已选文件优先。最多50000条非空记录、1 MiB实际存储字节,稀疏地址与跨度无关。全部完整产物合计最多10 MiB;区段预览前200条。
- 支持00数据、01 EOF、02扩展段地址、03 CS:IP入口、04扩展线性地址、05 EIP入口。长度、校验和、记录地址与各类型数据长度必须准确。每份文件需要一个EOF;其后记录、非法十六进制/空白、重复入口记录与未知类型拒绝。接受空行和可选开头UTF-8 BOM。
- 地址范围0x00000000–0xFFFFFFFF,超出范围的数据拒绝。同一存储地址重复出现即整体失败,即便字节相同也不合并。保留一致的入口声明,类型或数值不同则冲突。失败不提供部分结果。
- 输出为16字节数据记录及扩展线性地址,保留入口记录类型。地址映射JSON包含每个连续区段的准确十六进制字节;报告/CSV给出完整区段范围,结束地址不包含在区段内(可为0x100000000)。不填地址空隙、不刷写硬件、不判断设备适配、不认证固件签名、不验证应用CRC。
Notebook输出清理与源码恢复清除本地nbformat 4 Notebook的输出和执行次数,保留单元源码、附件及元数据精确数字。
从大量显示输出导致难以打开的Notebook中恢复代码。在不渲染保存输出的情况下删除它们,明确选择根widget状态策略,并下载清理副本及按单元索引的源码清单。
操作步骤
- 打开原始.ipynb而不渲染保存输出,或粘贴小份支持格式的Notebook。
- 选择是否清除根widget状态,核对输出删除数和执行次数重置数。
- 下载cleaned.ipynb与cell-sources.json,在Jupyter打开清理副本并核对源码/附件,再自行决定是否执行。
可调选项
- 清除根metadata.widgets状态
- 默认开启
其他元数据和附件继续保留;这不是自动敏感信息清理。
- 保护CSV表格公式式文字
- 默认开启
能力与限制
- 一份已选UTF-8 .ipynb文件最多64 MiB,或粘贴JSON最多8 MiB;已选文件优先。支持nbformat 4 minor 0–5,最多200000个JSON值、128层、10000个单元。全部下载合计最多10 MiB,表格显示前200个单元。保留的大量源码、附件或元数据仍可能超过输出预算。
- 支持代码、Markdown和raw单元,以及保存的stream/error/display_data/execute_result输出。校验结构字段、minor 5唯一ID、source表示和已知元数据字段;重复JSON键、新版单元/输出类型、未知结构扩展与不支持格式版本拒绝。自定义元数据继续作为数据保留。 拼接单元源码的孤立代理码元会拒绝,避免UTF-8哈希默默替换内容。
- 将每个代码单元的outputs清为空数组、execution_count设为null。显式选项只控制根metadata.widgets。保留source字符串/字符串数组表示、单元顺序、ID、CRLF/中文、Markdown/raw附件、其他元数据与原始大整数/小数token。JSON排版会改变,不覆盖原文件。
- 不渲染MIME、不运行脚本或单元、不启动内核、不自动去除个人信息。保留的源码、附件、执行时间/信任/自定义元数据可能仍含敏感内容。单元源码JSON保留准确source表示及其拼接后UTF-8 SHA-256,不声称Notebook已经运行或测试通过。