CodeSmellData
收藏arXiv2024-12-26 更新2024-12-31 收录
下载链接:
http://arxiv.org/abs/2412.18989v1
下载链接
链接失效反馈官方服务:
资源简介:
CodeSmellData是由威廉与玛丽学院和达卡大学的研究团队创建的数据集,旨在评估大型语言模型生成代码异味的倾向性。该数据集包含142,817条方法级代码异味实例,涵盖了13种不同类型的代码异味,数据来源于GitHub上高星级的Python开源项目。数据集通过Pylint工具分析并手动验证,确保了数据的准确性和代表性。CodeSmellData的应用领域主要集中在软件工程中代码质量的评估,特别是通过分析大型语言模型生成的代码中可能存在的设计缺陷,帮助开发者更好地理解和改进代码生成模型。
CodeSmellData is a dataset created by research teams from the College of William & Mary and the University of Dhaka, aiming to evaluate the propensity of large language models (LLMs) to generate code smells. This dataset contains 142,817 method-level code smell instances covering 13 distinct types of code smells, and is sourced from high-starred Python open-source projects on GitHub. The dataset was analyzed via the Pylint tool and manually verified to ensure its accuracy and representativeness. The main application domain of CodeSmellData focuses on code quality assessment in software engineering, specifically by analyzing potential design defects in code generated by large language models to help developers better understand and improve code generation models.
提供机构:
威廉与玛丽学院, 达卡大学
创建时间:
2024-12-26
搜集汇总
数据集介绍

构建方式
CodeSmellData数据集的构建过程基于GitHub上流行的开源Python仓库,通过Galeras工具挖掘了232,715个方法。筛选标准包括2022年1月至2024年12月间发布的仓库,且至少拥有3,500颗星,以确保所选仓库的维护性和高质量。随后,使用Pylint对这些方法进行分析,检测出79,574个至少包含一个代码异味的方法。通过随机抽样,两位作者手动验证了每个代码异味类型的实例,确认了真阳性(TP)和假阳性(FP),最终生成了包含142,817个代码异味实例的CodeSmellData数据集,涵盖13种不同类型的代码异味。
特点
CodeSmellData数据集的特点在于其专注于方法级别的代码异味,涵盖了13种不同类型的代码异味,包括Convention、Refactor和Warning三大类。该数据集通过Pylint工具精确识别了每个代码异味的位置,确保了数据的准确性和可解释性。此外,数据集的构建过程经过严格的筛选和验证,确保了数据的高质量和代表性。CodeSmellData的独特之处在于其不仅提供了代码异味的实例,还为每个实例提供了详细的上下文信息,使得研究者能够深入分析代码异味的生成机制。
使用方法
CodeSmellData数据集的使用方法主要围绕其与CodeSmellEval基准的结合。研究者可以通过该数据集评估大型语言模型(LLMs)在代码生成任务中引入代码异味的倾向。具体步骤包括:首先,使用LLM的tokenizer对CodeSmellData中的序列进行编码;其次,通过LLM的前向方法计算每个token的logits;接着,应用softmax函数计算每个预期值的概率;然后,使用对齐函数(δ)将token分组为特定的代码异味结构;最后,通过中心趋势统计量计算每个代码异味的PSC(Propensity Smelly Score)。这一流程能够有效评估LLMs在生成代码时引入代码异味的倾向,为代码质量评估提供了新的视角。
背景与挑战
背景概述
CodeSmellData数据集由William & Mary大学和达卡大学的研究团队于2024年创建,旨在评估大语言模型(LLMs)在代码生成任务中产生代码坏味道(code smells)的倾向性。代码坏味道是软件工程中常见的设计和实现问题,通常会导致代码的可读性和可维护性下降。随着LLMs在代码生成、代码补全等任务中的广泛应用,传统评估指标如BLEU、CodeBLEU等无法有效衡量生成代码的质量,尤其是代码坏味道的引入。CodeSmellData包含142,000个方法级别的代码坏味道实例,涵盖了13种不同类型的坏味道,数据来源于GitHub上的开源Python项目。该数据集的引入为LLMs的代码生成质量提供了新的评估基准,推动了软件工程领域对代码生成模型可靠性的深入研究。
当前挑战
CodeSmellData数据集在构建和应用过程中面临多重挑战。首先,代码坏味道的检测和分类本身具有复杂性,传统静态分析工具如Pylint在识别坏味道时存在误报和漏报问题,导致数据集的构建需要大量的人工验证和筛选。其次,LLMs生成的代码质量评估不仅依赖于准确性,还需考虑代码的结构和设计问题,传统评估指标无法全面反映代码坏味道的引入倾向。此外,数据集的构建依赖于GitHub上的开源项目,这些项目的代码质量参差不齐,可能影响数据集的代表性和泛化能力。最后,LLMs在生成代码时倾向于引入特定类型的坏味道,如何解释这一现象并设计有效的防御机制,仍是未来研究的重要方向。
常用场景
经典使用场景
CodeSmellData数据集主要用于评估大型语言模型(LLMs)在代码生成任务中引入代码坏味的倾向。通过该数据集,研究人员能够系统地分析LLMs生成的代码中是否存在诸如“简化条件”、“合并isinstance”等常见的代码坏味。这一数据集为LLMs的代码生成质量提供了新的评估维度,帮助开发者更好地理解模型在生成代码时的潜在问题。
衍生相关工作
CodeSmellData数据集的推出催生了一系列相关研究工作。例如,基于该数据集的研究进一步探索了LLMs生成代码坏味的根本原因,并提出了相应的改进策略。此外,一些研究利用该数据集开发了新的代码坏味检测和修复工具,如基于PSC的自动化代码审查系统。这些工作不仅扩展了CodeSmellData的应用范围,还为代码生成和代码质量评估领域提供了新的研究思路和方法。
数据集最近研究
最新研究方向
在软件工程领域,随着大语言模型(LLMs)在代码生成任务中的广泛应用,代码质量评估成为了一个关键问题。CodeSmellData数据集的引入为评估LLMs生成代码中的代码异味(Code Smells)提供了新的基准。通过引入Propensity Smelly Score (PSC)这一创新指标,研究者能够量化LLMs生成代码异味的倾向性。研究表明,CodeLlama和Mistral等主流LLMs在生成代码时,倾向于产生如simplifiable-condition和consider-merging-isinstance等代码异味。这一发现不仅揭示了LLMs在代码生成中的潜在问题,也为开发者提供了更全面的模型评估工具,推动了代码生成质量的提升。CodeSmellData的广泛应用将有助于进一步优化LLMs在软件工程中的可靠性,减少代码异味对代码可维护性和可读性的负面影响。
相关研究论文
- 1How Propense Are Large Language Models at Producing Code Smells? A Benchmarking Study威廉与玛丽学院, 达卡大学 · 2024年
以上内容由遇见数据集搜集并总结生成



