[发明专利]结合代码演化信息构造代码坏味训练数据集的方法有效
申请号: | 201711365477.X | 申请日: | 2017-12-18 |
公开(公告)号: | CN108108168B | 公开(公告)日: | 2021-02-02 |
发明(设计)人: | 王逸君;周晓聪 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06N3/08;G06K9/62 |
代理公司: | 广州粤高专利商标代理有限公司 44102 | 代理人: | 林丽明 |
地址: | 510275 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 结合 代码 演化 信息 构造 训练 数据 方法 | ||
1.结合代码演化信息构造代码坏味训练数据集的方法,其特征在于:包括有以下步骤:
A、从网络源代码仓库中获取一个软件的基线版本的源代码和基线版本之后的对照版本的源代码;
B、使用代码坏味自动检测工具对基线版本和对照版本的源代码实体进行检测,并提取基线版本中的变化坏味实体和无坏味实体,然后将变化坏味实体标注为具有坏味的实体,将无坏味实体标注为不具有坏味的实体;其中变化坏味实体指的是在基线版本中被工具识别为有坏味而在对照版本中被工具识别为没有坏味的实体,而无坏味实体指的是在基线版本和对照版本中都被工具识别为没有坏味的实体;
C、利用基于抽样的方法,随机抽取数量与变化坏味实体数量相当的无坏味实体;
D、计算变化坏味实体和无坏味实体在基线版本源代码中的度量特征;
E、实体包括类和方法两种粒度上的实体,实体全类名或方法名作为标识符,变化坏味实体和无坏味实体的标识符、度量特征、标注组成变化坏味训练数据集;
F、利用遗传算法对变化坏味训练数据集内的实体的度量特征进行降维,降维后的变化坏味实体和无坏味实体组成代码坏味训练数据集。
2.根据权利要求1所述的结合代码演化信息构造代码坏味训练数据集的方法,其特征在于:步骤A所选的基线版本和对照版本之间需要经历至少一个主版本号变更或多个次版本号变更。
3.根据权利要求1所述的结合代码演化信息构造代码坏味训练数据集的方法,其特征在于:所述步骤C采用不充分抽样对无坏味实体进行随机抽取,抽取的无坏味实体数量与变化坏味实体数量的比例在1∶1到2∶1之间。
4.根据权利要求1所述的结合代码演化信息构造代码坏味训练数据集的方法,其特征在于:所述步骤D计算的度量特征包括软件规模度量、内聚度度量、耦合度度量和继承度量。
5.根据权利要求1~4任一项所述的结合代码演化信息构造代码坏味训练数据集的方法,其特征在于:所述步骤F进行降维的具体过程如下:
S1.使用二进制序列对变化坏味训练数据集内的变化坏味实体或无坏味实体的度量特征进行表示,其中,0代表不选择度量特征中的某一度量,1代表选择度量特征中的某一度量;
S2.为变化坏味训练数据集内的变化坏味实体和无坏味实体的度量特征初始化一个二进制序列种群;
S3.将二进制序列种群内的二进制序列个体作为输入,利用有监督的机器学习分类算法,建立代码坏味预测模型,使用十折交叉法计算预测模型的准确率作为个体的适应度值;
S4.判断二进制序列个体的平均准确率是否已经处于稳定的阶段,若是,则输出适应度值最高的二进制序列个体作为最优的二进制序列对实体的度量特征进行降维;若否则采用轮盘赌选择亲代,通过均匀交叉及位翻转变异产生新的二进制序列个体,然后重复步骤S3;
其中均匀交叉指的是后代二进制序列个体的每个位都有50%的机会来自第一个亲代或其第二个亲代,位翻转变异指的是二进制序列个体的每一位在变异时是以一定变异率由0翻转到1,或从1翻转到0。
6.根据权利要求5所述的结合代码演化信息构造代码坏味训练数据集的方法,其特征在于:所述步骤B使用到的代码坏味自动检测工具为iPlasma、inFusion、JDeodorant、CheckStyle、PMD的一种。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711365477.X/1.html,转载请声明来源钻瓜专利网。
- 信息记录介质、信息记录方法、信息记录设备、信息再现方法和信息再现设备
- 信息记录装置、信息记录方法、信息记录介质、信息复制装置和信息复制方法
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录设备、信息重放设备、信息记录方法、信息重放方法、以及信息记录介质
- 信息存储介质、信息记录方法、信息重放方法、信息记录设备、以及信息重放设备
- 信息存储介质、信息记录方法、信息回放方法、信息记录设备和信息回放设备
- 信息记录介质、信息记录方法、信息记录装置、信息再现方法和信息再现装置
- 信息终端,信息终端的信息呈现方法和信息呈现程序
- 信息创建、信息发送方法及信息创建、信息发送装置