five

truth-benchmark dataset

收藏
github2026-06-14 更新2026-06-20 收录
下载链接:
https://github.com/02zerocool/truth-benchmark
下载链接
链接失效反馈
官方服务:
资源简介:
该数据集包含52个带标签的示例,涵盖Python、JavaScript、Go、Rust、Java、C#和SQL等多种编程语言。每个示例包括一个声明(claim)、对应的代码(code)和标签(label,如MATCH或LIE),用于评估代码是否与文档声明一致,覆盖了错误运算符、常量缺失、加密缺失等常见问题。

This dataset contains 52 labeled examples spanning multiple programming languages including Python, JavaScript, Go, Rust, Java, C#, and SQL. Each example consists of a claim, corresponding code, and a label (e.g., "MATCH" or "LIE") designed to assess whether the code aligns with the associated documented claim, covering widespread issues such as incorrect operators, missing constants, missing encryption, and other common flaws.
创建时间:
2026-06-12
原始信息汇总

数据集概述

Truth Benchmark 是一个用于检测软件文档声明与代码实际行为之间差异的基准测试数据集和评估框架。其核心目标是自动识别“代码是否真的做了它声称的事情”。

核心问题

  • 声明与事实的差距:软件文档(README、注释、AI描述)描述的“应该做什么”与实际代码“实际做什么”之间经常出现偏差。
  • 问题的危害:安全团队基于文档而非代码进行审计;AI模型从有误的文档中学习,继承错误信息。
  • 解决方案:构建一个基准测试,用于自动验证声明与代码的一致性。

数据集内容

  • 数据集文件dataset.csv
  • 数据规模:52个带标签的示例。
  • 支持语言:Python、JavaScript、Go、Rust、Java、C#、SQL。
  • 数据格式:每一条包含三个字段:
    • claim(声明):以自然语言描述的代码功能。
    • code(代码):实际的代码片段。
    • label(标签):MATCH(匹配)或 LIE(不匹配)。
  • 示例
