[发明专利]一种基于上下文环境的依恋情结代码味道检测方法有效
申请号: | 202110007180.6 | 申请日: | 2021-01-05 |
公开(公告)号: | CN112732570B | 公开(公告)日: | 2022-05-31 |
发明(设计)人: | 施重阳;赵舒鑫;任少君;江贺 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/08;G06N3/04 |
代理公司: | 北京正阳理工知识产权代理事务所(普通合伙) 11639 | 代理人: | 张利萍 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 上下文 环境 依恋 情结 代码 味道 检测 方法 | ||
本发明公开了一种基于上下文环境的依恋情结代码味道检测方法,属于计算机软件重构技术领域,解决了代码味道检测领域传统方法的度量局限性太大以及机器学习方法对信息的利用率不够的技术问题。本方法能够自动地提取代码中的特征信息,将提取出的特征信息与检测结果自动匹配,减少了人工设计规则的时间和人力成本。利用了更深更广的文本信息,充分挖掘某些蕴含于代码坏味中的隐含特征,克服了数值化度量值的局限性。在训练时,利用卷积神经网络和自注意力机制结合方法,能给提取出文本信息中蕴含的更深层次的语义特征,并且基于更多样化的神经网络,完成对函数和类之间关联信息的提取,并提高了检测的精准率和查全率。
技术领域
本发明涉及一种依恋情结代码味道检测方法,具体涉及一种基于上下文环境的依恋情结代码味道检测方法,属于计算机软件重构技术领域。
背景技术
代码味道是一种由于编程不规范导致的代码中的潜在性问题,一般也会被称作反模式、难闻的气味、设计缺陷等。代码味道的存在会导致软件的质量很差,并且在可维护性方面产生很大的负面影响。包含代码味道的软件很可能会随着持续的修改和增强而质量变得越来越差,这使维护工作产生了很大的风险,并且使维护成本远远高于普通的占比。但是代码味道不是一种技术性错误,也不会影响软件的正常运行。基于这种特征,开发者们对代码味道的定义很难完全一致。
为了准确地定义某种存在于代码中的非技术性错误,Beck and Fowler提出了22种关于代码味道的定义。依恋情结是一种比较常见的代码味道,其定义为“moreinterested in a class other than the one it actually is in”。这种代码味道的一种特征为该方法调用其所在类中元素的次数远小于其他某类,这代表其是一个放错位置的方法,如果不把这个方法放置到正确的位置,那么软件的耦合度和内聚度都会受到很大影响。
软件重构,是指在不影响外部行为的前提下通过对软件内部结构进行调整来消除代码味道。进行软件重构的关键一步,是确定在哪里应用重构。为了检测依恋情结,目前,有许多种方法被提出来,包括依赖度量值的传统方法、度量值和文本信息结合的机器学习方法等。
然而,现有的传统方法和深度学习方法,都只关注类和方法之间的交互特征,这导致这些方法本身存在一些缺陷。许多传统方法依赖于一种可以衡量方法和类之间亲密度的度量值,依据此度量值来判断依恋情结是否存在。这个度量值通常由几个集合进行交集、并集计算得来,这些集合通常包括方法的一些元素和类的一些元素,但是,完全依靠人工去制定一个可以选择出最优集合的机制是非常难的。并且,在进行交集、并集计算时只关注到了显式的调用特征,一些可以反应隐含调用关系特征的元素被忽略掉了。
深度学习技术,目前已经被广泛应用于不同领域,并表现出了良好的效果,如自然语言处理、软件工程。所以,深度学习方法也被尝试应用于代码味道检测领域。现有的基于深度学习的代码味道检测方法,大都以传统度量值和文本信息作为输入,利用神经网络去提取文本信息的内部特征以及文本信息与传统度量值之间的交互特征,最终预测这个方法是“smelly”or“not smelly”。但是,这种方法依旧没有解决传统度量值的缺陷问题,对文本信息的利用率也非常有限。除此之外,将文本信息和传统度量值作为两种类型的输入,也限制了两者之间深层次交互信息的提取。
发明内容
本发明的目的是为了克服现有技术的缺陷,为了解决代码味道检测领域传统方法的度量局限性太大以及机器学习方法对信息的利用率不够的技术问题,创造性地提出一种基于上下文环境的依恋情结代码味道检测方法。
本发明是通过以下技术方案实现的。
一种基于上下文环境的依恋情结代码味道检测方法,包括模型训练部分和模型测试部分。
其中,模型训练包括:代码上下文信息表示A、函数及类关联特征提取B和代码味道分类C;模型测试包括代码上下文信息表示D、函数及类关联特征提取 E和代码味道分类F。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110007180.6/2.html,转载请声明来源钻瓜专利网。