The invention relates to a code bad taste detection method based on BP neural network, which belongs to the technical field of computer software. First, extract the bad taste instance and label information, then calculate whether there is bad taste measurement feature, combine the measurement feature and the extracted label information to form the training set, use keras to build the neural network, take the training set as the input of the neural network model, complete the prediction and output training of bad taste of code, and finally get the bad taste of code from the tested program Example as a code bad taste test set, input to the trained neural network model, so that the model output code bad taste belongs to a certain category. The invention combines code bad taste detection technology based on measurement features and neural network algorithm to detect different types of code bad taste in data set, improving detection accuracy and F1 value.
【技术实现步骤摘要】
一种基于BP神经网络的代码坏味检测方法
本专利技术属于计算机软件
,特别是在代码坏味检测
,用于对一段不稳定或存在潜在问题的代码进行检测,以便于软件质量维护的需求,更具体地,涉及一种基于BP神经网络的代码坏味检测方法。
技术介绍
软件良好的设计质量能使维护和重用变得更加容易和方便,而如果代码中存在各种各样的坏味,那么必将导致软件整体设计质量下降,针对代码坏味检测一直是软件工程领域的研究热点之一,其中研究者们提出了一些基于各类机器学习算法的代码坏味检测方法。Kreimer在提出了一种自适应检测方法,结合决策树算法对过大的类和过长的方法两种代码坏味进行检测。Khomh等人在基于一种目标问题度量方法上,从反模式的定义构建贝叶斯信念网络,并在两个开源程序中验证上帝类。Maiga等人利用一种基于支持向量机的检测方法,在三个开源程序中进行反模式检测。Yang等人通过在克隆代码上应用机器学习算法研究程序员对代码坏味的判断。Palomba等人提出了一种基于信息检索技术来利用程序中的文本信息进行坏味检测的方法。Fontana等人将几种常见的机器学习算法共同应用在各类代码坏味检测上,从实验中针对代码坏味检测,总结了几种表现良好机器学习算法,分别是:J48、随机森林以及贝叶斯网络。Nucci等人考虑到代码坏味数据集的度量特征和坏味类型在数据集中分布情况的两个方面,重新对Fontana等人的研究进行了回顾,揭示了利用机器学习算法检测各类代码坏味的局限性。马赛等人利用潜在语义分析技术对上帝类进行检测。刘丽倩等人将决策树算法与代价敏 ...
【技术保护点】
1.一种基于BP神经网络的代码坏味检测方法,其特征在于以下步骤:/n(1)提取代码坏味实例以及标签信息;/n具体实现过程为:首先,针对长方法和特征依恋两种代码坏味类型,使用代码坏味自动检测工具对开源软件系统进行检测,提取这两种代码坏味实例和无坏味实例,然后对其设置标签:0代表无坏味,1代表长方法,2代表特征依恋;/n所述的代码坏味自动检测工具为:iPlasma、inFusion、Checkstyle其中一种;/n(2)计算有代码坏味实例和无代码坏味实例度量特征;/n所述的度量特征指的是软件规模度量,内聚度度量和耦合度度量;/n具体实现过程为:使用浮点数序列对有代码坏味和无代码坏味实例度量特征进行编码表示,其中0代表某度量特征不是影响代码坏味因素,纯小数值代表某度量特征是影响代码坏味因素;/n(3)将步骤(1)和步骤(2)中的度量特征和标签进行合并,以此构成训练集;/n具体实现过程为:首先根据得到的度量特征以及标签信息进行合并,并对度量特征以及标签信息转换为向量表示<m
【技术特征摘要】
1.一种基于BP神经网络的代码坏味检测方法,其特征在于以下步骤:
(1)提取代码坏味实例以及标签信息;
具体实现过程为:首先,针对长方法和特征依恋两种代码坏味类型,使用代码坏味自动检测工具对开源软件系统进行检测,提取这两种代码坏味实例和无坏味实例,然后对其设置标签:0代表无坏味,1代表长方法,2代表特征依恋;
所述的代码坏味自动检测工具为:iPlasma、inFusion、Checkstyle其中一种;
(2)计算有代码坏味实例和无代码坏味实例度量特征;
所述的度量特征指的是软件规模度量,内聚度度量和耦合度度量;
具体实现过程为:使用浮点数序列对有代码坏味和无代码坏味实例度量特征进行编码表示,其中0代表某度量特征不是影响代码坏味因素,纯小数值代表某度量特征是影响代码坏味因素;
(3)将步骤(1)和步骤(2)中的度量特征和标签进行合并,以此构成训练集;
具体实现过程为:首先根据得到的度量特征以及标签信息进行合并,并对度量特征以及标签信息转换为向量表示<m11,m12,m13,......,p1n>,m表示特征度量,p表示...
【专利技术属性】
技术研发人员:王曙燕,张一权,孙家泽,
申请(专利权)人:西安邮电大学,
类型:发明
国别省市:陕西;61
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。