当前位置:主页 > 科技论文 > 软件论文 >

模块独立型Code Smell检测技术研究

发布时间:2020-11-09 14:16
   在面向对象程序设计过程中,Code Smell是一个影响程序设计、运行效率和维护成本的问题,是一种由于不好的设计和实现所带来的症状。在某种情况下,Code Smell源于开发人员在一种紧急状态下作出的行为或简单实现功能需求;在另一种情况下,也可能来自于一种反复出现的、被称为“反模式”的设计方案。它带来的最大危害就是影响了程序的模块独立性,因此模块独立型Code Smell是最需要关注的。模块独立型Code Smell主要包括Divergent Change、Shotgun Surgery、Feature Envy三种。在开发过程中,开发人员出现最多的行为就是在编写一个类的代码时大量使用其它类的内容,所以最为典型的、广泛存在程序当中的模块独立型Code Smell就是Feature Envy,它属于类间Code Smell。与其它类间Code Smell不同的是,Feature Envy并不直观,开发人员很难通过观察找出这种Smell,往往需要通过距离度量算法计算确定这种Code Smell的存在。在距离度量算法中,主要有欧式距离、余弦距离和Jaccard距离等,考虑到实际应用场景是检测类和类中实体的依赖关系,抽象成集合与集合之间距离最合适,因此衡量集合与集合之间相似度的Jaccard距离最合适。但传统Jaccard距离度量算法只能反应代码的调用与否问题,不能反映代码运行中的调用频次问题,而代码的运行频率不同是程序中普遍存在的问题,因此传统方法存在一定的局限性。本文在集合间相似度算法Jaccard相似系数的基础上,结合实体间的调用关系和频次,提出了权值Jaccard距离度量方法,将方法、属性与类之间的远近关系抽象成基于频率的权值Jaccard相似度距离,通过比较各个方法或者属性和各类之间的距离大小,确定是否存在Feature Envy,筛选出目标候选类列表。考虑到Feature Envy的检测要符合类的职能和上下文环境,因此,又提出结合上下文语义相似度量,通过计算余弦相似度和权值Jaccard相似度的和作为指标判断是否存在异味。这种做法既保证了检测算法符合Feature Envy的定义,同时考虑到了代码的功能职责,而且也降低了寻找最后目标类的时间复杂度。这很大程度提高了最后的检测效果。在实验中,利用5个Github中的开源工程作为数据集,在Eclipse环境中利用ByteParse解析数据集并收集类相关信息,据此将本文方法和传统JDeodorant做对比,做到了P、R、F值三个指标平均约15%的提高。当然本文方法在F值的离散程度上还有欠缺,这也是以后改进的方向。
【学位单位】:上海师范大学
【学位级别】:硕士
【学位年份】:2018
【中图分类】:TP311.1
【部分图文】:

代码,示例,方法调用,参数声明


