论文部分内容阅读
软件仓库挖掘领域可以分析软件仓库中的数据以便促进软件的开发过程。虽然版本控制系统、缺陷跟踪系统、通信档案、设计要求和文档中存在大量数据,但是由于其高度非结构化性质,研究人员在将其用于分析时仍面临挑战。从事软件仓库挖掘的人员试图解决的任务之一是缺陷定位。定位源代码中的缺陷是很困难的。众所周知,手动缺陷定位的过程是乏味且困难的,因此开发人员会花费大量的时间在这上。缺陷定位的目的在于能够基于缺陷报告自动识别有缺陷的源代码文件。即使有大量的自动化技术,该领域尚未充分发挥其潜力并实现商业化。因此,自动缺陷定位仍然是一个悬而未决的问题,研究团体对此表现出了极大的兴趣。随着最近自然语言处理领域的发展,许多用于将单词嵌入向量中的模型已经被提出。它们是基于分布假设,即单词含义的相似度由它们在向量空间中的相似度表示。这种模型允许我们通过观察单词向量表示之间的距离来度量单词之间的语义相似性。本文结合信息检索模型,探讨了词嵌入预训练模型在缺陷定位中的有效性。通过使用不同的预处理技术,提出的模型由检索与所分析的缺陷报告相关的源代码文件的排序列表的能力进行评估。缺陷定位能够处理具有非结构化性质的数据,如缺陷报告、源代码注释和标识符,源代码文件和缺陷报告的预处理对排序结果有很大影响。我们的主要观点是,通过从源代码文件中提取结构字段(通过解析它们的抽象语法树来实现)是有可能实现更好的缺陷定位。本文使用的数据集包括从Bugzilla检索到的缺陷报告和用Java编写的源代码。Java代码使我们能够使用抽象语法树解析器从中只检索结构字段的子集。我们做了两组实验:第一组是利用源代码文件的全部内容进行定位,第二组是解析源代码的抽象语法树,只提取几个结构字段,如类名、变量名、方法名。缺陷定位处理具有非结构化性质的数据,如缺陷报告、源代码注释和标识符,应用于源代码文件和缺陷报告的预处理方法对排名结果有很大影响。通过使用不同的预处理技术,评估了所提出模型的检索与分析和缺陷报告相关的排序源代码文件列表的能力。我们的关键见解是,通过解析源代码文件的抽象语法树,从源代码文件中提取结构字段,可以实现更好的错误定位。