[发明专利]一种基于深度学习的特征依恋代码异味检测方法有效
申请号: | 201810454294.3 | 申请日: | 2018-05-14 |
公开(公告)号: | CN108664269B | 公开(公告)日: | 2019-02-26 |
发明(设计)人: | 刘辉;许志凤 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F8/72 | 分类号: | G06F8/72;G06K9/62;G06N3/08 |
代理公司: | 北京理工正阳知识产权代理事务所(普通合伙) 11639 | 代理人: | 唐华 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 测试数据 方法信息 可移动 开源软件 训练数据 异味检测 词向量 计算机软件技术 卷积神经网络 生成测试数据 输入神经网络 训练神经网络 距离转换 训练集 检测 准确率 异味 测试 输出 学习 转换 | ||
本发明涉及一种基于深度学习的特征依恋代码异味检测方法,属于计算机软件技术领域。首先提取用于训练的开源软件的可移动方法信息和距离,生成训练集,将提取出来的可移动方法信息和距离转换为词向量表示的训练数据,将训练数据输入卷积神经网络训练神经网络模型。然后,提取用于测试的开源软件的可移动方法的方法信息和距离,生成测试数据集,将测试数据集中的数据全部转换为由词向量表示的待测试数据。将待测试数据输入神经网络模型中,模型自动输出0或1,其中1代表存在特征依恋代码异味,0代表不存在。本发明所述检测方法,与现有检测方法相比,大幅度提高了平均召回率,同时提高了平均准确率。
技术领域
本发明涉及一种针对特征依恋的代码异味检测方法,属于计算机软件技术领域。
背景技术
代码重构(Code Refactoring),是指在不改变软件系统外部行为的前提下,改善它的内部结构。代码重构可以通过调整程序代码改善软件的质量、性能,使程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。代码重构是一种经千锤百炼形成的有条不紊的程序整理方法,可以最大限度地减少整理过程中引入错误的概率。本质上说,代码重构就是在代码写好之后改进它的设计。软件重构被广泛应用于通过重构其每部结构来提高软件质量,而其外部行为保持不变。大多数现有的IDE(集成开发环境,IntegratedDevelopment Environment)都为软件重构提供工具支持,例如Eclipse。Eclipse有一个专门用于软件重构的顶级菜单项,提供了大多数流行的软件重构的条目。
软件重构的一个关键步骤是确定应用重构的地方。为了便于识别这些地方,人们提出了代码异味的概念。如果一段代码不稳定或者存在一些潜在问题,这段代码往往会包含一些明显的痕迹,类似于食物即将腐坏之前通常会挥发出一些异味一样,因此将这些痕迹称作“代码异味”。在程序开发领域,代码中任何可能导致深层次问题的症状都可以称为代码异味,比如重复代码、长方法、巨类、亲密关系、特征依恋等等。代码异味推动重构的进行,人们分析每个代码异味的特征,以及它们的影响和潜在解决方案(重构)。
目前,大多数代码气味检测方法都依赖手动设计的启发式策略将手动定义/选择的代码度量映射到二元预测中,判断有异味或没有异味。但是,手动识别代码异味繁琐且费时,特别是当这种代码异味涉及多个文件或包时。而且手动构建最佳启发式功能也很困难。对这种方法的分析结果表明,不同的人可能会针对相同的代码异味选择不同的度量和不同的重构方式,这导致不同检测工具之间的一致性很低。为了避免手动设计的启发式算法,现在已经有大量的自动或半自动方法来检测不同类型的代码异味的工具。像SVM,朴素贝叶斯和LDA这样的统计机器学习技术被用来建立代码度量以及词汇相似度和预测之间的复杂映射关系。然而,实证研究表明,这种基于统计机器学习的异味检测方法具有关键的局限性,值得进一步的研究。
深度神经网络和先进的深度学习技术可以自动从程序源代码(特别是文本特征)中为代码异味检测选择有用的特征,并在这些特征和标签(有异味或无异味)之间建立复杂的映射关系。神经网络和深度学习技术的特点就是从大量数据中选择有用的特征自动构建从输入到输出的复杂映射关系。
为了训练基于神经网络的分类器,本发明提出了一种自动方法来生成带标签的训练数据。这种方法不需要任何人为干预。基于这些方法正确放置在原始程序中的假设,通过直接从高质量的开源应用程序中提取方法(及其上下文)来生成负样本。为了生成正样本,可以将方法随机地移动到其他可以通过重构工具移动的类中。移动后,方法(连同他们的新环境)被视为特征羡慕。因为这个方法是完全自动的,所以生成大量这样的带标签的训练数据。大数据反过来作为基于机器学习的分类的基础。
发明内容
在常见的22中代码异味中,特征依恋是一种特殊的代码异味,表现为在代码中,一个类过度使用另外一个类的方法。本发明的目的在于针对现有特征依恋检测方法中结构功能和文本功能很难最佳化并且自动化程度不够的现状,提出了一种基于深度学习的特征依恋代码异味检测方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810454294.3/2.html,转载请声明来源钻瓜专利网。