接收构建与数据报告:先核对声明,再解释结果
把本地构建产物当作声明证据阅读,区分未解析引用、完整性失败与未支持格式,不执行包,也不访问文件中路径。
先明确接收者需要决定什么
XML能解析,同一用例仍可能包含多条失败事件;SBOM通过模式检查,仍可能跨对象重复引用;GEDCOM能打开,仍可能缺少家庭反向声明。先明确接收决定,再保存能支持它的证据。
| 观察 | 可得结论 | 下一步 |
|---|---|---|
| 一用例有两条failure | 一个失败用例,保留两条断言 | 读完每条事件再选择修正 |
| bom-ref A重复 | 涉及A的边有歧义 | 修复生产者,不覆盖其中一声明 |
| FAMC缺反向CHIL | 原行号可定位的单向声明 | 核实导出完整性和关系证据 |
先读完用例事件,再对比摘要
运行JUnit示例,对照三个用例与三个事件。两条失败断言属于一个用例。套件time为99不代表用例实测耗时,缺少time不会变成零。声明计数单独保留,避免陈旧CI摘要夸大结果。
下载完整离线HTML查看已转义日志。未知flaky/rerun格式会停止运行;由生产者导出支持格式,不手工删除有意义的状态元素。报告能打开不代表新运行过测试。
SARIF:基址不明时保留未解析结果
示例包含4个结果、5个主/相关/代码流位置:R1依据driver规则解析为error,另有缺失基址、循环基址及无位置结果。输入 {"ROOT":"file:///D:/new/"} 会把SRC链映射到D:/new/src/,不会读取该路径上的源码。所有原结果仍保留,包括基线、抑制和未知字段。
基址须为以/结尾的目录URI,不含查询或片段。无效索引或直接URI与索引声明冲突会拒绝;未声明规则和未知抑制/基线状态则明确显示。消息Markdown按字面转义,messageStrings与arguments不展开。report.json保留完整originalResult数值token,original.sarif.json保留原输入字节;CSV和HTML列出每个范围内位置及无位置结果,不认证整个SARIF模式。
在可达性之前检查依赖歧义
SBOM示例有显式app根和独立的A/B依赖环。缺失引用与外部URN状态不同。重复ID显示全部声明路径,相应边不进入SCC分析。
不要按第一个组件推断根可达性。保留original.json,包括本依赖审查范围之外的关系。可读依赖图不代表漏洞或合规结论,这些检查应交给生产者和接收SBOM系统。
Wheel:报告生成与完整性通过是两个状态
加载固定demo_pkg-1.2.3-py2.py3-none-any.whl小文件示例:6个归档文件,其中5个负载核验、RECORD自身无哈希。文件名压缩标签展开后与WHEEL比较,名称规范化但版本按字面比较;折行和重复METADATA头、入口点保留原文,不执行。真实32 MiB文件、64 MiB展开量和10000项归档已做Node Worker容量读回;实际生产浏览器仍由主控集中验收。
坏哈希、大小不符、缺失/未列出的文件或元数据差异会交付integrityStatus=failed的完整诊断。SHA256/384/512支持;SHA224与未知算法明确incomplete,MD5/SHA1禁止并失败。RECORD自身及旧jws/p7s签名例外可见。verified_recorded_payload不证明真实性、安全或当前机器ABI,不安装、导入包、执行入口点或向磁盘解包。
- 保留wheel原文件名,使用可信生产者核对失败项;不要改写RECORD掩盖变更。
- 此任务只核验所选wheel,不核对磁盘上的已安装副本;历史pip反馈只证明审计需求,不描述当前pip行为。
编辑家谱前核对原始行号
缺少互反可能来自截断导出,也可能来自来源系统问题。浏览器报告保留单向声明,不新增父母、孩子或反向指针。祖先SCC使用声明的有向关系,同时保留收养、寄养、sealing和未知亲缘。
长姓名或备注的external-original-value表示值存放在original.ged中。编辑前按字节位置或续接片段重建,不把value:null当空字段,不把夫妻环称作自身祖先环。
- 将original.ged与报告JSON一起保存。
- 在来源系统核对原行号和对应记录。
- 区分声明亲缘与生物事实。
- 修正来源后重跑对比问题,不只重命名文件。
交付完整报告和适用边界
记录生产者/版本、原文件名、选项和接收核验。前200行表格只是预览,成功下载包含全部行。10 MiB输出预算失败不返回部分结果;只有保持任务含义时才拆分。这些工具读取导出数据,不执行其中内容。
报告JSON超过20,000字符时,结果文本和复制按钮提供行数及fullReportInDownload:true的紧凑预览。完整交付请下载report.json、CSV和HTML。
表格只显示前200行;长单元格仅前2000字符加省略号。超过20000字符的文本和复制结果是摘要预览,完整JSON/CSV/HTML不截断。接收方应读取下载文件,不能把复制预览当作完整报告。
参考资料
- JUnit XML转HTML的实际提问
第一人称需求:已有test.xml需要可读HTML报告,现有Ant流程不适用;这里不执行测试。
- Conan重复及缺失bom-ref反馈
第一人称生产者问题:组件引用重复、依赖目标不存在,是需求证据,不推断市场规模。
- GEDCOM FAMC与CHIL不一致提问
第一人称实例:家庭单向引用不一致,需要检查,不自动捏造反向声明。
- GEDCOM祖先循环提问
第一人称需求:寻找本地或在线自身祖先循环检查;夫妻环是另一种图。
- 官方CycloneDX JSON 1.6模式
仅用于正确性参考。本工具做限定的引用语义检查,不认证完整模式。
- junitparser源码
用于嵌套套件和用例事件的独立读取;生产者格式仍需明确支持。
- python-gedcom源码
用于指针和CONT/CONC文本的独立读取,不推断家谱事实。
- SARIF Windows源码基址反馈
第一人称monorepo扫描结果路径无法定位的反馈;本工具接受显式目录URI映射,不遍历本地源码。
- Wheel RECORD哈希审计提问
2015年用户修改wheel后安装无警告的反馈;是归档审计需求来源,不是当前pip行为声明。
- Python wheel二进制分发规范
正确性参考:文件名、标签、RECORD及签名例外;不作为需求量证据。
- Python核心元数据规范
当前Metadata-Version 2.6;本工具保留头/正文,不认证全部元数据字段语义。
- Microsoft SARIF SDK源码
目录URI解析的独立读回参考;不启用读取源码或指纹功能。
本分类工具使用说明
展开工具,查看操作步骤、可调选项和支持范围,再直接进入工作区。
JUnit离线测试报告读取本地JUnit XML结果,区分测试用例实际状态与声明计数,将完整失败详情和日志下载为离线报告。
把CI导出的测试XML转换为可读报告,无需运行测试。保留嵌套测试套件路径、重名用例、多条失败事件及原样文本日志,并一并交付原文件。
操作步骤
- 选择一份或多份导出的JUnit XML,或粘贴一个文档。
- 检查用例状态、混合事件、嵌套路径及独立保留的套件声明计数。
- 下载完整离线HTML、JSON/CSV,并另行保留原XML。
可调选项
- 保护CSV中的公式样文本
- 默认开启
能力与限制
- 最多20个UTF-8文件,每个5 MiB、合计10 MiB;或粘贴一个最大5 MiB的XML文档。所有输入合计最多10,000个用例、50,000个XML元素和64层元素深度。选择文件优先于粘贴。下载总计最多10 MiB,完整报告超限时整体拒绝;表格预览前200个用例。
- 支持嵌套testsuites/testsuites及testsuite/testcase、failure/error/skipped事件、普通properties和system-out/system-err。一个用例可含多条事件,摘要仍只计一次;不同状态同时出现会标为mixed。重名用例保持独立序号,不合并。
- 用例属性支持name、classname、time、assertions、file、line、url和id。未知状态元素或属性、flaky/rerun扩展、DTD和外部实体均拒绝。空套件必须明确声明tests="0"。需要修正或重新导出不支持的生产者格式,不会将其归为通过。
- 套件/容器声明的计数与time独立保留。只有每个用例都提供有限非负time时,measuredSeconds才给出其总和,否则为null/未知;该值不等于套件墙钟时间。HTML将所有文本转义,不执行脚本或读取源码路径。JSON保留全部事件、套件日志及属性,CSV保留全部用例,可启用公式保护;原XML另行保留,不复制到下载文件中。
- 报告超过20,000字符时,结果文本与复制动作使用紧凑预览。完整report.json、CSV和HTML请下载。 表格长单元格超过2000字符时仅显示前2000加省略号;完整下载不截断。
SARIF规则与位置离线报告读取本地SARIF 2.1.0多次运行结果,解析规则、归档索引与目录URI基址,保留未定位、未知状态和完整原结果。
把扫描器导出的SARIF交给离线报告:先核对规则来源、位置与基址,再解释结果。缺失源码路径、未知抑制状态和无位置结果都需保留,不能因无法定位就消失。
操作步骤
- 选择SARIF或粘贴,必要时提供目录URI基址映射。
- 查看规则解析、主/相关/代码流位置、缺失基址和原抑制/基线状态。
- 下载完整报告和原件;在扫描器中核对消息模板或未支持的关系。
可调选项
- 保护CSV类公式文本
- 默认开启
能力与限制
- 选择1个或粘贴UTF-8 SARIF 2.1.0 JSON,最多5 MiB;可选目录URI基址JSON映射最多1 MiB。最多10000结果、每次运行10000归档声明、全部50000位置、200000 JSON值、64层。全部下载合计10 MiB,超限原子拒绝;多次运行独立解析。
- 支持driver/extension规则的ID、索引和GUID;结果与规则声明冲突、无效索引拒绝。未声明规则、无位置、仅逻辑位置、缺失/循环基址保持可见。原baselineState与suppression kind/status保留,未知值标成unknown,不自动筛除结果。
- 解析artifact索引、直接URI和目录originalUriBaseIds链;可选映射以绝对目录URI覆盖基址。基址必须以/结尾,不含查询/片段;反斜线、错误转义或非目录基址拒绝。相对URI无基址保持未解析,不猜本机路径。不读源码、文件系统或网络。
- 保留每个完整originalResult,包括主/相关/code-flow位置、原区域、抑制、基线、消息和未知字段;report.json与original.sarif.json保留大整数和小数原数值token。消息text/markdown/id按字面显示,不执行Markdown,也不展开messageStrings、arguments或完整关系图;不是完整SARIF模式认证。
- 表格预览前200行,超过2000字符的单元格仅前2000字符加省略号;超过20000字符的文本/复制为摘要预览。完整JSON、CSV、转义离线HTML与精确保留原件在下载文件中。
CycloneDX依赖引用审查审查本地CycloneDX 1.6的bom-ref声明与依赖边,显示重复、悬空引用、外部URN和无歧义依赖环。
在将构建生成的SBOM交给其他系统前,检查跨记录引用问题。保留完整原文,定位普通JSON语法检查无法解释的重复声明和连接错误。
操作步骤
- 打开或粘贴由构建导出的CycloneDX 1.6 SBOM。
- 检查重复声明路径、未解析边和SCC,并确认是否显式定义根组件。
- 下载完整引用报告和original.json,修正生成器后重跑。
可调选项
- 保护CSV中的公式样文本
- 默认开启
能力与限制
- 一个UTF-8 JSON文件或粘贴内容最多5 MiB;最多10,000个bom-ref声明、50,000条dependsOn边、200,000个JSON值,深度64。选择文件优先。下载合计最多10 MiB;完整报告可能先达到输出预算,届时整体拒绝;预览前200行。
- 仅支持CycloneDX JSON 1.6,检查基本组件/服务/依赖形状,不认证完整官方模式。识别嵌套组件/服务及metadata.component;遍历原文全部bom-ref声明并保留JSON指针。其他对象不能充当组件/服务图目标;1.4/1.5拒绝。
- 重复bom-ref会显示所有原始路径,相应边排除,不覆盖已有对象。重复dependency ref行明确报告,排除这些来源行的全部边;同一行重复目标保留为duplicate_edge。缺失本地引用、错误目标类型及未解析外部urn:cdx分别标明。
- SCC/自环仅使用无歧义内部组件/服务依赖边。可达性要求metadata.component中显式且唯一的bom-ref,不按首个组件猜根。original.json保留原始JSON字节、精确数字和图分析范围外字段。provides、compositions、formulation、vulnerabilities只保留,不分析;不联网解析、扫描漏洞或判断合规。
- 报告超过20,000字符时,结果文本与复制动作使用紧凑预览。完整report.json、CSV和HTML请下载。 表格长单元格超过2000字符时仅显示前2000加省略号;完整下载不截断。
Wheel归档与RECORD核验核对本地wheel文件名、元数据、标签与每个RECORD哈希和大小,明确区分完整性失败、不支持的哈希和未验证签名。
安装未知wheel前,先查看归档声明与字节是否一致。此任务只读取文件,不导入包;坏哈希交付失败报告,不能用“已生成报告”代替“核验通过”。
操作步骤
- 选择保留原文件名的wheel,或加载固定小文件示例。
- 查看完整性状态、已核验文件、失败、未知哈希与未验证签名。
- 下载全部核验报告,并用可信生产者核对失败项;不要将报告当作安全或安装许可。
可调选项
- 保护CSV类公式文本
- 默认开启
能力与限制
- 只选择1个32 MiB以内的.whl文件,不接受粘贴。ZIP最多10000项、展开后64 MiB、每项压缩比200;危险路径、重复、CRC错误、加密、多卷和ZIP64拒绝。JSON报告最多200000值,全部下载合计10 MiB;任一预算超限原子拒绝,不输出部分核验。
- 支持Wheel-Version 1.0与Metadata-Version 1.1、1.2、2.1–2.6。必须恰有对应文件名分发名称和字面版本的dist-info目录及METADATA/WHEEL/RECORD。名称按连字符、下划线和点规范化比较,版本按字面比较,不推断PEP440等价。可选build和压缩标签与WHEEL逐项核对。折行/重复头、描述正文和入口点保留为文本。
- 核验每个归档文件的RECORD URL安全规范Base64 SHA256/384/512及大小;未列出、缺失、哈希或大小不符、元数据不一致均为integrityStatus=failed。SHA224及其他未知算法为unsupported_hash/incomplete;MD5/SHA1禁止并记为失败。失败仍交付完整诊断报告,不宣称通过。
- RECORD自身必须空哈希/大小;旧RECORD.jws/p7s签名文件明确signature_not_verified,不执行验签。verified_recorded_payload只描述已列出负载的核验,不证明包真实性、安装安全、主机ABI或平台适用性。不安装、导入、执行入口点或向磁盘解包。
- 报告预览最多200行,每个超过2000字符的单元格只显示前2000字符加省略号。报告超过20000字符时文本/复制为摘要预览;完整JSON、CSV、HTML始终在下载文件中,未知哈希和例外可见。
GEDCOM引用与祖先关系审查检查UTF-8 GEDCOM 5.5.1家族/个人引用、互反关系及声明祖先SCC,保留原行号和亲缘分类。
导入家谱前,定位悬空或单向家庭引用以及声明的祖先循环。保留原始导出和证据,不新增亲属或推断生物关系。
操作步骤
- 打开UTF-8 GEDCOM 5.5.1导出,或粘贴完整源码。
- 检查带行号的目标、互反问题、亲缘声明和祖先SCC成员。
- 下载original.ged及完整报告,回到来源系统核实事实后再修正。
可调选项
- 保护CSV中的公式样文本
- 默认开启
能力与限制
- 一个UTF-8文件或粘贴内容最多5 MiB、50,000个物理行、10,000个顶层记录(含HEAD/TRLR)、64层层级;声明关系与派生祖先边合计最多50,000条。选择文件优先。完整下载合计最多10 MiB,超限整体拒绝;预览前200行。
- HEAD/GEDC/VERS必须明确为5.5.1,HEAD/CHAR为UTF-8。original.ged保留原始BOM和CRLF/LF/CR换行。GEDCOM 7、ANSEL、UTF-16、层级跳跃、重复xref、空物理行或非法指针均拒绝;未知标签保留在源码节点JSON和原字节中。
- 检查INDI的FAMC/FAMS与FAM的CHIL/HUSB/WIFE目标类型;报告悬空、错误类型、重复引用和缺少互反的原行号。CONT/CONC文本会正确续接,同时保留原层级及value字段;指针续行和嵌套CONT/CONC拒绝,不猜测。
- 祖先SCC仅使用声明的父母到孩子边。保留birth/adopted/foster/sealing/unknown/multiple分类及原PEDI值/行号,这些声明不证明生物事实;夫妻无向环不视为祖先循环。完整报告包括每条引用、问题和SCC成员,不穷举所有简单环。不编辑记录、推断关系、导入或写数据库。
- 超过4096个UTF-8字节的值使用value:null、external-original-value状态和original.ged的精确字节位置。多行逻辑值提供按concat连接的有序字节/文本片段,保留CONT换行与CONC拼接;此类null表示值存在于原件中,不表示缺失。
- 报告超过20,000字符时,结果文本与复制动作使用紧凑预览。完整report.json、CSV和HTML请下载。 表格长单元格超过2000字符时仅显示前2000加省略号;完整下载不截断。