【技术实现步骤摘要】
基于深度学习的忽略成员的方法异味检测策略
[0001]本专利技术涉及Android代码异味中忽略成员的方法检测策略。
技术介绍
[0002]代码异味(Code Smell)又被称为代码坏味道,是由Martin Fowler于1999年提出的,表示存在于程序中的结构不良的代码段
[1]。代码异味对软件的可理解性和可维护性产生诸多负面影响。这种由Martin Fowler提出的异味也被称为面向对象代码异味
[2]。随着新技术的不断涌现和代码异味研究的持续发展,代码异味不再局限于表示面向对象代码中的潜在问题,已经拓展到众多领域
[3],如安卓/IOS应用程序
[4,5]、测试
[6]及SQL
[7]等代码异味。随着科学技术的迅猛发展,Android应用程序由于其开放性和易用性,被广泛应用到人们的日常生活中。研究表明,代码异味不仅仅存在于传统的桌面应用程序中,也存在于Android应用程序中
[2]。与传统桌面应用程序相比,Android应用程序没有主函数,程序执行入口是由Activity所提供的;Android应用程序没有J2SE、API、Swing和JavaFX,而且Android应用程序上的GUI是通过XML来声明的等。以上差异导致Android应用程序中不仅存在传统面向对象代码异味,还存在着Android特有的代码异味(Android
‑
specific smells)。2014年Reimann
[4]等人提出了Android特有代码异 ...
【技术保护点】
【技术特征摘要】
1.基于深度学习的忽略成员的方法异味检测策略,其特征在于:所述策略具体过程为:步骤一、获取数据集;步骤二、对数据集进行预处理,得到预处理后的数据集;步骤三、构建深度神经网络分类器,并得到训练好的深度神经网络分类器;步骤四、对待测Android特有代码异味输入训练好的深度神经网络分类器,输出待测Android特有代码异味中是否存在成员异味。2.根据权利要求1所述的基于深度学习的忽略成员的方法异味检测策略,其特征在于:所述步骤一中获取数据集;具体过程为:步骤一一、在开源代码库AndroZooOpen中下载Android应用程序;步骤一二、使用工具RepoReapers去除低质量的Android应用程序,得到最终Android应用程序作为代码语料库,获取数据集;具体过程为:步骤一二一、使用JavaParser将Android应用程序源代码解析生成代码的抽象语法树;步骤一二二、使用工具ASSD对代码的抽象语法树进行MIM异味检测,输出MIM异味检测结果;将MIM异味检测结果中的漏检和误检移除;将移除漏检和误检后的检测结果中存在MIM异味的方法和不存在MIM异味的方法分别提取到单独的文件夹中,存在MIM异味的方法对应的代码语料库中的程序构成正样本集,不存在MIM异味的方法对应的代码语料库中的程序构成负样本集;所述MIM为忽略成员的方法。3.根据权利要求2所述的基于深度学习的忽略成员的方法异味检测策略,其特征在于:所述步骤一二二具体过程为:步骤一二二一、使用工具ASSD对代码的抽象语法树进行MIM异味检测,输出MIM异味检测结果;步骤一二二二、将步骤一二二一输出的MIM异味检测结果中的漏检和误检移除;具体过程为:根据工具DAAP中检测规则遍历步骤一二二一输出的MIM异味检测结果中的类中的方法,判断MIM异味检测结果中的类中的方法是否为空方法,静态方法或者子类覆盖父类的方法,如果是,则将MIM异味检测结果中的类中的方法放入不含异味的方法的集合nonsmellySets中;如果不是,根据MIM异味检测结果中的类中的方法是否访问所在类的属性判断是否为MIM异味,如果没有访问所在类的属性,则是MIM异味,放入含异味的方法的集合smellySets中,如果访问所在类的属性,则不是MIM异味,放入不含异味的方法的集合nonsmellySets中;步骤一二二三、将移除漏检和误检后的检测结果中存在MIM异味的方法和不存在MIM异味的方法分别提取到单独的文件夹中,存在MIM异味的方法对应的代码语料库中的程序构成正样本集,不存在MIM异味的方法对应的代码语料库中的程序构成负样本集。4.根据权利要求3所述的基于深度学习的忽略成员的方法异味检测策略,其特征在于:所述步骤二中对数据集进行预处理,得到预处理后的数据集;具体过程为:使用工具Tokenizer将样本集合中的代码语料转换为整数,用数字向量表示程序文本信息;删除程序文本信息中的重复样本;
将数字向量表示的程序文本信息进行归一化处理;将归一化处理后的数字向量表示的程序文本信息作为深度神经网络分类器的输入数据。5.根据权利要求4所述的基于深度学习的忽略成员的方法异味检测策略,其特征在于:所述步骤三中深度神经网络分类器为改进卷积神经网络模型CNN、改进循环神经网络模型RNN、CNN与RNN相结合的模型CNN
‑
LSTM、自编码全连接变体、自编码CNN变体中任意一个。6.根据权利要求5所述的基于深度学习的忽略成员的方法异味检测策略,其特征在于:所述改进卷积神经网络模型CNN依次包括嵌入层、第一卷积层、第一最大池化层、第二卷积层、第二最大池化层、第三卷积层、第三最大池化层、Dropout层、Flatten层、第一全连接层,第二全连接层、输出层;所述嵌入层中将mask_zero参数设置为True;所述Dropout层的脱落率设置为0.5;所述第一全连接层的激活函数为relu激活函数;所述第二全连接层的激活函数为sigmoid函数;改进卷积神经网络模型CNN损失函数为binary_crossentropy函数,优化器为RMSProp;将步骤二预处理后的数据集输入改进卷积神经网络模型CNN,训练N次,得到训练好的改进卷积神经网络模型CNN。7.根据权利要求5所述的基于深度学习的忽略成员的方法异味检测策略,其特征在于:所述改进循环神经网络模型RNN依次包括嵌入层、一个长短时记忆网络LSTM、Flatte...
【专利技术属性】
技术研发人员:边奕心,赵松,李禹齐,张子恒,孙梦琪,邢代鑫,涂杰,欧长艺,
申请(专利权)人:哈尔滨师范大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。