本地测试、扫描、依赖、归档与家族引用审查
本地检查JUnit事件、SARIF规则与位置、CycloneDX引用、wheel RECORD和GEDCOM关系;使用完整下载与明确未支持状态交付。
按真实导出任务选择报告
CI已运行测试、只剩XML时使用JUnit;生成的SBOM有引用矛盾时使用CycloneDX;家庭导出有单向指针或声明祖先环时使用GEDCOM。通用XML/JSON格式化不能判断这些跨记录关系。
选择本地文件或粘贴完整内容。表格最多预览200行,成功下载包含全部本任务结果。原导出另行保留。不启动测试运行器、安装SBOM包、导入家谱、远程解析引用或运行用户脚本。
| 任务 | 输入 | 结果及有用核验 |
|---|---|---|
| JUnit | 一份或多份导出的JUnit XML | 离线HTML/JSON/CSV,对照生产者用例状态 |
| SARIF | 2.1.0 JSON + 目录URI覆盖 | 完整原结果与定位状态,缺失基址不隐藏 |
| CycloneDX | CycloneDX JSON 1.6 | 完整引用路径及边,修复生成器ID而非覆盖对象 |
| Wheel | .whl归档,原文件名 | 每个RECORD哈希/大小、元数据与标签;失败状态明确 |
| GEDCOM | 明确头部声明的UTF-8 GEDCOM 5.5.1 | 指针、互反、祖先SCC和original.ged,回来源系统核实事实 |
JUnit用例和事件分开计数
示例有三个用例:一个通过、一个含两条failure、一个跳过。摘要是一个失败用例和三个状态事件。同一用例同时有skipped和failure会标为mixed。重名用例保留独立序号,不合并。
套件/容器声明的计数和墙钟time独立于用例状态。仅当每个用例都有有限非负time时measuredSeconds才给出总和,缺少time则未知。示例容器time为99,而用例耗时总和约0.3。
支持嵌套testsuites/testsuites、testsuite/testcase、普通properties和日志。未知状态属性/元素、flaky/rerun和DTD/实体拒绝。空套件必须明确零测试。完整离线HTML转义日志、失败消息和属性文本,不渲染用户HTML。原XML由你另行保留,不重复复制到下载文件。
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,A依赖B,B回到A。报告显示A/B SCC,同时独立显示缺失目标和外部URN。SCC是声明依赖环,不自动代表非法或不安全。
遍历原文全部bom-ref并保留JSON指针。重复声明显示所有路径,触及歧义声明的边被排除;重复依赖来源行也明确显示并排除。其他对象不能替代组件/服务目标。
仅在metadata.component有明确且唯一bom-ref时分析根可达性。original.json保留全部原字节及精确数字。provides、compositions、formulation、vulnerabilities及其他关系只保留,不进入依赖分析。只接收1.6并做基本结构检查;完整官方模式、漏洞扫描和合规判断另行处理。
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行为。
GEDCOM关系是需要核实的声明
示例有收养父母到孩子的声明,以及缺失的CHIL目标。每项问题带原行号。INDI的FAMC/FAMS必须指向FAM;FAM的CHIL/HUSB/WIFE必须指向INDI。缺少互反只报告,不补造。
祖先SCC使用声明的有向父母到孩子边。保留adopted、foster、sealing、birth、unknown/multiple及原亲缘值,图不证明生物事实。夫妻环不会变成祖先环。未知标签和原UTF-8 BOM/换行字节均可保留。
CONT接入前一物理行的换行,CONC直接拼接。超过4096个UTF-8字节的值使用value:null、external-original-value和original.ged精确字节位置;逻辑续接值提供按concat拼接的有序字节/文本片段。这类null表示值存在于原件,不表示缺失。JSON与original.ged必须一起下载,核对长文本时按定位重建。
同时检查各项预算并按实际错误恢复
完整10 MiB下载预算可能先于行数上限触发,失败不返回部分报告。不要删除未知记录来强行生成结果;只有不改变任务含义时才在生产者中修正或拆分。
报告JSON超过20,000字符时,结果文本和复制按钮提供行数及fullReportInDownload:true的紧凑预览。完整交付请下载report.json、CSV和HTML。
表格只显示前200行;长单元格仅前2000字符加省略号。超过20000字符的文本和复制结果是摘要预览,完整JSON/CSV/HTML不截断。接收方应读取下载文件,不能把复制预览当作完整报告。
| 任务 | 输入 | 其他上限 |
|---|---|---|
| JUnit | 20文件,每个5 MiB、总计10 MiB;粘贴5 MiB | 10000用例、50000 XML元素、64层 |
| SARIF | 1文件/粘贴5 MiB;基址JSON 1 MiB | 10000结果,每run 10000归档,50000位置,200000 JSON值,64层 |
| CycloneDX | 单文件/粘贴5 MiB | 10000声明、50000边、200000 JSON值、深度64 |
| Wheel | 1文件32 MiB,不接受粘贴 | 10000 ZIP项、64 MiB展开、压缩比200、200000报告JSON值 |
| GEDCOM | 单文件/粘贴5 MiB | 50000物理行、10000顶层记录、深度64、50000声明关系与祖先边合计 |
- JUnit:由生产者重新导出支持的状态,不把flaky伪装为通过。
- CycloneDX:修复生成器中的唯一性和目标引用后再跑;外部URN使用其独立工作流。
- GEDCOM:在来源系统修正格式、版本、编码或重复xref,编辑单向关系前核实证据。
- 取消后用合法源码重新运行。保存完整下载,不把前200行预览当最终交付。
参考资料
- 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加省略号;完整下载不截断。