代码解析方法、装置及电子设备制造方法及图纸

技术编号:37873820 阅读:15 留言:0更新日期:2023-06-15 21:02
本申请实施例公开了代码解析方法、装置及电子设备,上述方法包括获取目标代码;确定上述目标代码中的单一函数对象;以上述目标代码中的单一函数对象为解析入口,对上述目标代码进行函数内部逻辑粒度的解析,得到解析结果;显示上述解析结果。本申请不仅可以分析代码中涉及到数据结构以及相关操作方法,还可以分析代码涉及到的内部逻辑,从而为用户提供内部逻辑粒度的代码解析结果,从而帮助用户快速明确代码逻辑,降低代码阅读理解耗时,降低代码理解难度,显著提升代码的开发和维护效率。显著提升代码的开发和维护效率。显著提升代码的开发和维护效率。

【技术实现步骤摘要】
代码解析方法、装置及电子设备


[0001]本申请实施例涉及计算机
,尤其涉及代码解析方法、装置及电子设备。

技术介绍

[0002]相关技术中对于代码的自动化理解主要是停留在对代码中数据类型、函数、函数间调用的理解层面,而对于函数内部逻辑无法进行有效的分析,也就是说,相关技术中对于代码进行自动化理解的粒度是较为粗糙的,这一弊端导致开发人员需要投入角度较多时间进行代码理解,才能够进行代码开发或者维护,从而降低了代码开发和维护效率。

技术实现思路

