[发明专利]基于方法约束关系的代码预测模型的构建方法有效
申请号: | 201810327625.7 | 申请日: | 2018-04-12 |
公开(公告)号: | CN108572917B | 公开(公告)日: | 2021-05-25 |
发明(设计)人: | 刘琰;方文渊;魏强;刘楝;张文悦;左青松 | 申请(专利权)人: | 中国人民解放军战略支援部队信息工程大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 郑州大通专利商标代理有限公司 41111 | 代理人: | 陈勇 |
地址: | 450000 河*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 方法 约束 关系 代码 预测 模型 构建 | ||
1.基于方法约束关系的代码预测模型的构建方法,其特征在于,包括以下步骤:
步骤1:将面向对象代码抽象为对象涉及的方法调用语句序列集合,所述方法调用语句序列集合包括多个方法调用语句序列;所述方法调用语句序列包括一个对象涉及的所有方法调用语句;
步骤2:根据面向对象代码中对象涉及的方法之间的约束关系,将所述方法调用语句序列的方法调用语句表示为四元特征组,根据所述四元特征组得出所述面向对象代码的代码特征词序列集合;
步骤3:利用N-gram模型将所述代码特征词序列集合滑动切分为多个3-gram序列,提取调用所述3-gram序列,构建代码预测模型。
2.根据权利要求1所述的基于方法约束关系的代码预测模型的构建方法,其特征在于,所述步骤1包括:
步骤1.1:将面向对象代码中的方法调用语句根据对象的不同进行分类,方法调用语句之间的相互顺序保持不变,对于包含多个对象的方法调用语句复制多份,放入每个对象中,Code={Object1,Object2,…,Objectn},Object=Method1·Method2…Methodn
其中Objectn表示第n个对象涉及到的所有方法调用语句,即第n个对象涉及到的方法调用语句序列;Methodn表示同一个方法调用语句序列中的第n个方法调用语句;
源代码被转化为若干个对象涉及的方法调用语句序列集合;
步骤1.2:对面向对象代码中的别名现象和代码结构进行分析,并根据分析结果调整所述步骤1.1中所述方法调用语句序列集合,包括:
对指向同一地址的不同别名进行归并,视为同一对象;
对于条件选择结构,将Objectn根据条件的不同分成若干个相互独立的、不含有条件选择结构的子序列;
对于循环结构,将循环的迭代次数统一限定为2次;
步骤1.3:将所述步骤1.2调整后的方法调用语句序列集合根据所属类的不同进行分类Code={Class1,Class2,…,Classn},将类中每个对象涉及的方法调用语句视为一个单独序列Class={SeqObject1,SeqObject2,…,SeqObjectn},Seq=Method1·Method2Methodn,其中Classn表示第n个类涉及到的所有方法调用语句,SeqObjectn表示同一个类中第n个对象涉及到的方法调用语句序列;
综上,面向对象代码被抽象为3个层次,即所述方法调用语句序列集合为:
3.根据权利要求1所述的基于方法约束关系的代码预测模型的构建方法,其特征在于,所述四元特征组为:
Method=<ClassN,Name,Return,Relation> (2)
其中Method为对象的一个方法调用语句,ClassN为类名,Name为方法名,Return为方法的返回类型,Relation为对象和方法的关系;
所述Relation取值方式如下:
4.根据权利要求2或3所述的基于方法约束关系的代码预测模型的构建方法,其特征在于,所述代码特征词序列集合为:
5.根据权利要求2所述的基于方法约束关系的代码预测模型的构建方法,其特征在于,所述步骤3包括:
步骤3.1:利用N-gram模型,将所述步骤2中代码特征词序列集合的代码特征序列滑动切分成3-gram片段,Code={s1,s2,…,sn},s=Method1·Method2·Method3,Method=<ClassN,Name,Return,Relation>,其中sn为第n个3-gram片段,s为一个3-gram片段,表示对象连续涉及到的3次方法调用语句序列;
步骤3.2:通过对面向对象代码进行训练,统计不同的3-gram片段s出现的频率;
步骤3.3:利用马尔科夫假设思想,通过所述步骤3.2的统计结果构建代码预测模型,所述代码预测模型用于预测方法调用语句Method3出现的概率,所述代码预测模型为:
其中α和V为平滑参数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军战略支援部队信息工程大学,未经中国人民解放军战略支援部队信息工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810327625.7/1.html,转载请声明来源钻瓜专利网。