技术领域
本发明涉及软件缺陷定位领域,具体涉及一种基于新项目的即时缺陷定位方法及系统。
背景技术
软件缺陷预测一直是软件工程研究中最活跃的领域之一,研究人员已经提出了大量的缺陷预测技术,根据预测粒度不同,主要包括模块级、文件级和变更级缺陷预测。其中,变更级缺陷预测旨在于开发者提交代码时,对其引入的代码是否存在缺陷进行预测,因此又被称作即时缺陷预测。近年来,即时缺陷预测技术由于其即时性、细粒度等优势,成为缺陷预测领域的研究热点,取得了一系列研究成果;同时也在数据标注、特征提取、模型评估等环节面临诸多挑战。
现有技术中,人们在缺陷定位的研究中提出了许多方法,主要通过程序的静态信息和动态信息来定位程序错误。不管是静态信息还是动态信息,均需要缺陷报告来进行分析。
然而,针对新开发的项目,其并没有历史数据,也没有缺陷报告,因此并不能依据缺陷报告进行软件缺陷定位,不能帮助开发人员及时发现潜在缺陷。上述问题是目前亟待解决的。
发明内容
为了解决上述技术问题之一,本发明的目的是提供一种基于新项目的即时缺陷定位方法及系统。
本发明所采用的技术方案是:
一种基于新项目的即时缺陷定位方法,所述方法依据相近项目的历史变更数据的缺陷报告对新项目的变更数据进行即时缺陷定位。
进一步的,所述依据相近项目的历史变更数据的缺陷报告对新项目的变更数据进行即时缺陷定位的方法包括:
对变更数据进行特征提取,得出特征词集合;
依据特征词集合构建空间词向量模型;
依据空间词向量模型将历史变更数据中每个缺陷报告中有缺陷的代码行表示成基于特征词的缺陷词向量;
依据空间词向量模型将变更数据中的每行代码表示成基于特征词的源文件词向量;
依次计算每个缺陷词向量与源文件词向量的相似度,输出相似度大于预设值的源文件词向量及其所在位置完成缺陷的定位。
进一步的,相近项目的历史变更数据为同一开发团队基于相同语言开发的软件的历史变更数据。
进一步的,所述对变更数据进行特征提取,得出特征词集合的方法,即:
对变更数据进行预处理,包括分词、去停用词和提取词干,停用词可根据文本特性自由添加,经预处理后,得到特征词集合。
进一步的,所述依据特征词集合构建空间词向量模型的方法,即:
利用信息检索技术,以特征词集合为索引词建立空间词向量模型。
进一步的,所述依次计算每个缺陷词向量与源文件词向量的相似度,输出相似度大于预设值的源文件词向量及其所在位置完成缺陷的定位的方法包括:
计算缺陷词向量与源文件词向量之间的余弦值;
将余弦值作为相似度判定缺陷词向量最相似的源文件词向量及其所在位置。
进一步的,所述的基于新项目的软件缺陷定位方法还包括:对历史变更数据进行除杂。
进一步的,所述对历史变更数据进行除杂的方法包括:
计算历史变更数据中的每个缺陷报告中有缺陷的代码行与变更数据中每行代码的欧式距离;
为变更数据中的每行代码选出距离最近的k个历史变更数据中有缺陷的代码行作为新的历史变更数据,完成对历史变更数据的除杂;其中,k为正整数。
本发明所采用的另一技术方案是:
一种基于新项目的软件缺陷定位系统,包括:
数据获取模块,适于获取历史变更数据;
特征提取模块,适于对新项目的变更数据进行特征提取,得出特征词集合;
模型构建模块,适于依据特征词集合构建空间词向量模型;
第一词向量获取模块,适于依据空间词向量模型将历史变更数据中每个缺陷报告中有缺陷的代码行表示成基于特征词的缺陷词向量;
第二词向量获取模块,适于依据空间词向量模型将变更数据中的每行代码表示成基于特征词的源文件词向量;
计算模块,适于依次计算每个缺陷词向量与源文件词向量的相似度,输出相似度大于预设值的源文件词向量及其所在位置完成缺陷的定位。
进一步的,所述历史变更数据为同一开发团队基于相同语言开发的软件的历史变更数据。
本发明的有益效果是,本发明提供了一种基于新项目的即时缺陷定位方法及系统,其中,一种基于新项目的即时缺陷定位方法依据相近项目的历史变更数据的缺陷报告对新项目的变更数据进行即时缺陷定位。通过采用相近项目的历史数据对新项目的软件进行即时缺陷定位,优化资源分配,节省开发成本。缺陷定位可以对软件的文件、模块等计算其存在缺陷的位置进行快速定位,减少开发人员在软件开发时耗费的时间,从而实现对有限开发资源的合理调度。
附图说明
为了更清楚地说明本发明实施例或者现有技术中的技术方案,下面对本方明实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本发明的技术方案中的部分实施例,对于本领域的技术人员而言,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。
图1是本发明所提供的基于新项目的即时缺陷定位方法的流程图;
图2是本发明所提供的基于新项目的即时缺陷定位系统的原理框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
实施例1
如图1所示,本实施例1提供了一种基于新项目的软件缺陷定位方法。基于新项目的即时缺陷定位方法依据相近项目的历史变更数据的缺陷报告对新项目的变更数据进行即时缺陷定位。通过采用相近项目的历史数据对新项目的软件进行即时缺陷定位,优化资源分配,节省开发成本。缺陷定位可以对软件的文件、模块等计算其存在缺陷的位置进行快速定位,减少开发人员在软件开发时耗费的时间,从而实现对有限开发资源的合理调度。
包括以下步骤:
S110:对历史变更数据进行除杂;
具体来说,包括以下步骤:
计算历史变更数据中的每个缺陷报告中有缺陷的代码行与变更数据中每行代码的欧式距离;
为变更数据中的每行代码选出距离最近的k个历史变更数据中有缺陷的代码行作为新的历史变更数据,完成对历史变更数据的除杂。通过对历史变更数据进行除杂,降低即时缺陷定位时的数据量,其中,k为正整数。
具体来说,将历史变更数据中的每个缺陷报告中有缺陷的代码行输入到句向量编码器中得到缺陷的代码行的数据集合X={x
其中,历史变更数据选取相近项目的历史变更数据,且为同一开发团队基于相同语言开发的软件的历史变更数据。由于人员开发习惯相同,开发语言相同,出现缺陷的地方以及代码会有大概率重叠,因此选取历史变更数据中的缺陷报告对新项目的软件进行即时缺陷进行定位,具备一定可行性,避免开发人员在软件开发时出现相同的软件缺陷。
S120:对变更数据进行特征提取,得出特征词集合;
具体来说,对变更数据进行预处理,包括分词、去停用词和提取词干,停用词可根据文本特性自由添加,经预处理后,得到特征词集合。
S130:依据特征词集合构建空间词向量模型;
具体来说,利用信息检索技术,以特征词集合为索引词建立空间词向量模型。
S140:依据空间词向量模型将历史变更数据中每个缺陷报告中有缺陷的代码行表示成基于特征词的缺陷词向量;
S150:依据空间词向量模型将变更数据中的每行代码表示成基于特征词的源文件词向量;
S160:依次计算每个缺陷词向量与源文件词向量的相似度,输出相似度大于预设值的源文件词向量及其所在位置完成缺陷的定位。
具体来说,计算缺陷词向量与源文件词向量之间的余弦值;
将余弦值作为相似度判定缺陷词向量最相似的源文件词向量及其所在位置。
具体来说,余弦值越大,两个向量的夹角越小,两个向量越接近,相似度就越高;反之,两个向量的夹角越大,两个向量就越远离,相似度就越低。将相似度按照从高到低进行排序。那么本实施例为每个有缺陷的代码行提供N个可能具有缺陷的变更数据的代码行(N大于1,具体的数值可由用户指定,例如5,10等,其意义为对应有缺陷的代码行最有可能的前N个变更数据的代码行)。
请参阅图2,本发明还提供了一种基于新项目的软件缺陷定位系统。基于新项目的软件缺陷定位系统包括:
数据获取模块,适于获取历史变更数据;
特征提取模块,适于对新项目的变更数据进行特征提取,得出特征词集合;
模型构建模块,适于依据特征词集合构建空间词向量模型;
第一词向量获取模块,适于依据空间词向量模型将历史变更数据中每个缺陷报告中有缺陷的代码行表示成基于特征词的缺陷词向量;
第二词向量获取模块,适于依据空间词向量模型将变更数据中的每行代码表示成基于特征词的源文件词向量;
计算模块,适于依次计算每个缺陷词向量与源文件词向量的相似度,输出相似度大于预设值的源文件词向量及其所在位置完成缺陷的定位。
通过采用相近项目的历史数据对新项目的软件进行即时缺陷定位,优化资源分配,节省开发成本。缺陷定位可以对软件的文件、模块等计算其存在缺陷的位置进行快速定位,减少开发人员在软件开发时耗费的时间,从而实现对有限开发资源的合理调度。
其中,所述历史变更数据为同一开发团队基于相同语言开发的软件的历史变更数据。
综上所述,本发明提供了一种基于新项目的软件缺陷定位方法。基于新项目的即时缺陷定位方法依据相近项目的历史变更数据的缺陷报告对新项目的变更数据进行即时缺陷定位。通过采用相近项目的历史数据对新项目的软件进行即时缺陷定位,优化资源分配,节省开发成本。缺陷定位可以对软件的文件、模块等计算其存在缺陷的位置进行快速定位,减少开发人员在软件开发时耗费的时间,从而实现对有限开发资源的合理调度。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。
机译: 一种用于即时,实时检测脊髓假关节和邻近节段运动的,基于可植入的基于惯性的传感系统的方法和装置
机译: 一种用于即时,实时检测脊髓假关节和邻近节段运动的,基于可植入的基于惯性的传感系统的方法和装置
机译: 一种用于即时,实时检测脊髓假关节和邻近节段运动的,基于可植入的基于惯性的传感系统的方法和装置