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

一种基于CPG+图的隐式依赖模式分析方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:西安交通大学

摘要:本发明公开了一种基于CPG+图的隐式依赖模式分析方法,本发明是条件性的获取程序依赖图,从而降低了生成代码的图结构中间表示形式的复杂度,并且由于添加了隐式依赖信息,从而可以从图中挖掘隐式依赖模式。通过对源代码进行解析和分析,生成抽象语法树,控制流图和程序依赖图,联合构建CPG+图,从而降低了生成代码的图结构中间表示形式的复杂度。可以快速且有效的对项目文件进行分析,并从中挖掘具体的隐式依赖模式,解决了目前隐式依赖模式仍然未知的问题,并且可以快速的从项目中获取具体的隐式依赖模式及数量。

主权项:1.一种基于CPG+图的隐式依赖模式分析方法,其特征在于,包括如下步骤:S1:输入Python项目,通过ENRE工具获取对象的依赖关系;S2:获取对象的抽象语法树;S3:预处理以便后续对图的操作;步骤S3具体包括:S301:当函数体中调用与控制流起始节点函数名相同的方法时,会出现指向控制流起始节点的边,造成循环,控制流起始节点是函数控制流的根节点,不应该存在父节点,在生产控制流的过程中进行删除;S302:由于是根据json数据生成抽象语法树,而ast2json项目只是简单的返回Python文件被AST库解析语法树后所有的属性和对应的值,在实际代码分析中,节点的“lineno开始行”属性和“end_lineno结束行”属性会被一些属性分开,在递归地处理json数据时,会造成节点只有“lineno开始行属性”,从而在后续的处理中发生错误,因此需要调整解析语法树后返回的json数据,对控制流图返回的语句节点规定排序,从而保证顺序一致,从而便于后续的图合并操作;S303:由于程序依赖图ProgramDependencyGraph,PDG与控制流图ControlFlowGraph,CFG都是在语句层面的解析,因此,先将PDG与CFG的信息联立,从而便于后续信息建立,为此通过CFG去寻找隐式依赖,从而无需在考虑PDG的节点顺序关系;S304:初始的绘制控制流图仅有基本的if、for语句的处理,根据出现频次,优先增加对raise、with、try-except语句的处理;添加Python特有的for-else、while-else语句;S4:获取代码中方法的控制流图,获取节点顺序;S5:若方法中含有隐式依赖,获得其隐式依赖发生节点的数据流;步骤S5具体包括:S501:正则化隐式依赖信息,并与源码匹配,寻找隐式依赖的源码;S502:从隐式依赖源码处往上寻找与隐式依赖有关的数据流,数据流可能存在分支,因此最终可能会有多条数据流指向隐式依赖;S6:合并抽象语法树、控制流图以及基于隐式依赖的数据流图;S7:从合并的图中通过VF2算法获得隐式依赖发生处,寻找它们的父节点,赋值替换,获取从函数到依赖发生处的变换,从而判断隐式依赖模式。

全文数据:

权利要求:

百度查询: 西安交通大学 一种基于CPG+图的隐式依赖模式分析方法

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