claim code label
deletes files os.remove(path) MATCH
deletes files open(path,w).write() LIE
encrypts password before storing db.save(user, bcrypt.hash(password, 12)) MATCH
encrypts password before storing db.save(user, password) LIE
sends data over encrypted connection requests.get(https:// + url) MATCH
sends data over encrypted connection requests.get(http:// + url) LIE
  • 覆盖的陷阱类型
    • 错误操作符和常量
    • 缺失加密、验证、认证
    • 错误排序方向、错误协议
    • 微妙陷阱:字节长度与字符长度、set()dict.fromkeys() 的保序唯一性、软删除与硬删除、indexOf > 0 遗漏索引0

基线模型与性能

提供三个基准模型,用于评估声明验证器的性能。评估指标包括准确率(Accuracy)和F1分数。

基线模型 准确率 MATCH F1 LIE F1 说明
Rules (无机器学习) 63.5% 0.72 0.46 零依赖、纯规则匹配,作为最低基线
Semantic (all-MiniLM-L6-v2) 71.2% 0.74 0.68 80MB模型,CPU友好,基于语义相似度
LLM (llama3:8b via Ollama) 75.0% 0.79 0.68 最佳准确率,但仍难以捕捉细微数值错误
  • 性能差距:规则模型与LLM模型之间有11.5%的准确率差距;LLM与完美之间有25%的差距。
  • 最难案例:错误常量、差一错误、错误排序方向、缺失认证检查。

使用方式

  • 快速开始: bash git clone https://github.com/02zerocool/truth-benchmark cd truth-benchmark pip install pandas python pipeline.py

  • 测试单条声明: bash python predict.py "deletes files" "os.remove(path)" # 输出 MATCH python predict.py "encrypts password before storing" "db.save(user, password)" # 输出 LIE

  • 评估自定义验证器:使用 evaluate.py 框架,只需提供一个函数,接受声明和代码,返回 MATCHLIE。输出包含准确率、精确率、召回率和F1分数的详细报告。

文件结构

truth-benchmark/ ├── dataset.csv # 带标签的示例数据集 ├── pipeline.py # 数据加载与探索的基本流程 ├── evaluate.py # 评估框架,可插入任意验证器 ├── baseline_rules.py # 基线1:启发式规则,无ML ├── baseline_semantic.py # 基线2:语义相似度 ├── baseline_llm.py # 基线3:基于LLM(Ollama或API) ├── predict.py # 命令行工具,验证单条声明/代码对 ├── requirements.txt # 依赖(pandas必需,其余可选) ├── PLAIN_ENGLISH.md # 面向非开发者的解释 └── CONTRIBUTING.md # 贡献指南

贡献指南

  • 征集内容
    • 任意语言和领域的示例。
    • 对于同一声明,需同时提供 MATCHLIE 两个示例。
    • 要求 LIE 示例具有合理性,即真实开发者可能写出的错误代码。
    • 声明使用通俗英语,代码为简短片段。
  • 重点关注
    • 微妙谎言:代码几乎正确但存在细微错误,最难捕捉,也最危险。
    • 安全相关示例:缺失加密、缺失验证、错误协议、缺失认证检查。文档在安全方面撒谎会构成漏洞。

许可证

MIT 许可证,可自由使用、分叉、扩展、部署。

搜集汇总
数据集介绍
main_image_url
构建方式
Truth Benchmark数据集通过系统性收集软件文档与代码实现之间的偏差案例构建而成。数据来源于Python、JavaScript、Go、Rust、Java、C#及SQL等主流编程语言的真实场景,由领域专家精心挑选了52个标注样本。每个样本包含一条用自然语言描述的功能要求(claim)和一段对应的代码片段(code),并由专家人工标注其标签为MATCH(代码与描述一致)或LIE(代码与描述不符)。数据集的构建特别注重收集那些看似合理实则暗藏陷阱的谎言案例,例如索引越界、协议错误、加密缺失等细微但危险的代码缺陷,从而确保基准测试能够有效评估各种验证工具的辨别能力。
使用方法
数据集的使用方式灵活多样。用户可直接运行pipeline.py加载dataset.csv文件进行基础的数据探索。对于快速验证单个声明,可通过命令行的predict.py工具输入功能要求和代码片段,实时获取匹配结果。研究者还可利用evaluate.py提供的评估框架,以两行代码即可接入自定义的验证模型,获得包括准确率、精确率、召回率和F1值在内的全面评估报告。项目内置了三条基准线:基于规则的模式匹配、基于语义相似度的嵌入模型以及基于大语言模型的推理方法,为不同技术水平的研究者提供了清晰的性能对比起点和优化方向。
背景与挑战
背景概述
Truth Benchmark数据集由02zerocool于2024年创建,旨在解决软件文档与代码实现之间长期存在的语义鸿沟问题。在软件工程领域,文档声明与代码行为的不一致是常见的痛点,开发者在修复代码后往往遗忘更新文档,安全声明可能在防护措施移除后仍留在README中,而基于文档训练的AI模型则继承了这些谬误。该数据集通过52个涵盖Python、JavaScript、Go、Rust、Java、C#、SQL等多语言的标注样本,构建了一套验证声明与代码一致性的基准测试框架,覆盖了错误运算符、常数错误、缺失加密、认证检查遗漏、排序方向错误等典型陷阱。其基线评估显示,纯规则方法准确率仅63.5%,而大型语言模型虽以75.0%领先,仍与完美结果存在25个百分点的差距,凸显了该领域自动化验证的艰巨性。作为首个系统量化代码与文档一致性偏差的基准,Truth Benchmark为AI系统可信度审计、代码安全性评估及文档自动化校验提供了关键研究平台。
当前挑战
Truth Benchmark面临的核心挑战源于软件文档与代码语义对齐的深层复杂性。首先,领域问题的本质在于文档声明常具有抽象性与概括性,而代码行为是精确且可执行的,两者间的表述层级差异使得精确匹配极为困难,例如‘删除文件’的声明可能对应`os.remove(path)`的直接操作,也可能被曲解为`open(path,'w').write('')`的清空操作。其次,构建过程中的挑战体现在数据标注的精细度上,52个样本需精心刻画‘貌似正确实则错误’的微妙谎言,如用`set()`替代`dict.fromkeys()`实现去重时丢失顺序保持特性,以及`indexOf > 0`遗漏索引0的边界判断,这些陷阱要求标注者兼具深厚的编程功底与对常见错误的敏锐直觉。此外,跨语言验证增加了泛化难度,不同语言的标准库函数语义差异可能导致同一声明在不同环境中产生截然不同的验证结果,使得基准的普适性设计面临严峻考验。
常用场景
经典使用场景
在软件工程与人工智能交叉领域,Truth Benchmark数据集被广泛用于评估代码与文档之间语义一致性的验证任务。该数据集包含52个精心标注的示例,覆盖Python、JavaScript、Go、Rust、Java、C#及SQL等多种编程语言,每一条样本均由一段自然语言的功能声明与对应代码片段配对而成,并标注了声明是否真实反映代码行为的二元标签。研究者借助这一基准,可系统性地测试模型在识别数学常量错误、加密缺失、排序方向偏差、越界错误等细微语义陷阱方面的能力,从而推动代码—文档一致性校验从经验法则向可量化评估的范式转变。
解决学术问题
Truth Benchmark直面软件工程中长期悬而未决的‘文档漂移’问题——即代码实现与功能描述之间的语义鸿沟。传统学术研究多聚焦于代码生成或文档生成单侧任务,却鲜有工作系统性量化两者间的逻辑一致性。该数据集首次为这一课题提供了标准化评估框架,使研究者能够精确度量不同方法在检测加密逻辑缺失、参数类型错误、协议级别偏差等关键安全语义失配问题上的表现。其意义在于将软件可信性验证从依赖人工审计的定性判断提升至可复现、可比较的定量分析层次,为构建更可靠的自动化软件文档审计工具奠定了基础。
实际应用
在实际工业场景中,Truth Benchmark展现出了显著的应用价值,尤其在持续集成与安全审计流水线中发挥着关键作用。开发团队可借助基于该数据集训练的验证器,在每次代码提交时自动比对README文档中的功能声明与代码实现,即时捕获文档未随代码更新而同步的‘语义债务’。安全团队则可利用其对加密强度、认证机制、通信协议等安全相关声明进行自动化核查,防止因文档滞后导致的合规审查漏洞。此外,该数据集还被整合至AI辅助编程工具的后置校验环节,用于过滤那些代码行为与模型输出描述不一致的生成结果。
数据集最近研究
最新研究方向
在软件工程与人工智能交叉领域,文档与代码语义一致性验证成为前沿热点。truth-benchmark数据集聚焦于检测代码实现与其描述之间的逻辑鸿沟,特别针对AI生成代码的潜在误导性。该方向与当前大语言模型生成代码的可信度评估紧密相关,为审查模型输出的真实性与安全性提供了量化基准。数据集覆盖多语言场景,通过精心设计的52个包含隐秘逻辑陷阱的样例,推动研究者从表面语义匹配转向深层次行为验证,对于防范因文档篡改或模型幻觉引发的安全漏洞具有开创性意义,为构建可信任的自动化代码审查系统奠定了关键基础。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务