[发明专利]分析微服务架构下函数调用关系的方法及装置在审
| 申请号: | 202210917970.2 | 申请日: | 2022-08-01 | 
| 公开(公告)号: | CN115344305A | 公开(公告)日: | 2022-11-15 | 
| 发明(设计)人: | 张国昊;马晓刚 | 申请(专利权)人: | 北京百度网讯科技有限公司 | 
| 主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F8/71;G06F8/74;G06F9/445 | 
| 代理公司: | 北京钲霖知识产权代理有限公司 11722 | 代理人: | 李英艳;杨继成 | 
| 地址: | 100085 北京市*** | 国省代码: | 北京;11 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 分析 微服 架构 函数 调用 关系 方法 装置 | ||
1.一种分析微服务架构下函数调用关系的方法,包括:
获取多个函数作为静态指针分析起点;
根据所述静态指针分析起点对目标代码库进行静态程序分析,并根据分析结果生成函数调用图,所述函数调用图中包括基于所述静态指针分析起点确定的多个调用边,所述调用边用于表征以静态指针分析起点作为调用者节点进行函数调用的函数调用关系;
遍历所述函数调用图中包括的多个调用边,得到存储至图数据库中的目标调用边。
2.根据权利要求1所述的方法,其中,所述遍历所述函数调用图中包括的多个调用边,得到存储至图数据库中的目标调用边,包括:
遍历所述函数调用图中包括的多个调用边,并确定所述多个调用边中每一调用边的调用类型,所述调用类型包括服务内调用或服务间调用;
确定调用类型为服务内调用的第一调用边;
基于所述第一调用边确定目标调用边,并将所述目标调用边存储至图数据库。
3.根据权利要求2所述的方法,其中,所述基于所述第一调用边确定目标调用边,包括:
在所述第一调用边中筛选符合预设要求的第一调用边,作为目标调用边。
4.根据权利要求2所述的方法,还包括:
确定调用类型为服务间调用的第二调用边,以及所述第二调用边所对应的被调用者节点;
若所述被调用者节点为预设节点,则将所述第二调用边存储至所述图数据库中。
5.根据权利要求4所述的方法,还包括:
若所述被调用者节点不是预设节点,则提取所述第二调用边的实参,所述实参包括服务名称和功能名称;
查询所述图数据库中是否存在匹配所述实参的调用边,并基于查询结果确定对所述第二调用边的处理方式,所述处理方式包括丢弃或者存储至图数据库。
6.根据权利要求5所述的方法,其中,所述基于查询结果确定对所述第二调用边的处理方式,包括:
若所述查询结果为未查询到存在匹配所述实参的调用边,则确定对所述第二调用边的处理方式为丢弃;
若所述查询结果为查询到存在匹配所述实参的调用边,且所述调用边为单一的调用边,则基于匹配所述实参的调用边和所述第二调用边,生成目标调用边,并存储至所述图数据库中;
若所述查询结果为查询到存在匹配所述实参的调用边,且所述调用边的数量两个或两个以上,则确定对所述第二调用边的处理方式为丢弃。
7.根据权利要求4所述的方法,还包括:
在所述图数据库中剔除以所述第二调用边的被调用者节点为起点的子树;或者
在所述图数据库中切断以所述第二调用边的被调用者节点为起点的第三调用边;或者
在所述函数调用图中剔除以所述第二调用边为起点的子树。
8.根据权利要求4所述的方法,其中,所述多个函数包括主函数和/或非主函数。
9.一种分析微服务架构下函数调用关系的装置,包括:
获取模块,用于获取多个函数作为静态指针分析起点;
分析模块,用于根据所述静态指针分析起点对目标代码库进行静态程序分析,并根据分析结果生成函数调用图,所述函数调用图中包括基于所述静态指针分析起点确定的多个调用边,所述调用边用于表征以静态指针分析起点作为调用者节点进行函数调用的函数调用关系;
处理模块,用于遍历所述函数调用图中包括的多个调用边,得到存储至图数据库中的目标调用边。
10.根据权利要求9所述的装置,其中,
所述处理模块,具体用于遍历所述函数调用图中包括的多个调用边,并确定所述多个调用边中每一调用边的调用类型,所述调用类型包括服务内调用或服务间调用;确定调用类型为服务内调用的第一调用边;基于所述第一调用边确定目标调用边,并将所述目标调用边存储至图数据库。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京百度网讯科技有限公司,未经北京百度网讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210917970.2/1.html,转载请声明来源钻瓜专利网。





