全网唯一标准王
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210724301.3 (22)申请日 2022.06.23 (71)申请人 深圳市腾讯计算机系统有限公司 地址 518000 广东省深圳市南 山区高新区 高新南一路飞亚达大厦5-10楼 申请人 华中科技大 学 (72)发明人 魏昭 许勇 毕彰谦 万瑶  (74)专利代理 机构 北京同达信恒知识产权代理 有限公司 1 1291 专利代理师 朱佳 (51)Int.Cl. G06F 16/22(2019.01) G06F 16/23(2019.01) G06F 8/41(2018.01) (54)发明名称 代码索引生成方法、 装置、 设备及计算机存 储介质 (57)摘要 本申请公开了一种代码索引生成方法、 装 置、 设备及计算机存储介质, 涉及代码管理技术 领域, 针对企业海量仓库等编译环 境情况复杂等 场景, 提出了一种结合编译器前端技术与轻量级 语义符号增强分析机制的全量精准代码导航索 引生成方法, 在该方法中, 通过对源代码进行语 法分析和语义分析, 构建定义、 引用关系图, 并对 标识符分析出错的文件进行符号增强分析, 以更 新之前生成的定义、 引用关系图, 来获得目标项 目更为完整的代码索引, 有效的解决了编译型语 言在编译错误情况下无法生成代码导航索引的 技术问题, 提升了生成的代码导航索引的召回 率。 权利要求书3页 说明书22页 附图9页 CN 115114287 A 2022.09.27 CN 115114287 A 1.一种代码索引生成方法, 其特 征在于, 所述方法包括: 基于目标项目的源代码的语法分析结果和语义分析结果, 生成所述目标项目对应的定 义引用关系图, 所述定义引用关系图用于指示: 各符号定义对应的第一引用集合, 每个第一 引用集合包括一个符号定义对应的被引用标识符; 确定所述目标项目中标识符解析出错的至少一个代码文件, 并对所述至少一个代码文 件各自对应的抽象语法树进行定义引用关系分析, 获得多个引用关系对, 每个引用关系对 包含: 每个标识符引用节点中被引用标识符与相应的符号定义之间的跳转链接信息; 基于所述多个引用关系对, 对所述定义引用关系图进行更新, 并基于更新后的定义引 用关系图, 获得 所述目标项目对应的代码索引。 2.如权利要求1所述的方法, 其特征在于, 对所述至少一个代码文件各自对应的抽象语 法树进行定义引用关系分析, 获得多个引用关系对, 包括: 分别获取 所述至少一个代码文件各自对应的抽象语法树; 基于获得的至少一个抽象语法树包含的标识符定义节点, 获得所述至少一个代码文件 包含的各标识符的符号定义; 基于所述至少一个抽象语法树包含的标识符引用节点中引用标识符对应的符号定义, 获得所述多个引用关系对。 3.如权利要求2所述的方法, 其特征在于, 基于所述至少一个抽象语法树包含的标识符 引用节点中引用标识符对应的符号定义, 获得 所述多个引用关系对, 包括: 针对各标识符引用节点, 分别执 行如下的操作: 针对一个标识符引用节点, 获取相应的表达式语句中引用分隔符的前缀内容; 若所述前缀内容为引用标识符, 则基于所述引用标识符的符号类型, 确定所述前缀内 容的前缀类型; 从所述前缀类型对应的各标识符中, 查找与所述引用分隔符之后的被引用标识符的名 称相同的标识符, 并基于所述被引用标识符以及查找得到的标识符的符号定义, 生成相应 的引用关系对。 4.如权利要求3所述的方法, 其特征在于, 在针对一个标识符引用节点, 获取相应的表 达式语句中引用分隔符的前缀内容之后, 所述方法还 包括: 若所述前缀内容为表达式语句, 则迭代获取所述前缀内容中引用分隔符的前缀内容, 直至获得的前缀内容 为引用标识符; 从最后一 次获得的前缀内容开始, 迭代生成每个前缀内容对应的被引用标识符对应的 引用关系对, 直至生成整个表达式语句中所有的被引用标识符对应的引用关系对为止 。 5.如权利要求3所述的方法, 其特征在于, 基于所述引用标识符的符号类型, 确定所述 前缀内容的前缀类型, 包括: 若所述符号类型为类, 则从所述各标识符包括的类对应的标识符中, 查找与所述引用 标识符的名称相同的标识符, 并将查找得到的标识符的符号名称确定为所述前缀类型; 若所述符号类型为函数, 则从所述各标识符包括的函数对应的标识符中, 查找与所述 引用标识符的名称相同的标识符, 并将查找得到的标识符的返回类型确定为所述前缀类 型; 若所述符号类型为变量, 则从所述各标识符包括的变量对应的标识符中, 查找与所述权 利 要 求 书 1/3 页 2 CN 115114287 A 2引用标识符的名称相同的标识符, 并将查找得到的标识符的定义类型确定为所述前缀类 型。 6.如权利要求1~5任一所述的方法, 其特征在于, 基于所述多个引用关系对, 对所述定 义引用关系图进行 更新, 包括: 针对所述多个引用关系对中各符号定义, 分别执 行如下操作: 针对一个符号定义, 获取所述一个符号定义对应的第二引用集合, 所述第二引用集合 包含: 所述一个符号定义所在的各引用关系对各自对应的被引用标识符; 将所述第二引用集合与所述定义引用关系图中所述一个符号定义对应的第一引用集 合进行比较, 获得比较结果; 若所述比较结果指示所述第 二引用集合相对于所述第 一引用集合存在差集, 则合并所 述差集与所述第一引用集 合。 7.如权利要求1~5任一所述的方法, 其特征在于, 基于更新后的定义引用关系图, 获得 所述目标项目对应的代码索引, 包括: 针对所述更新后的定义引用关系图中的各定义节点和各引用节点, 分别确定相应的可 索引对象以及对应的索引内容; 根据定义节点与引用节点之间的关系, 确定相应的可索引对象之间的关联关系; 基于获得的可索引对象以及对应的索引内容, 以及可索引对象之间的关联关系, 生成 所述代码索引, 所述代码索引包括各可索引对 象以及索引内容组成的符号信息表, 以及指 示可索引对象之间的关联关系的定义引用关系表。 8.如权利要求7所述的方法, 其特征在于, 根据定义节点与引用节点之间的关系, 确定 相应的可索引对象之间的关联关系, 包括: 针对所述更新后的定义引用关系图中的各定义节点, 分别执 行如下操作: 针对一个定义节点, 采用深度优先搜索方法, 从所述一个定义节点的下属节点中确定 出引用节点; 基于定义节点与引用节点之间的连接关系, 确定相应的可索引对象之间的关联关系。 9.如权利要求7所述的方法, 其特征在于, 采用深度优先搜索方法, 从所述一个定义节 点的下属节点中确定出引用节点, 包括: 在所述更新后的定义引用关系图中, 从所述一个定义节点的出口节点, 确定出查询结 果节点; 从所述查询结果节点的出口节点中, 确定出引用集 合节点; 从所述引用集 合节点的关联项中, 确定所述 一个定义节点的引用节点。 10.一种代码索引生成装置, 其特 征在于, 所述装置包括: 关系图生成单元, 用于基于目标项目的源代码的语法分析结果和语义分析结果, 生成 所述目标项目对应的定义引用关系图, 所述定义引用关系图用于指示: 各符号定义对应的 第一引用集 合, 每个第一引用集 合包括一个符号定义对应的被引用标识符; 增强分析单元, 用于确定所述目标项目中标识符解析出错的至少一个代码文件, 并对 所述至少一个代码文件各自对应的抽象语法树进 行定义引用关系分析, 获得多个引用关系 对, 每个引用关系对包含: 每个标识符引用节点中被引用标识符与相应的符号定义之间的 跳转链接信息;权 利 要 求 书 2/3 页 3 CN 115114287 A 3

PDF文档 专利 代码索引生成方法、装置、设备及计算机存储介质

文档预览
中文文档 35 页 50 下载 1000 浏览 0 评论 0 收藏 3.0分
温馨提示:本文档共35页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 代码索引生成方法、装置、设备及计算机存储介质 第 1 页 专利 代码索引生成方法、装置、设备及计算机存储介质 第 2 页 专利 代码索引生成方法、装置、设备及计算机存储介质 第 3 页
下载文档到电脑,方便使用
本文档由 SC 于 2024-02-24 00:49:26上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。