[0003]为了提升代码理解效率、开发和维护的效率,降低代码管理成本,便于相关技术人员从更细粒度解读代码,本申请实施例提供代码解析方法、装置及电子设备。
[0004]一方面,本申请实施例提供了一种代码解析方法,所述方法包括:
[0005]获取目标代码;
[0006]以所述目标代码中的单一函数对象为解析入口,对所述目标代码进行函数内部逻辑粒度的解析,得到解析结果;
[0007]显示所述解析结果。
[0008]另一方面,本申请实施例提供一种代码解析装置,所述装置包括:
[0009]目标代码获取模块,用于获取目标代码;
[0010]解析模块,用于以所述目标代码中的单一函数对象为解析入口,对所述目标代码进行函数内部逻辑粒度的解析,得到解析结果;
[0011]显示模块,用于显示所述解析结果。
[0012]另一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由处理器加载并执行以实现上述的一种代码解析方法。
[0013]另一方面,本申请实施例提供了一种电子设备,包括至少一个处理器,以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现上述的一种代码解析方法。
[0014]另一方面,本申请实施例提供了一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现上述的一种代码解析方法。
[0015]本申请提供的代码解析方法,该方法不仅可以分析代码中涉及到数据结构以及相关操作方法,还可以分析代码涉及到的内部逻辑,从而为用户提供内部逻辑粒度的代码解析结果,从而帮助用户快速明确代码逻辑,降低代码阅读理解耗时,本申请实施例中的方法可以被应用于以代码为基础构建的任何文档,比如,基于解析源文件得到不同方法之间的逻辑关系,不同微服务之间的上下游关系等。进一步地,本申请实施例还可以将自动化理解
结果以可视化的方式表达出来,从而直观帮助用户理解代码,进一步降低了代码理解难度,显著提升代码的开发和维护效率。
附图说明
[0016]为了更清楚地说明本申请实施例或相关技术中的技术方案和优点,下面将对实施例或相关技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
[0017]图1是本说明书实施例提供的代码解析方法的一种可行的实施框架示意图;
[0018]图2是本说明书实施例提供的一种代码解析方法的流程示意图;
[0019]图3是本说明书实施例提供的根据函数信息和数据信息对目标代码进行函数内部逻辑解析的流程示意图;
[0020]图4是本申请实施例提供的对mai n函数中一个函数进行分析的示意图;
[0021]图5是本申请实施例提供的渲染结果示意图;
[0022]图6是本申请实施例提供的代码解析装置的框图;
[0023]图7是本申请实施例提供的一种用于实现本申请实施例所提供的方法的设备的硬件结构示意图。
具体实施方式
[0024]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。
[0025]需要说明的是,本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请实施例的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0026]为了使本申请实施例公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请实施例进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请实施例,并不用于限定本申请实施例。
[0027]以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。为了便于理解本申请实施例上述的技术方案及其产生的技术效果,本申请实施例首先对于相关专业名词进行解释:
[0028]研发规范:软件研发过程中,会通过一系列的研发过程来保证输出的软件制品的
质量,包括制定团队的代码规范、安全规范、协作gitflow、自动化测试、代码评审、持续集成、持续交付等等,通过这些方法提升团队代码质量、业务运营质量。
[0029]Git:是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
[0030]Git Flow:是构建在Git之上的一个组织软件开发活动的模型,Git Flow 是一套使用Git进行源代码管理时的一套行为规范和简化部分Git操作的工具。一般而言,软件开发模型有常见的瀑布模型、迭代开发模型、以及敏捷开发模型等不同的模型。每种模型有各自应用场景。Git Flow重点解决的是由于源代码在开发过程中的各种冲突导致开发活动混乱的问题,可以很好的与各种现有开发模型相结合使用。Git Flow模型中定义了主分支和辅助分支两类分支。其中主分支用于组织与软件开发、部署相关的活动;辅助分支组织为了解决特定的问题而进行的各种开发活动。
[0031]代码质量:开发人员交付软件的质量有多个指标度量,千行bug(缺陷)数、圈复杂度、单文件源码行、单函数长度、注释是否规范、文档是否齐全、测试覆盖率等等。这些指标其实都是围绕着代码可读性来展开的,通过不同维度的约束来保证可读性。
[0032]代码可读性:代码本身应该可以被开发人本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码解析方法,其特征在于,所述方法包括:获取目标代码;以所述目标代码中的单一函数对象为解析入口,对所述目标代码进行函数内部逻辑粒度的解析,得到解析结果;显示所述解析结果。2.根据权利要求1所述的方法,其特征在于,所述以所述目标代码中的单一函数对象为解析入口,对所述目标代码进行函数内部逻辑粒度的解析,得到解析结果之前,所述方法还包括:对所述目标代码进行语法分析,得到所述目标代码对应的抽象语法树;基于所述抽象语法树对所述目标代码进行语义分析,得到所述目标代码的函数信息和数据信息;所述以所述目标代码中的单一函数对象为解析入口,对所述目标代码进行函数内部逻辑粒度的解析,得到解析结果,包括:以所述单一函数对象为解析入口,根据所述函数信息和所述数据信息对所述目标代码进行函数内部逻辑解析,得到所述解析结果。3.根据权利要求2所述的方法,其特征在于:所述函数信息包括下述至少之一:自定义函数信息、函数调用信息、远程过程调用信息、数据库访问信息、远程字典服务信息、函数内分支控制语句信息、函数内逻辑处理语句信息;所述数据信息包括下述至少之一:变量声明位置信息、变量类型信息、变量定义位置信息、变量标识信息。4.根据权利要求2或3所述的方法,其特征在于,根据所述函数信息和所述数据信息对所述目标代码进行函数内部逻辑解析,得到解析结果,包括:确定第一函数,所述第一函数为待进行所述函数内部逻辑分析的函数;扫描所述第一函数,得到至少一个动作执行语句;对所述至少一个动作执行语句进行递归语句分析,得到所述解析结果;所述递归语句分析中的每一个语句分析操作,包括:分析所述语句分析操作对应的动作执行语句,得到动作对象和操作信息,所述动作对象为所述操作信息对应的操作的触发者或接受者。5.根据权利要求4所...

【专利技术属性】
技术研发人员:张杰
申请(专利权)人:腾讯科技武汉有限公司
类型:发明
国别省市:

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

1