跨语言软件源代码的综合依赖关系分析制造技术

技术编号:37502570 阅读:50 留言:0更新日期:2023-05-07 09:38
本发明专利技术提供一种跨语言软件源代码的综合依赖关系分析,包括在目标代码文件中插入依赖检测代码,通过所述依赖检测代码获取所述目标代码文件中所有的数据访问信息;若所述数据访问信息中两个不同的类信息访问同一内存,则分别提取所述两个不同的类信息的变量信息和控制逻辑信息,并基于所述变量信息和所述控制逻辑信息生成对应的代码流程图;基于预设的图相似度检测算法确定不同代码流程图的相似度,若所述相似度符合预设相似度阈值,则基于所述代码流程图的节点引用关系以及连接边的类别,确定所述目标代码文件中的数据依赖关系和函数依赖关系。本发明专利技术的方法能够获取多个层面的依赖关系,从而为架构分析,质量保障提供数据支撑。撑。撑。

【技术实现步骤摘要】
跨语言软件源代码的综合依赖关系分析


[0001]本专利技术涉及软件开发
,尤其涉及一种跨语言软件源代码的综合依赖关系分析。

技术介绍

[0002]现有跨语言代码依赖关系检测主要包括基于中间特征的检测方法,基于中间特征的方法将不同语言编写的代码转换为某一种中间特征,如中间语言或基于树的中间表示,然后基于中间表示直接度量两段代码的相似度。这类方法忽略了代码的结构特征,且对编译器的依赖性较强,并且计算代价较高。

技术实现思路

[0003]本专利技术实施例的第一方面,提供一种跨语言软件源代码的综合依赖关系分析方法,包括:在目标代码文件中插入依赖检测代码,通过所述依赖检测代码获取所述目标代码文件中所有的数据访问信息,其中,所述数据访问信息包括读操作信息和写操作信息;若所述数据访问信息中两个不同的类信息访问同一内存,则分别提取所述两个不同的类信息的变量信息和控制逻辑信息,并基于所述变量信息和所述控制逻辑信息生成对应的代码流程图,其中,所述代码流程图包括所述变量信息对应的节点以及所述控制逻辑信息对应的连接边;基于预设的图相似度检测算法确本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种跨语言软件源代码的综合依赖关系分析方法,其特征在于,包括:在目标代码文件中插入依赖检测代码,通过所述依赖检测代码获取所述目标代码文件中所有的数据访问信息,其中,所述数据访问信息包括读操作信息和写操作信息;若所述数据访问信息中两个不同的类信息访问同一内存,则分别提取所述两个不同的类信息的变量信息和控制逻辑信息,并基于所述变量信息和所述控制逻辑信息生成对应的代码流程图,其中,所述代码流程图包括所述变量信息对应的节点以及所述控制逻辑信息对应的连接边;基于预设的图相似度检测算法确定不同代码流程图的相似度,若所述相似度符合预设相似度阈值,则基于所述代码流程图的节点引用关系以及连接边的类别,确定所述目标代码文件中的数据依赖关系和函数依赖关系。2.根据权利要求1所述的方法,其特征在于,所述在目标代码文件中插入依赖检测代码,通过所述依赖检测代码获取所述目标代码文件中所有的数据访问信息包括:在所述目标代码文件的每个函数的每条读写指令均进行插桩,获取所述目标代码文件的运行代码的访问足迹信息,其中,所述访问足迹信息包括所述运行代码访问地址所处的文件名、文件行号、变量名称、变量长度以及本次读写所发生的迭代次数中至少一种信息;将所述访问足迹信息转换成字符串信息,通过向前遍历指令,在预设运行数据库中获取与所述字符串信息中的关键词对应的读操作信息和写操作信息。3.根据权利要求1所述的方法,其特征在于,所述基于所述变量信息和所述控制逻辑信息生成对应的代码流程图包括:将所述变量信息转化为所述代码流程图的节点信息,并判断所述变量信息在所述类信息中是否首次出现,若是,则将所述变量信息作为父节点,若否,则根据所述控制逻辑信息将所述变量信息连接至对应的父节点,将所述代码流程图的节点信息存储在节点队列空间中;将所述控制逻辑信息转化为所述代码流程图的连接边信息,并基于对应节点间的控制逻辑连接对应的节点,生成初始连通图;基于预设节点匹配函数,遍历所述节点队列空间中所有节点,将所述节点队列空间中的每一个节点与所述初始连通图中的任一节点进行匹配,若匹配,则保留所述初始连通图中匹配的节点,若不匹配,则将不匹配的节点从所述初始连通图中移除,得到所述代码流程图。4.根据权利要求1所述的方法,其特征在于,所述基于所述变量信息和所述控制逻辑信息生成对应的代码流程图之后,所述方法还包括:判断所述代码流程图中相邻节点是否存在逻辑关系,其中,所述逻辑关系包括数据依赖关系和控制依赖关系中至少一种;若存在逻辑关系,则保持相邻节点在所述代码流程图中的位置,若不存在逻辑关系,则将所述相邻节点进行合并;和/或确定所述代码流程图中连接边构成的环路,并将涉及所述环路最多类型的连接边进行删除。5.根据权利要求1所述的方法,其特征在于,所述基于预设的图相似度检测算法确定不
同代码流程图的相似度包括:将所述代码流程图中的节点映射为节点特征,并根据所述代码流程图中的节...

【专利技术属性】
技术研发人员:李洪胡鹤轩张鹏程谭国平胡强
申请(专利权)人:南京优测信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1