(7)注解类型:如果 m 接受了一个注解的内容,使用到的注解内部的实体添加到关系集中。举例说明,从图3-1可知:方法foo在类Bar中,则foo的调用关系集为{Annot、R、B、Z、A、C、D、Bar}。解释:Annot(第 7 行,注解类型);R(第 4 行,返回类型);B(第 4、5 行,参数声明和方法调用);Z(第 4 行,用户自定义异常);A(第 5 行,本地变量声明,第 7、9 行属性访问);C(第 7 行,方法调用);D(第 7 行

示意图,相似度,示意图,语义相似度


上海师范大学硕士学位论义距离。这么做有两方面好处:(1)结合两种相似性度量从代码和功能语义两个方面对重构目标类进行约提高了在实际工程中的准确性;(2)使用两种度量进行约束可以大大降低目标类的个数,从而提高重构过程效率。方法包含四个步骤,整个流程为:(1)源代码解析,分析源代码的组成结构,提取相关类、属性和方法的信息[34(2)利用权值 Jaccard 相似度度量计算非语义相似度;(3)利用 TF-IDF 计算上下文语义相似度;(4)对两种相似度进行加权求和作为最后的相似度指标并进行分析。流程示意图如图 4-1 所示:

示意图,代码,示意图,单词


图 4-3 计算 TF 代码示意图Fig. 4-3 Calculate TF code diagram通过计算文件中不同单词的数量以及每个单词对应的个数,使用 IDF 计算公式计算得到的值作为 value,将不同的单词当作 key 存放在一张 map 以健值对的形式作为返回值同时也是 IDF 的计算结果返回,返回结果在图 4-5 中会用到,计算 IDF 值的部分代码示意图如图 4-4 所示:
【相似文献】

相关期刊论文 前10条

1 乔晓利;叶军;;基于交叉熵的模糊相似度量在模式识别中的应用[J];绍兴文理学院学报(自然科学版);2008年03期

2 郑浩森,汤胤,彭宏,郑启伦;范例相似度量中格的嵌入[J];计算机工程与应用;2005年28期

3 谭国真,高文,张田文;多边形表示的相似度量[J];计算机辅助设计与图形学学报;1995年02期

4 孙树鹏;张璐;侯威;封国林;;基于非线性相似度量方法研究中国季节划分[J];物理学报;2011年02期

5 杨成福;舒兰;;关于集合的粗相似度量的注记[J];模糊系统与数学;2007年05期

6 胡珂立;范恩;叶军;沈士根;谷宇章;;基于中智加权相似度量的尺度自适应视觉目标跟踪算法[J];电信科学;2018年05期

7 张捷;;基于正切函数直觉模糊相似度量的多属性决策方法[J];中国西部科技;2014年10期

8 王肖霞;杨风暴;吉琳娜;蔺素珍;史冬梅;;基于柔性相似度量和可能性歪度的尾矿坝风险评估方法[J];上海交通大学学报;2014年10期

9 王毅;雷英杰;;基于包含度的直觉模糊相似度量方法[J];计算机工程与应用;2008年11期

10 周宁;周曼丽;;基于时空相似度量的复杂场景背景估计[J];计算机工程与应用;2005年34期


相关博士学位论文 前7条

1 周大镯;多变量时间序列的聚类、相似查询与异常检测[D];天津大学;2009年

2 梅锋;基于核机器学习的高光谱异常目标检测算法研究[D];哈尔滨工程大学;2009年

3 窦亚玲;基于直觉模糊集的多约束网络路由决策方法研究[D];华中科技大学;2010年

4 黄誉;无人直升机自主着舰关键技术研究[D];西北工业大学;2015年

5 王伟;基于Vague集理论的推荐与模糊决策相关算法研究[D];西北大学;2014年

6 吕泽华;模糊集理论的新拓展及其应用研究[D];华中科技大学;2007年

7 李艳红;信息系统敏捷性及其相关技术的研究[D];大连理工大学;2002年


相关硕士学位论文 前10条

1 秦业;模块独立型Code Smell检测技术研究[D];上海师范大学;2018年

2 杨东山;多情景源异构环境用户运动轨迹分析[D];西安工程大学;2017年

3 刘菲;基于代码指纹的C源程序相似度评测算法研究[D];华中科技大学;2016年

4 李文轩;一种中文句子相似度的计算方法[D];华中科技大学;2016年

5 张敏;边界不确定性集合的相似度量的研究[D];西安电子科技大学;2006年

6 郁启麟;面向在线微博网络的相似用户发现方法研究[D];中国矿业大学;2017年

7 陈传魁;机械产品相似性度量方法及其软件实现研究[D];合肥工业大学;2008年

8 张峰;基于内容的图像检索技术研究[D];大连理工大学;2006年

9 鲍乾;结合汉明距离及语义的文本相似度量方法研究[D];杭州电子科技大学;2016年

10 何鹏;复杂机械产品系统相似性度量方法及其软件技术研究[D];合肥工业大学;2006年



本文编号:2876547

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/2876547.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户cca2e***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com