首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种基于依赖结构特征的Feature Envy代码坏味检测方法_东南大学_202110989734.7 

申请/专利权人:东南大学

申请日:2021-08-26

公开(公告)日:2024-05-17

公开(公告)号:CN113703774B

主分类号:G06F8/41

分类号:G06F8/41

优先权:

专利状态码:有效-授权

法律状态:2024.05.17#授权;2021.12.14#实质审查的生效;2021.11.26#公开

摘要:本发明公开了一种基于依赖结构特征的FeatureEnvy代码坏味检测方法,从多种类型依赖出发,检测FeatureEnvy依恋情结代码坏味道。该方法包括:依赖结构图构建,源代码依赖提取,坏味道检测三个步骤:依赖结构图构建是结合代码坏味依赖结构图定义代码坏味道的结构特征,依赖图表示实体与实体之间的依赖关系,其中的实体是指类以及类中所包含的方法;源代码依赖提取是对程序源代码进行解析,提取出源代码实体之间各种依赖关系;坏味道检测是通过分析各类依赖关系与相应的代码坏味道特征进行匹配得出是否存在该代码坏味道。

主权项:1.一种基于依赖结构特征的FeatureEnvy代码坏味道检测方法,其特征在于,该方法包括如下步骤:步骤1依赖结构图构建,为FeatureEnvy代码坏味道构建依赖结构图,在表示坏味道的依赖结构图中,结点表示方法和类,结点之间的关系包括继承,实现,聚合,参数依赖,实例化,返回值依赖,函数调用;步骤2源代码依赖提取,程序源代码进行解析,提取出源代码实体之间的各种依赖关系;步骤3代码坏味道检测,通过分析各种依赖关系计算依赖强度,检测出具有FeatureEnvy的方法以及其所依恋的类;其中,所述步骤1依赖结构图构建,具体如下:结合FeatureEnvy代码坏味道定义,构建FeatureEnvy代码坏味道结构依赖图,FeatureEnvy代码坏味道的依赖结构图是一个包含一个起点和多个终点的有向图,依赖图的定义包括结点集合V={v1,v2,...,vi,...,vn},其中vi表示图中的结点,1=i=n,n是结点的总数;边的集合包括E={e1,e2,...ej,...em},其中ej表示图中的边,1=j=m,m是边的总数;结点的类型包括类class和方法method,其中,只有起点的类型是方法method,所有终点的类型都是类class;边的类型包括继承extends依赖,聚合aggregation依赖,参数依赖parameters,实例化instantiation依赖,返回值依赖return,函数调用invoke依赖,实现implements依赖;其中,所述步骤2源代码依赖提取,具体如下:根据源代码解析工具对程序源代码进行解析,首先将程序源代码转化成抽象语法树AbstractSyntaxTree,AST,抽象语法树是一种中间表示形式用来表示程序源代码,是一种树形的数据结构,树上的每个结点代表着相应的语法结构,通过分析抽象语法树,提取单个方法实体M的所依赖的类实体C1,C2,...Ci,...Cn,以及M与Ci七种依赖关系以及对应依赖关系的依赖次数,其中依赖关系包括继承extends,聚合aggregation,参数依赖parameters,实例化instantiation,返回值依赖return,函数调用invoke,实现implements;其中,所述步骤3代码坏味道检测,具体如下:根据如下公式计算方法实体M与其所依赖的类实体C1,C2,...Ci,...Cn各自的依赖强度,其中与方法实体M依赖强度最高的类实体Ci,1=i=n,就是方法M所依恋的类,如果与方法实体M依赖强度最高的类Ci是方法实体M本身所在的类,那么该方法就不具有FeatureEnvy代码坏味道,否则,就判断该方法具有FeatureEnvy代码坏味道,如果A表示方法实体M,B表示类实体Ci,1=i=n,则A与B之间的依赖强度表示为: 其中LocA表示实体A的有效代码行,DependTypei表示依赖类型i的依赖次数,wi表示该依赖类型的权重,依赖类型为:继承、实现、聚合、参数、实例化、返回值、调用;上述依赖类型分别对应的权重为:3、3、2、1、1、1、1。

全文数据:

权利要求:

百度查询: 东南大学 一种基于依赖结构特征的Feature Envy代码坏味检测方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。