CodevBench
收藏资源简介:
Codev-Bench是一个细粒度的、真实世界的、仓库级别的、以开发者为中心的评估框架。它评估代码完成工具是否能够准确捕捉开发者的即时意图,并在多样化的细粒度上下文中建议适当的代码片段。该数据集不仅重现了用户在开发过程中可能遇到的各种子场景,还构建了基于单元测试的评估方法,以更准确地评估各种大型语言模型生成的代码质量。数据集包括从真实GitHub仓库中提取的单元测试类和函数,以及通过GPT-4辅助完成的环境依赖安装和单元测试执行。此外,数据集还包含了各种子场景的提示和预测响应,供研究人员和开发者使用。
Codev-Bench is a fine-grained, real-world, repository-level, developer-centric evaluation framework. It assesses whether code completion tools can accurately capture developers' immediate intentions and suggest appropriate code snippets within diverse fine-grained contexts. This dataset not only replicates a wide range of sub-scenarios that developers may encounter during the software development lifecycle, but also establishes a unit test-based evaluation methodology to more precisely assess the code quality generated by various large language models (LLMs). The dataset comprises unit test classes and functions extracted from real GitHub repositories, alongside environment dependency installation and unit test execution workflows assisted by GPT-4. Additionally, the dataset contains prompts and prediction responses across various sub-scenarios for researchers and developers to utilize.
Codev-Bench 数据集概述
基本信息
- 许可证: Apache 2.0
- 任务类别: 文本生成
- 语言: 英语
- 标签: 代码生成
- 数据规模: 1K<n<10K
简介
Codev-Bench(代码开发基准)是一个细粒度、真实世界、仓库级别和开发者中心的评估框架。该基准评估代码补全工具是否能够准确捕捉开发者的即时意图,并在多样化的细粒度上下文中建议适当的代码片段。
方法论
- 数据提取: 从真实的GitHub仓库中提取单元测试类和函数,并通过GPT-4辅助完成环境依赖的安装和单元测试的执行。
- 工具使用: 使用pytest trace提取单元测试的执行轨迹,使用tree-sitter解析目标函数的抽象语法树(AST)。
使用场景
数据集将开发者在IDE中的实时补全需求细分为以下部分:
- 场景1: 完成完整的代码块(包括函数、条件逻辑块、循环逻辑块、注释、普通语句等)。
- 场景1.1: 待完成的代码块上下文完全完整。
- 场景1.2: 待完成的代码块主体为空,但函数的外部上下文完整。
- 场景1.3: 待完成的代码块后续上下文完全为空。
- 场景2: 完成特定代码块内的部分代码。
- 场景2.1: 完成代码块内的部分代码。
- 场景2.2: 代码块已完整,不应添加任何代码。
- 场景3: 基于其他文件中定义的类和函数完成代码。
- 场景4: 基于项目中相关和相似的代码完成代码。
数据下载
- 源代码仓库: Source_Code.tar.gz
- 源代码仓库副本: Source_Code_Copy.tar.gz
- 元数据: metadatas.tar.gz
- 提示信息: prompts.tar.gz
- 预测结果: predicts.tar.gz
安装与验证
- 环境创建: 推荐使用conda创建虚拟环境,并安装必要的依赖包。
- 环境构建: 运行
create_env.sh脚本构建执行环境。 - 单元测试验证: 运行
src/prepare.py脚本验证单元测试是否成功执行。
提示与预测
- 提示结构: 提示信息包括函数名、单元测试ID、目标代码块的文件路径和行位置等。
- 预测响应: 预测响应包括模型的原始响应和解析后的目标代码。
评估
- 单元测试运行: 将预测代码填充到光标位置并运行相应的单元测试。
- 结果总结: 运行
src/evaluate.py脚本生成和总结评估结果。
实验结果
- 场景1.1: 评估了部分流行的通用LLMs和代码LLMs在该子数据集上的表现。




