CN110096281B - 代码解析方法、解析服务器、存储介质及装置 - Google Patents
代码解析方法、解析服务器、存储介质及装置 Download PDFInfo
- Publication number
- CN110096281B CN110096281B CN201910336597.XA CN201910336597A CN110096281B CN 110096281 B CN110096281 B CN 110096281B CN 201910336597 A CN201910336597 A CN 201910336597A CN 110096281 B CN110096281 B CN 110096281B
- Authority
- CN
- China
- Prior art keywords
- code
- preset
- analyzed
- variable
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及代码调试技术领域,公开了一种代码解析方法、解析服务器、存储介质及装置。本发明中基于预设代码传输协议接收预设客户端发送的待解析代码;根据待解析代码确定对应的目标解析器标识;在多个预设解析器中选取与目标解析器标识对应的目标解析器;在预设隔离运行环境中通过目标解析器对待解析代码进行解析,以获得解析结果。明显地,本发明中将通过预设代码传输协议将待解析代码由客户端侧传递至解析服务器侧,并由解析服务器侧进行代码解析操作,不要求客户端本地具备代码解析的相关条件,进而解决了客户端本地的代码解析器无法完成代码解析操作的技术问题。
Description
技术领域
本发明涉及代码调试技术领域,尤其涉及代码解析方法、解析服务器、存储介质及装置。
背景技术
在代码调试的过程中,若将操作人员实际使用的电子设备简记为用户设备,这就要求用户设备具备代码调试需要的调试环境。
比如,若以Python语言为例,Python为一种解释型脚本语言,当欲调试Python代码时,这就要求用户设备本地安装有适配的Python解析器(parser)。
首先,Python解析器的安装需要一定的专业知识,而且,若用户设备运行的操作系统不同,Python解析器的安装存在差异。
其次,不同的用户设备使用的Python解析器可能在版本上存在区别,而且,相同版本的Python解析器的类库也可能有差异。这就导致了用户设备侧本地已安装的Python解析器并一定能够适配当前欲调试的Python代码。
故而,产生了本地的代码解析器无法完成代码解析操作的技术问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供代码解析方法、解析服务器、存储介质及装置,旨在解决本地的代码解析器无法完成代码解析操作的技术问题。
为实现上述目的,本发明提供一种代码解析方法,所述代码解析方法包括以下步骤:
基于预设代码传输协议接收预设客户端发送的待解析代码;
根据所述待解析代码确定对应的目标解析器标识;
在多个预设解析器中选取与所述目标解析器标识对应的目标解析器;
在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果。
优选地,所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果之前,所述代码解析方法还包括:
获取处于空闲状态的待使用虚拟机;
通过所述待使用虚拟机创建预设隔离运行环境。
优选地,所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果,具体包括:
在预设隔离运行环境中从所述待解析代码中查找待替换变量;
将所述待解析代码中的所述待替换变量替换为预设变量,以获得变量替换后的代码;
在预设隔离运行环境中通过所述目标解析器对变量替换后的代码进行解析,以获得解析结果。
优选地,所述在多个预设解析器中选取与所述目标解析器标识对应的目标解析器之后,所述代码解析方法还包括:
检测所述待解析代码中是否包括预设注入信息;
在不包括所述预设注入信息时,执行所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果的步骤。
优选地,所述在多个预设解析器中选取与所述目标解析器标识对应的目标解析器之后,所述代码解析方法还包括:
通过预设语法分析树检测所述待解析代码是否符合预设语法逻辑;
在符合所述预设语法逻辑时,执行所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果的步骤。
优选地,所述基于预设代码传输协议接收预设客户端发送的待解析代码,具体包括:
基于预设代码传输协议接收预设客户端发送的待解析代码以及与所述待解析代码对应的断点记录表;
相应地,所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果之后,所述代码解析方法还包括:
从所述断点记录表中读取代码断点;
根据所述待解析代码确定对应的待解析变量;
在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,读取与所述待解析变量对应的断点变量信息;
根据所述代码断点、所述待解析变量以及所述断点变量信息生成变量数据表。
优选地,所述在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,读取与所述待解析变量对应的断点变量信息,具体包括:
在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,暂停代码解析操作,并读取与所述待解析变量对应的断点变量信息;
相应地,所述在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,暂停代码解析操作,并读取与所述待解析变量对应的断点变量信息之后,所述代码解析方法还包括:
在接收到所述预设客户端发送的继续解析请求时,将所述代码断点作为起始位置恢复代码解析操作。
此外,为实现上述目的,本发明还提出一种解析服务器,所述解析服务器包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码解析程序,所述代码解析程序配置为实现如上文所述的代码解析方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有代码解析程序,所述代码解析程序被处理器执行时实现如上文所述的代码解析方法的步骤。
此外,为实现上述目的,本发明还提出一种代码解析装置,所述代码解析装置包括:
代码传输模块,用于基于预设代码传输协议接收预设客户端发送的待解析代码;
标识确定模块,用于根据所述待解析代码确定对应的目标解析器标识;
解析器确定模块,用于在多个预设解析器中选取与所述目标解析器标识对应的目标解析器;
代码解析模块,用于在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果。
本发明中基于预设代码传输协议接收预设客户端发送的待解析代码;根据所述待解析代码确定对应的目标解析器标识;在多个预设解析器中选取与所述目标解析器标识对应的目标解析器;在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果。明显地,本发明中将通过预设代码传输协议将待解析代码由客户端侧传递至解析服务器侧,并由解析服务器侧进行代码解析操作,不要求客户端本地具备代码解析的相关条件,进而解决了客户端本地的代码解析器无法完成代码解析操作的技术问题。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的解析服务器结构示意图;
图2为本发明代码解析方法第一实施例的流程示意图;
图3为本发明代码解析方法第二实施例的流程示意图;
图4为本发明代码解析方法第三实施例的流程示意图;
图5为本发明代码解析装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的解析服务器结构示意图。
如图1所示,该解析服务器可以包括:处理器1001,例如中央处理器(CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display),可选用户接口1003还可以包括标准的有线接口以及无线接口,而用户接口1003的有线接口在本发明中可为通用串行总线(Universal Serial Bus,USB)接口。网络接口1004可选的可以包括标准的有线接口以及无线接口(如WI-FI接口)。存储器1005可以是高速随机存取存储器(Random Access Memory,RAM);也可以是稳定的存储器,比如,非易失存储器(Non-volatile Memory),具体可为,磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对解析服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及代码解析程序。
在图1所示的解析服务器中,网络接口1004主要用于连接后台服务器,与所述后台服务器进行数据通信;用户接口1003主要用于连接外设;所述解析服务器通过处理器1001调用存储器1005中存储的代码解析程序,并执行以下操作:
基于预设代码传输协议接收预设客户端发送的待解析代码;
根据所述待解析代码确定对应的目标解析器标识;
在多个预设解析器中选取与所述目标解析器标识对应的目标解析器;
在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果。
进一步地,处理器1001可以调用存储器1005中存储的代码解析程序,还执行以下操作:
获取处于空闲状态的待使用虚拟机;
通过所述待使用虚拟机创建预设隔离运行环境。
进一步地,处理器1001可以调用存储器1005中存储的代码解析程序,还执行以下操作:
在预设隔离运行环境中从所述待解析代码中查找待替换变量;
将所述待解析代码中的所述待替换变量替换为预设变量,以获得变量替换后的代码;
在预设隔离运行环境中通过所述目标解析器对变量替换后的代码进行解析,以获得解析结果。
进一步地,处理器1001可以调用存储器1005中存储的代码解析程序,还执行以下操作:
检测所述待解析代码中是否包括预设注入信息;
在不包括所述预设注入信息时,执行所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果的步骤。
进一步地,处理器1001可以调用存储器1005中存储的代码解析程序,还执行以下操作:
通过预设语法分析树检测所述待解析代码是否符合预设语法逻辑;
在符合所述预设语法逻辑时,执行所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果的步骤。
进一步地,处理器1001可以调用存储器1005中存储的代码解析程序,还执行以下操作:
基于预设代码传输协议接收预设客户端发送的待解析代码以及与所述待解析代码对应的断点记录表;
相应地,还执行以下操作:
从所述断点记录表中读取代码断点;
根据所述待解析代码确定对应的待解析变量;
在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,读取与所述待解析变量对应的断点变量信息;
根据所述代码断点、所述待解析变量以及所述断点变量信息生成变量数据表。
进一步地,处理器1001可以调用存储器1005中存储的代码解析程序,还执行以下操作:
在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,暂停代码解析操作,并读取与所述待解析变量对应的断点变量信息;
相应地,还执行以下操作:
在接收到所述预设客户端发送的继续解析请求时,将所述代码断点作为起始位置恢复代码解析操作。
本实施例中基于预设代码传输协议接收预设客户端发送的待解析代码;根据所述待解析代码确定对应的目标解析器标识;在多个预设解析器中选取与所述目标解析器标识对应的目标解析器;在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果。明显地,本实施例将通过预设代码传输协议将待解析代码由客户端侧传递至解析服务器侧,并由解析服务器侧进行代码解析操作,不要求客户端本地具备代码解析的相关条件,进而解决了客户端本地的代码解析器无法完成代码解析操作的技术问题。
基于上述硬件结构,提出本发明代码解析方法的实施例。
参照图2,图2为本发明代码解析方法第一实施例的流程示意图。
在第一实施例中,所述代码解析方法包括以下步骤:
步骤S10:基于预设代码传输协议接收预设客户端发送的待解析代码。
可以理解的是,本实施例的执行主体为解析服务器,而非客户端,解析服务器与客户端之间可通过预设代码传输协议来传输待解析代码。客户端可为用户实际操作的个人电脑等电子设备,也可为个人电脑上运行的某客户侧软件。明显地,本实施例描述的代码解析操作实际上发生在解析服务器侧,这也就不要求客户端侧是否具备代码解析的相关条件,比如,客户端侧本地是否具备与待解析代码适配的解析器以及类库。
在具体实现中,若待解析代码属于Python代码,预设代码传输协议可为超文本传输协议(HyperText Transfer Protocol,HTTP),通过HTTP协议来完成Python代码的传输操作,不要求客户端侧本地安装有Python运行环境以及相关软件,进一步地简化了客户端的运行环境。
步骤S20:根据所述待解析代码确定对应的目标解析器标识。
应当理解的是,Python代码内可预先记有其适配的Python解析器的类型,可将该类型记为目标解析器标识。比如,目标解析器标识可为Python解析器的版本号参数。
步骤S30:在多个预设解析器中选取与所述目标解析器标识对应的目标解析器。
在具体实现中,可在解析服务器中预先配置有大量的预设解析器,使得解析服务器可兼容Python3.5以上的语法及关键字。
步骤S40:在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果。
可以理解的是,可根据版本号参数在多个预设解析器中查询到适配的预设解析器,并通过该适配的预设解析器在预先搭建的预设隔离运行环境中来解析这段Python代码。
此外,在预设隔离运行环境中也提供近百个常见的Python第三方类库,以供待解析代码在解析时按需调用。
本实施例中基于预设代码传输协议接收预设客户端发送的待解析代码;根据所述待解析代码确定对应的目标解析器标识;在多个预设解析器中选取与所述目标解析器标识对应的目标解析器;在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果。明显地,本实施例将通过预设代码传输协议将待解析代码由客户端侧传递至解析服务器侧,并由解析服务器侧进行代码解析操作,不要求客户端本地具备代码解析的相关条件,进而解决了客户端本地的代码解析器无法完成代码解析操作的技术问题。
参照图3,图3为本发明代码解析方法第二实施例的流程示意图,基于上述图2所示的第一实施例,提出本发明代码解析方法的第二实施例。
第二实施例中,所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果之前,所述代码解析方法还包括:
获取处于空闲状态的待使用虚拟机;
通过所述待使用虚拟机创建预设隔离运行环境。
可以理解的是,考虑到可能同时有多个客户端向解析服务器侧传输了待解析代码,为了隔离不同的待解析代码之间的解析操作,防止互相影响,提高稳定性,可通过虚拟化技术来进行代码解析。具体而言,解析服务器可虚拟化计算资源与存储资源等资源以供给多个虚拟机。可调用空闲未运行的待使用虚拟机来创建Python运行环境,以为后续Python代码的解析操作提供环境支持。
进一步地,所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果,具体包括:
在预设隔离运行环境中从所述待解析代码中查找待替换变量;
将所述待解析代码中的所述待替换变量替换为预设变量,以获得变量替换后的代码;
在预设隔离运行环境中通过所述目标解析器对变量替换后的代码进行解析,以获得解析结果。
可以理解的是,此处的预设隔离运行环境不仅可由虚拟机运行,实现了虚拟机的数据隔离,还可基于容器技术来提供区域安全防护。
应当理解的是,区域安全防护的具体方式可为,对容器中的运行环境中的变量进行替换,以隔离变量。
可以理解的是,比如,以Python运行环境容器为例,可先找出Python运行环境容器中的预设隔离运行环境中的待替换变量,并替换掉该待替换变量。待替换变量若为变量“x”,通过将变量“x”替换为预先规定的特定变量,不使用原本的变量“x”,以确保各单独的待解析代码所处区域的独立性以及不可跨越性。最终,将对变量替换后的待解析代码进行解析,以获得解析结果。
在具体实现中,比如,待替换变量的变量类型可为全局变量,预设变量的变量类型为局部变量,可将待解析代码中属于全局变量的待替换变量替换为局部变量,以获得变量替换后的代码。如此,由于局部变量仅在容器搭建的局部的运行环境中运行,不会影响到别的用户操作或者其他的代码解析操作。
当然,可在预设隔离运行环境中预先确定一个变量映射关系,变量映射关系中将包括有全局变量与局部变量之间的对应关系,以方便进行变量替换。
此外,若原本的待解析代码中存在有局部变量,也可将局部变量替换为对应的内部函数中的区域变量,防止出现冲突。
进一步地,所述步骤S30之后,所述代码解析方法还包括:
步骤S301;检测所述待解析代码中是否包括预设注入信息。
在不包括所述预设注入信息时,执行步骤S40。
可以理解的是,在代码解析之前,还可对代码进行规范化处理,具体而言,可检查待解析代码中是否包括有预设注入信息,若不包括有预设注入信息,则认为待解析代码符合规范。其中,预设注入信息包括有二进制文件等,这是考虑到若待解析代码内被嵌入了二进制文件,这种存储式的文件会产生安全风险。
应当理解的是,通过预先检测是否包含有预设注入信息,可以屏蔽安全风险。
当然,若包括有预设注入信息时,则可创建错误描述,并将错误描述反馈至客户端。错误描述作为一种文本信息,可包括有错误类型以及出现错误的代码行数等信息,以供用户参考。错误类型可为“包括预设注入信息”等。
此外,规范化处理操作除了检测预设注入信息外,还可检测待解析代码中是否包括预设代码异常,在不包括所述预设代码异常时,执行所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果的步骤;在包括预设代码异常时,则可创建错误描述并反馈至客户端。
进一步地,还可在解析服务器侧内置GitLab模块,GitLab模块作为代码管理工具,可通过GitLab模块一键完成代码解析操作以及控制预设解析器的版本。
进一步地,至于最终获得到的解析结果,可将解析结果反馈至客户端,以在客户端显示该解析结果。至于输出解析结果至客户端的输出方式,包括有命令行输出方式以及图形化输出方式。
本实施例中可通过创建出的虚拟机来进行代码解析,隔离了不同的待解析代码之间的解析操作,提高了稳定性。而且,还将进行变量替换,实现了变量隔离,提供了区域安全防护。同时,通过在代码解析前进行规范化处理,可以降低安全风险。
参照图4,图4为本发明代码解析方法第三实施例的流程示意图,基于上述图2所示的第一实施例,提出本发明代码解析方法的第三实施例。
第三实施例中,所述在多个预设解析器中选取与所述目标解析器标识对应的目标解析器之后,所述代码解析方法还包括:
通过预设语法分析树检测所述待解析代码是否符合预设语法逻辑;
在符合所述预设语法逻辑时,执行所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果的步骤。
可以理解的是,在代码解析之前,可先验证待解析代码的语法逻辑。具体而言,若待解析代码为待解析Python代码,鉴于预设语法分析树中记录有待解析代码中各句代码的语法结构,可通过预设语法分析树一步步检测待解析Python代码是否符合预设Python语法逻辑。比如,若待解析Python代码存在预设关键字“if”,则预设关键字对应的预设语法逻辑为“if之后代码的缩进方式是否对称”,对应的预设语法逻辑还有“if之后是否存在冒号”。
此外,预设语法逻辑还包括有“函数的括号是否完整”。比如,若认为函数的括号完整,则认为符合预设语法逻辑,执行后续步骤;若认为函数的括号不完整,则认为不符合预设语法逻辑,可创建错误描述并反馈至客户端,错误描述包括有错误类型以及出现错误的代码行数等信息。
进一步地,所述步骤S10,具体包括:
步骤S101:基于预设代码传输协议接收预设客户端发送的待解析代码以及与所述待解析代码对应的断点记录表。
可以理解的是,为了便于后续业务人员调试该待解析代码,可额外提供一个断点记录表,断点记录表中包括有多个代码断点,代码断点指向了待解析代码中的特定行数。当代码正常运行到该行时,将记录各变量的数据。
相应地,所述步骤S40之后,所述代码解析方法还包括:
步骤S401:从所述断点记录表中读取代码断点。
应当理解的是,比如,若某一代码断点为待解析代码中的“第500行”。
步骤S402:根据所述待解析代码确定对应的待解析变量。
可以理解的是,待解析变量为待解析代码中已含有的变量。
步骤S403:在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,读取与所述待解析变量对应的断点变量信息。
应当理解的是,当待解析代码解析到第500行时,可记录当前时刻为断点时刻,并查询当前时刻的待解析变量的变量内容即断点变量信息。比如,若待解析变量包括有“x”、“n”以及“BTNode”等,这些变量随着代码的运行处于不断的变化中,而在当前时刻x=133、n=750以及BTNode=1,则断点变量信息为133、750以及1。
步骤S404:根据所述代码断点、所述待解析变量以及所述断点变量信息生成变量数据表。
在具体实现中,可根据断点时刻、代码断点、待解析变量以及断点变量信息生成一条变量变化记录,并将变量变化记录添加至变量数据表。变量数据表中记录有全部代码断点对应的变量变化记录。
此外,可将变量数据表反馈至客户端,以供业务人员对待解析代码进行调试,最终,使得待解析代码满足预期。
进一步地,所述在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,读取与所述待解析变量对应的断点变量信息,具体包括:
在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,暂停代码解析操作,并读取与所述待解析变量对应的断点变量信息;
相应地,所述在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,暂停代码解析操作,并读取与所述待解析变量对应的断点变量信息之后,所述代码解析方法还包括:
在接收到所述预设客户端发送的继续解析请求时,将所述代码断点作为起始位置恢复代码解析操作。
在具体实现中,为了便于业务人员对待解析代码进行调试,当代码解析至代码断点处时,可先暂停待解析代码的代码解析操作。比如,若代码断点为“第500行”,当代码解析至第500行时,不继续往后运行。在接收到客户端发送的继续解析请求时,将消除代码解析操作的暂停状态,继续往后解析,比如,解析第501行。
本实施例中提供了一种断点调试机制,通过该断点调试机制可在每个代码断点处暂停运行,直到用户给出继续解析的指令时再继续运行。通过该种单步运行的方式再搭配上变量数据表的生成,更加便于业务人员的后续调试操作,更易于对待解析代码进行修正。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有代码解析程序,所述代码解析程序被处理器执行时实现如下操作:
基于预设代码传输协议接收预设客户端发送的待解析代码;
根据所述待解析代码确定对应的目标解析器标识;
在多个预设解析器中选取与所述目标解析器标识对应的目标解析器;
在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果。
进一步地,所述代码解析程序被处理器执行时还实现如下操作:
获取处于空闲状态的待使用虚拟机;
通过所述待使用虚拟机创建预设隔离运行环境。
进一步地,所述代码解析程序被处理器执行时还实现如下操作:
在预设隔离运行环境中从所述待解析代码中查找待替换变量;
将所述待解析代码中的所述待替换变量替换为预设变量,以获得变量替换后的代码;
在预设隔离运行环境中通过所述目标解析器对变量替换后的代码进行解析,以获得解析结果。
进一步地,所述代码解析程序被处理器执行时还实现如下操作:
检测所述待解析代码中是否包括预设注入信息;
在不包括所述预设注入信息时,执行所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果的步骤。
进一步地,所述代码解析程序被处理器执行时还实现如下操作:
通过预设语法分析树检测所述待解析代码是否符合预设语法逻辑;
在符合所述预设语法逻辑时,执行所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果的步骤。
进一步地,所述代码解析程序被处理器执行时还实现如下操作:
基于预设代码传输协议接收预设客户端发送的待解析代码以及与所述待解析代码对应的断点记录表;
相应地,还实现如下操作:
从所述断点记录表中读取代码断点;
根据所述待解析代码确定对应的待解析变量;
在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,读取与所述待解析变量对应的断点变量信息;
根据所述代码断点、所述待解析变量以及所述断点变量信息生成变量数据表。
进一步地,所述代码解析程序被处理器执行时还实现如下操作:
在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,暂停代码解析操作,并读取与所述待解析变量对应的断点变量信息;
相应地,还实现如下操作:
在接收到所述预设客户端发送的继续解析请求时,将所述代码断点作为起始位置恢复代码解析操作。
本实施例中基于预设代码传输协议接收预设客户端发送的待解析代码;根据所述待解析代码确定对应的目标解析器标识;在多个预设解析器中选取与所述目标解析器标识对应的目标解析器;在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果。明显地,本实施例将通过预设代码传输协议将待解析代码由客户端侧传递至解析服务器侧,并由解析服务器侧进行代码解析操作,不要求客户端本地具备代码解析的相关条件,进而解决了客户端本地的代码解析器无法完成代码解析操作的技术问题。
此外,参照图5,本发明实施例还提出一种代码解析装置,所述代码解析装置包括:
代码传输模块10,用于基于预设代码传输协议接收预设客户端发送的待解析代码。
可以理解的是,本实施例的执行主体非客户端,代码解析装置与客户端之间可通过预设代码传输协议来传输待解析代码。客户端可为用户实际操作的个人电脑等电子设备,也可为个人电脑上运行的某客户侧软件。明显地,本实施例描述的代码解析操作实际上发生在代码解析装置侧,这也就不要求客户端侧是否具备代码解析的相关条件,比如,客户端侧本地是否具备与待解析代码适配的解析器以及类库。
在具体实现中,若待解析代码属于Python代码,预设代码传输协议可为超文本传输协议(HyperText Transfer Protocol,HTTP),通过HTTP协议来完成Python代码的传输操作,不要求客户端侧本地安装有Python运行环境以及相关软件,进一步地简化了客户端的运行环境。
标识确定模块20,用于根据所述待解析代码确定对应的目标解析器标识。
应当理解的是,Python代码内可预先记有其适配的Python解析器的类型,可将该类型记为目标解析器标识。比如,目标解析器标识可为Python解析器的版本号参数。
解析器确定模块30,用于在多个预设解析器中选取与所述目标解析器标识对应的目标解析器。
在具体实现中,可预先配置有大量的预设解析器,使得代码解析装置可兼容Python3.5以上的语法及关键字。
代码解析模块40,用于在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果。
可以理解的是,可根据版本号参数在多个预设解析器中查询到适配的预设解析器,并通过该适配的预设解析器在预先搭建的预设隔离运行环境中来解析这段Python代码。
此外,在预设隔离运行环境中也提供近百个常见的Python第三方类库,以供待解析代码在解析时按需调用。
本实施例中基于预设代码传输协议接收预设客户端发送的待解析代码;根据所述待解析代码确定对应的目标解析器标识;在多个预设解析器中选取与所述目标解析器标识对应的目标解析器;在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果。明显地,本实施例将通过预设代码传输协议将待解析代码由客户端侧传递至代码解析装置侧,并由代码解析装置进行代码解析操作,不要求客户端本地具备代码解析的相关条件,进而解决了客户端本地的代码解析器无法完成代码解析操作的技术问题。
在一实施例中,所述代码解析装置包括:
环境搭建模块,用于获取处于空闲状态的待使用虚拟机;通过所述待使用虚拟机创建预设隔离运行环境。
在一实施例中,所述代码解析模块40,还用于在预设隔离运行环境中从所述待解析代码中查找待替换变量;将所述待解析代码中的所述待替换变量替换为预设变量,以获得变量替换后的代码;在预设隔离运行环境中通过所述目标解析器对变量替换后的代码进行解析,以获得解析结果。
在一实施例中,所述代码解析装置包括:
注入检测模块,用于检测所述待解析代码中是否包括预设注入信息;在不包括所述预设注入信息时,执行所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果的步骤。
在一实施例中,所述代码解析装置包括:
语法逻辑检测模块,用于通过预设语法分析树检测所述待解析代码是否符合预设语法逻辑;在符合所述预设语法逻辑时,执行所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果的步骤。
在一实施例中,所述代码解析装置包括:
所述代码传输模块10,还用于基于预设代码传输协议接收预设客户端发送的待解析代码以及与所述待解析代码对应的断点记录表;
变量表生成模块,用于从所述断点记录表中读取代码断点;根据所述待解析代码确定对应的待解析变量;在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,读取与所述待解析变量对应的断点变量信息;根据所述代码断点、所述待解析变量以及所述断点变量信息生成变量数据表。
在一实施例中,所述代码解析装置包括:
所述变量表生成模块,还用于在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,暂停代码解析操作,并读取与所述待解析变量对应的断点变量信息;
代码解析恢复模块,用于在接收到所述预设客户端发送的继续解析请求时,将所述代码断点作为起始位置恢复代码解析操作。
本发明所述代码解析装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。词语第一、第二、以及第三等的使用不表示任何顺序,可将这些词语解释为名称。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器、RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种代码解析方法,其特征在于,所述代码解析方法包括以下步骤:
基于预设代码传输协议接收预设客户端发送的待解析代码;
根据所述待解析代码确定对应的目标解析器标识;
在多个预设解析器中选取与所述目标解析器标识对应的目标解析器;
在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果;
其中,基于预设代码传输协议接收预设客户端发送的待解析代码,具体包括:
基于预设代码传输协议接收预设客户端发送的待解析代码以及与所述待解析代码对应的断点记录表;
相应地,所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果之后,所述代码解析方法还包括:
从所述断点记录表中读取代码断点;
根据所述待解析代码确定对应的待解析变量;
在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,读取与所述待解析变量对应的断点变量信息;
根据所述代码断点、所述待解析变量以及所述断点变量信息生成变量数据表。
2.如权利要求1所述的代码解析方法,其特征在于,所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果之前,所述代码解析方法还包括:
获取处于空闲状态的待使用虚拟机;
通过所述待使用虚拟机创建预设隔离运行环境。
3.如权利要求1所述的代码解析方法,其特征在于,所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果,具体包括:
在预设隔离运行环境中从所述待解析代码中查找待替换变量;
将所述待解析代码中的所述待替换变量替换为预设变量,以获得变量替换后的代码;
在预设隔离运行环境中通过所述目标解析器对变量替换后的代码进行解析,以获得解析结果。
4.如权利要求1至2中任一项所述的代码解析方法,其特征在于,所述在多个预设解析器中选取与所述目标解析器标识对应的目标解析器之后,所述代码解析方法还包括:
检测所述待解析代码中是否包括预设注入信息;
在不包括所述预设注入信息时,执行所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果的步骤。
5.如权利要求1至2中任一项所述的代码解析方法,其特征在于,所述在多个预设解析器中选取与所述目标解析器标识对应的目标解析器之后,所述代码解析方法还包括:
通过预设语法分析树检测所述待解析代码是否符合预设语法逻辑;
在符合所述预设语法逻辑时,执行所述在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果的步骤。
6.如权利要求1所述的代码解析方法,其特征在于,所述在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,读取与所述待解析变量对应的断点变量信息,具体包括:
在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,暂停代码解析操作,并读取与所述待解析变量对应的断点变量信息;
相应地,所述在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,暂停代码解析操作,并读取与所述待解析变量对应的断点变量信息之后,所述代码解析方法还包括:
在接收到所述预设客户端发送的继续解析请求时,将所述代码断点作为起始位置恢复代码解析操作。
7.一种解析服务器,其特征在于,所述解析服务器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行代码解析程序,所述代码解析程序被所述处理器执行时实现如权利要求1至6中任一项所述的代码解析方法的步骤。
8.一种存储介质,其特征在于,所述存储介质上存储有代码解析程序,所述代码解析程序被处理器执行时实现如权利要求1至6中任一项所述的代码解析方法的步骤。
9.一种代码解析装置,其特征在于,所述代码解析装置包括:
代码传输模块,用于基于预设代码传输协议接收预设客户端发送的待解析代码;
标识确定模块,用于根据所述待解析代码确定对应的目标解析器标识;
解析器确定模块,用于在多个预设解析器中选取与所述目标解析器标识对应的目标解析器;
代码解析模块,用于在预设隔离运行环境中通过所述目标解析器对所述待解析代码进行解析,以获得解析结果;
代码传输模块,还用于基于预设代码传输协议接收预设客户端发送的待解析代码以及与所述待解析代码对应的断点记录表;
代码解析模块,还用于从所述断点记录表中读取代码断点;根据所述待解析代码确定对应的待解析变量;在通过所述目标解析器对所述待解析代码进行解析并运行至所述代码断点时,读取与所述待解析变量对应的断点变量信息;根据所述代码断点、所述待解析变量以及所述断点变量信息生成变量数据表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910336597.XA CN110096281B (zh) | 2019-04-24 | 2019-04-24 | 代码解析方法、解析服务器、存储介质及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910336597.XA CN110096281B (zh) | 2019-04-24 | 2019-04-24 | 代码解析方法、解析服务器、存储介质及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110096281A CN110096281A (zh) | 2019-08-06 |
CN110096281B true CN110096281B (zh) | 2023-06-30 |
Family
ID=67445782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910336597.XA Active CN110096281B (zh) | 2019-04-24 | 2019-04-24 | 代码解析方法、解析服务器、存储介质及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110096281B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342654B (zh) * | 2021-06-08 | 2024-04-09 | 广州博冠信息科技有限公司 | 脚本语言代码调试方法及装置、可读存储介质及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503793A (zh) * | 2014-12-24 | 2015-04-08 | 风腾科技(北京)有限公司 | 代码练习软件中代码的运行和图形化的解析方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2011004B1 (en) * | 2006-04-04 | 2019-01-02 | TIBCO Software Inc. | Method and system for providing a visual debugger for an interpreted statistical language |
CA2557688C (en) * | 2006-08-30 | 2011-10-04 | Research In Motion Limited | System and method for implementing software breakpoints in an interpreter |
US8365153B2 (en) * | 2007-10-26 | 2013-01-29 | Qualcomm Incorporated | Server-based code compilation |
CN102855179A (zh) * | 2011-06-30 | 2013-01-02 | 国际商业机器公司 | 虚拟机环境下的程序调试方法和系统 |
CN104935660B (zh) * | 2015-06-17 | 2018-11-06 | 北京智友信诚科技有限公司 | 一种云程序开发运行系统、方法及装置 |
CN105141630B (zh) * | 2015-09-18 | 2018-01-26 | 厦门市光娱投资管理有限公司 | 一种服务器与客户端通信数据自动解析的方法和装置 |
CN106201643B (zh) * | 2016-07-14 | 2019-11-05 | 北京邮电大学 | 数据解析方法及装置 |
CN106452951B (zh) * | 2016-09-28 | 2019-08-06 | 北京网御星云信息技术有限公司 | 一种信息处理方法、装置及系统 |
-
2019
- 2019-04-24 CN CN201910336597.XA patent/CN110096281B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503793A (zh) * | 2014-12-24 | 2015-04-08 | 风腾科技(北京)有限公司 | 代码练习软件中代码的运行和图形化的解析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110096281A (zh) | 2019-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109783342B (zh) | 脚本调试方法、设备及计算机存储介质 | |
CN112019401B (zh) | 一种车联网应用安全测试方法、装置、系统和电子设备 | |
CN111382048B (zh) | 真机测试平台上移动设备的管理方法和装置 | |
CN112100072A (zh) | 应用程序代码的静态检测方法、装置、设备及介质 | |
CN111459495A (zh) | 单元测试代码文件生成方法、电子装置及存储介质 | |
CN113051514B (zh) | 元素的定位方法、装置、电子设备及存储介质 | |
CN111475390A (zh) | 日志采集系统部署方法、装置、设备及存储介质 | |
CN112395843A (zh) | 一种基于php代码的业务处理方法、装置及设备和介质 | |
CN112540924A (zh) | 接口自动化测试方法、装置、设备及存储介质 | |
CN110096281B (zh) | 代码解析方法、解析服务器、存储介质及装置 | |
CN113360379A (zh) | 程序测试方法和程序测试装置 | |
CN113127329B (zh) | 脚本调试方法、装置及计算机存储介质 | |
CN111752838A (zh) | 问题排查方法、装置、服务器及存储介质 | |
CN111309311B (zh) | 一种漏洞检测工具生成方法、装置、设备及可读存储介质 | |
CN115291855A (zh) | 一种基于互联网信息的软件开发设计系统 | |
CN111176653B (zh) | 程序编译合包方法、装置、电子设备及存储介质 | |
CN114116471A (zh) | 一种自动化代码扫描方法、系统、电子设备与存储介质 | |
CN113419738A (zh) | 接口文档的生成方法、装置及接口管理设备 | |
CN112181841A (zh) | 一种受检异常检测方法、装置、设备及存储介质 | |
CN112162954A (zh) | 用户操作日志生成、路径的定位方法、装置、设备及介质 | |
CN112069202A (zh) | 基于追踪技术的sql性能分析方法、系统、设备及介质 | |
CN111151008A (zh) | 游戏运营数据的校验方法、装置、配置后台及介质 | |
CN113553059B (zh) | 局部变量查询方法、装置、服务器及存储介质 | |
CN118672813A (zh) | 车辆控制器程序异常监控方法、电子设备、装置及存储介质 | |
CN115687247A (zh) | 文件转换方法、装置、计算机设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200424 Address after: 100089 b801-014, block B, Tsinghua University research complex, Tsinghua garden, Haidian District, Beijing Applicant after: Beijing code Learning Technology Co.,Ltd. Address before: 518000 Room 1309, Four Blocks, Fang Da Square, No. 2 Xili Longzhu Road, Taoyuan Street, Nanshan District, Shenzhen City, Guangdong Province Applicant before: Shenzhen Code Interesting Science and Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |