Skip to content

feat(validation): 添加可执行的数据集完整性校验器 - #86

Open
Qiyuanqiii wants to merge 1 commit into
Tencent:mainfrom
Qiyuanqiii:feat/dataset-integrity-validator
Open

feat(validation): 添加可执行的数据集完整性校验器#86
Qiyuanqiii wants to merge 1 commit into
Tencent:mainfrom
Qiyuanqiii:feat/dataset-integrity-validator

Conversation

@Qiyuanqiii

@Qiyuanqiii Qiyuanqiii commented Aug 2, 2026

Copy link
Copy Markdown

背景

SCHEMA.md 已定义 VulnGym 数据发布时需要满足的结构和跨文件不变量,但仓库目前缺少统一、可直接运行的校验入口。数据贡献者需要分别检查 JSONL、节点位置和 reports/entries 关联,容易遗漏数据漂移或编码损坏。

本 PR 不修改现有数据,新增一个纯标准库数据集完整性校验器。

实现

  • 新增 examples/validate_dataset.py
  • 校验 UTF-8、JSONL 对象结构、文件结尾换行和稳定字段顺序。
  • 校验 entry/report ID、commit、repo URL、source link、origin 和 verify。
  • 校验节点必需字段,以及正整数和 "start-end" 两种行号形式。
  • 校验 entries.jsonlreports.jsonl 的双向关联:
    • report 是否存在对应 entries;
    • entry_ids 是否完整、有序且无重复;
    • num_entries 是否准确;
    • report 元数据是否与 entries 的规范值一致;
    • vuln_ids 是否等于 entries 的规范化并集。
  • 检测 U+FFFD、典型乱码标记,以及中文旁异常 ASCII ?
  • 支持 --entries--reports--json-out,失败时返回非零退出码,可直接接入 CI。
  • 新增 7 个 unittest,覆盖正确数据、跨文件错配、倒序区间、重复 ID、排序漂移、元数据漂移和文本损坏。
  • 同步更新中英文 README。

验证

python -m unittest discover -s tests -v
python examples/validate_dataset.py
git diff --check origin/main...HEAD

验证截图

单元测试与分支状态

image

数据集完整性与远端校验

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant