CN113110947B - 一种程序调用链生成方法、系统、电子设备及介质 - Google Patents

一种程序调用链生成方法、系统、电子设备及介质 Download PDF

Info

Publication number
CN113110947B
CN113110947B CN202110416037.2A CN202110416037A CN113110947B CN 113110947 B CN113110947 B CN 113110947B CN 202110416037 A CN202110416037 A CN 202110416037A CN 113110947 B CN113110947 B CN 113110947B
Authority
CN
China
Prior art keywords
program
objects
calling
sentence
grammar
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
Application number
CN202110416037.2A
Other languages
English (en)
Other versions
CN113110947A (zh
Inventor
何子南
王凯
邢培康
李炯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202110416037.2A priority Critical patent/CN113110947B/zh
Publication of CN113110947A publication Critical patent/CN113110947A/zh
Application granted granted Critical
Publication of CN113110947B publication Critical patent/CN113110947B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/316Aspect-oriented programming techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种程序调用链生成方法,可用于金融领域或其他领域,包括:S1,根据预置的解析策略,对待解析的程序进行逐句的语法解析,生成对应的多个序列化对象;S2,根据预置的编码策略,对初始序列化对象中的当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称,所有调用程序名称为第一级调用程序名称;S3,根据第一级调用程序名称所对应的序列化对象,重复S2,得到第一级调用程序所对应的第二级的调用程序名称,…,依次类推,根据获得的各级的调用程序名称生成相应的程序调用链。本公开还提供了一种程序调用链生成系统、电子设备及计算机可读存储介质。

Description

一种程序调用链生成方法、系统、电子设备及介质
技术领域
本公开涉及计算机程序结构的层次化表达技术领域,具体涉及一种程序调用链生成方法、系统、电子设备及介质。
背景技术
程序调用链是一种可以表示某种业务功能中,程序间相互调用关系的链表或图表,其可以清晰、完整的展示某种业务功能所涵盖的程序、或者子功能,协助设计人员对业务功能有整体掌握与维护。
常见的分析业务编程语言(EGL)程序调用链的方法往往都是从EGL源代码出发,找到特定EGL代码,确定EGL程序调用关系。若需要多层的EGL程序调用关系,则需要继续查找被调用EGL程序的源代码,逐层的确认EGL程序调用关系,存在单一性、错误率高、效率低等缺陷。另外,对于不懂主机技术的人员来说,根据源代码很难对系统功能有全面掌握,而基于人工梳理源代码的方式,尤其是涉及到多层级的梳理,往往因为代码量巨大而不能快速得到结果。
发明内容
为解决现有技术中存在的问题,本公开实施例提供的一种程序调用链生成方法、系统、电子设备及存储介质,旨在准确、高效、全自动化的生成程序调用链。
本公开的第一个方面提供了一种程序调用链生成方法,包括:S1,根据预置的解析策略,对待解析的程序进行逐句的语法解析,生成对应的多个序列化对象;S2,根据预置的编码策略,对初始序列化对象中的当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称,其中,该所有调用程序名称为第一级调用程序名称;S3,根据所述第一级调用程序名称所对应的序列化对象,重复S2步骤,得到所述第一级调用程序名称所对应的第二级的调用程序名称,......,依次类推,根据获得的各级的调用程序名称生成相应的程序调用链。
进一步地,所述根据预置的解析策略,对待解析的程序进行逐句的语法解析,生成对应的多个序列化对象包括:采用多个解析器,根据预置的解析策略,对待解析的程序进行逐句的语法解析,直至将所述待解析的程序全部解析,生成对应的多个序列化对象。
进一步地,所述采用多个解析器,根据预置的解析策略,对待解析的程序进行逐句的语法解析,直至将所述待解析的程序全部解析,生成对应的多个序列化对象包括:将多个解析器部署在一策略链上,位于所述策略链头上的第一解析器根据预置的解析策略对所述待解析的程序进行逐句的语法解析,若所述第一解析器能够识别该待解析的程序中的当前程序语法,则生成相应的序列化对象,否则,调用第二解析器对该待解析的程序中的当前程序进行解析,......,依次类推,直至将所述待解析的程序全部解析完,生成对应的多个序列化对象。
进一步地,每个方法对象对应一个编码器,其中,所述根据预置的编码策略,对初始序列化对象中的当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称包括:调取所述当前方法对象对应的编码器对该当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称。
进一步地,多个序列化对象均至少包括:程序对象、方法对象、数据结构及SQL对象。
进一步地,该待解析的程序语言为EGL语言源码,其对应的编码器为基于EGL-call语法的编码器。
进一步地,所述生成相应的程序调用链为多级调用程序名称所构成的程序调用关系图。
本公开的第二个方面提供了一种程序调用链生成系统,包括:程序解析模块,用于根据预置的解析策略,对待解析的程序进行逐句的语法解析,生成对应的多个序列化对象;对象解析模块,用于根据预置的编码策略,对初始序列化对象中的当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称,其中,该所有调用程序名称为第一级调用程序名称;根据所述第一级调用程序名称所对应的序列化对象,重复本步骤,得到所述第一级调用程序所对应的第二级的调用程序名称,......,依次类推,得到所有的序列化对象中所有方法对象的调用程序名称;程序调用链生成模块,用于根据获得的各级的调用程序名称生成相应的程序调用链。
进一步地,该程序解析模块用于根据预置的解析策略,对待解析的程序进行逐句的语法解析,生成对应的多个序列化对象包括:采用多个解析器,根据预置的解析策略,对待解析的程序进行逐句的语法解析,直至将所述待解析的程序全部解析,生成对应的多个序列化对象。
进一步地,所述采用多个解析器,根据预置的解析策略,对待解析的程序进行逐句的语法解析,直至将所述待解析的程序全部解析,生成对应的多个序列化对象包括:将多个解析器部署在一策略链上,位于所述策略链头上的第一解析器根据预置的解析策略对所述待解析的程序进行逐句的语法解析,若所述第一解析器能够识别该待解析的程序中的当前程序语法,则生成相应的序列化对象,否则,调用第二解析器对该待解析的程序进行解析,......,依次类推,直至将所述待解析的程序全部解析完,生成对应的多个序列化对象。
进一步地,每个方法对象对应一个编码器,其中,所述对象解析模块用于对所有的序列化对象中所有方法对象进行解析得到所有的调用程序名称包括:调取所述当前方法对象对应的编码器对该当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称。
进一步地,所述该待解析的程序语言为EGL语言源码,其对应的编码器为基于EGL-call语法的编码器。
本公开的第三个方面提供了一种电子设备,包括:存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现本公开的第一个方面提供的程序调用链生成方法。
本公开的第四个方面提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现本公开的第一个方面提供的程序调用链生成方法。
本公开提供的一种程序调用链生成方法、系统、电子设备及存储介质,实现了程序调用链的自动化解析及生成,其只需提供主机程序,即使不了解主机技术,也可以对系统功能做到整体了解;该方法省去了人工的环节,不仅节省了大量的人力投入,同时也可以根据实际需要快速的生成程序调用链信息。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开一实施例的程序调用链生成方法的应用场景图;
图2示意性示出了根据本公开一实施例的程序调用链生成方法的流程图;
图3示意性示出了根据本公开一实施例的策略链解析方框图;
图4示意性示出了根据本公开一实施例的方法对象编码方框图;
图5示意性示出了根据本公开一实施例的程序对象中方法对象链表信息结构示意图;
图6示意性示出了根据本公开一实施例的程序调用链结构示意图;
图7示意性示出了根据本公开一实施例的程序调用链生成系统的方框图;
图8示意性示出了根据本公开一实施例的适于实现上文描述的方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。
图1示意性示出了根据本公开实施例的可以应用于程序调用链生成方法的示例性系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、网络102和服务器103。网络102用以在终端设备101和服务器103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户(如开发人员)可以使用终端设备101通过网络102与服务器103交互,以接收或发送消息等。终端设备101上可以安装有各种通讯客户端应用,例如各语言软件编程系统、网页浏览器应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器103可以是提供各种服务的服务器,例如对用户利用终端设备101所按照的应用程序提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等进行分析处理,并将处理结果(例如根据用户请求生成程序调用链、信息或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的程序调用链生成方法一般可以由服务器103执行。相应地,本公开实施例所提供的程序调用链生成系统一般可以部署于服务器103中。本公开实施例所提供的程序调用链生成方法也可以由不同于服务器103且能够与终端设备101和/或服务器103通信的服务器或服务器集群执行。相应地,本公开实施例所提供的用于程序调用链生成系统也可以设置于不同于服务器103且能够与终端设备101和/或服务器103通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
图2示意性示出了根据本公开实施例的程序调用链生成方法的流程图。
在操作S1,根据预置的解析策略,对待解析的程序进行逐句的语法解析,生成对应的多个序列化对象。
本公开的实施例中,该待解析的程序可以为一个软件系统的所有开发源码,也可以为某一功能模块下的所有开发源码,本公开对此不做限定。预置的解析策略根据待解析的程序的开发语言所确定,例如:若开发语言为EGL语言(分析业务编程语言),则根据EGL语言建立对应的解析策略,其中,EGL语言程序可以编译成COBOL语言(面向过程的高级程序设计语言)、Java或JavaScript代码,以运行在不同平台和浏览器上,其是一种通用的应用程序开发语言。若开发语言为Java语言(面向对象编程语言),则根据Java语言建立对应的解析策略,同理,根据其他不同的开发源码语言建立与其对应的解析策略。
具体地,采用多个解析器,根据预置的解析策略,对待解析的程序进行逐句的语法解析,直至将所述待解析的程序全部解析,生成对应的多个序列化对象。其中,将多个解析器部署在一策略链上,位于该策略链头上的第一解析器根据预置的解析策略对待解析的程序进行逐句的语法解析,若第一解析器能够识别该待解析的程序中的当前程序语法,则生成相应的序列化对象,否则,调用第二解析器对该待解析的程序中的当前程序进行解析,......,依次类推,直至将待解析的程序全部解析完,生成对应的多个序列化对象。若策略链上所有解析器均无法解析某一节程序语法,则使用一特定类存储相关信息并序列化为持久对象保存,即将程序转换为字节流并以文件形式进行存储。若源码语言为EGL语言,则其可以为存储的是EGL源码等,以及EGL文件信息,用来后续扩展策略链,增加EGL语法支持。
图3示意性示出了根据本公开一实施例的策略链解析方框图,如图3所示,Strategy Chain表示一个策略链,其上部署有多个解析器,不同的解析器代表不同的语法解析功能,如开发语言为EGL语言,该Strategy Chain上部署的解析器包括但不仅限于:程序定义(Program-define)、数据结构定义(Record-define)、字段定义(Dataitem-define)、方法定义(Function-define)、EGL语法(EGL-call)等,这些不同的语法解析器分别用于待解析的程序不同语法识别,并相应的生成数据信息(Data Info),即DataInfo包括:程序(Program)、数据结构(Record)、字段(Dataitem)、方法(Function)等等,然后基于该DataInfo生成对应的多个序列化对象(Serialized Object)。具体地,根据Data Info中的Program信息生成对应的序列化对象中的程序对象Program;根据Data Info中的Record信息生成对应的序列化对象中的数据结构Record;根据Data Info中的当前方法(Function)信息、赋值(Evaluation)、表达式(Expression)、流程控制(Flow-control)、调用当前函数参数(Function-call)、EGL-call(EGL语法)等信息生成对应的序列化对象中的方法对象Function;根据Data Info中的SQL(数据库)信息生成对应的序列化对象中的SQL。
如图3所示,每个序列化对象均至少包括:程序对象Program、方法对象Function、数据结构Record及SQL对象等,且每一个程序对象Program中记载有多个不同方法对象Function的链表,在后续对方法对象进行语法编码的顺序即按照该链表上分布的方法对象顺序进行语法编码。其中,方法对象Function中保存的是源码程序定义的方法信息,包括方法内部具体的逻辑实现。
本公开的实施例中,方法对象Function表示函数(方法)对象,其由实例变量来调用,方法对象Function可以访问当前对象的成员变量,根据访问及调用关系即可确定当前方法对象Function与其对应的方法对象的调用关系。
在操作S2,根据预置的编码策略,对初始序列化对象中的当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称,其中,该所有调用程序名称为第一级调用程序名称。
根据本公开的实施例,每个方法对象对应一个编码器,编码器的作用是解析序列化对象文件,从中提取有用的信息,对于开源语言为EGL语言来说,提取的是EGL程序调用相关语法的信息,根据调用的程序名称确定EGL程序的调用关系。其中,调取当前方法对象对应的编码器对该当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复S2步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称。
首先根据程序对象Program中记录的方法对象Function的链表信息,一对该链表中的方法对象Function进行语法编码,得到该方法对象Function中所对应的程序调用信息,然后根据该程序调用信息确定调用程序名称。
具体地,如图4所示,对程序对象Program中记录的方法对象Function中提取EGL语法信息,然后通过EGL-call语法编码器,识别EGL调用语法,从而确定调用程序名称和其他相关信息,该其他相关信息包括:调用程序服务参数(Parameter)、程序调用的方式等。
程序对象Program中有记载有方法对象Function的链表信息,该链表信息中对应的方法对象Function为同一级别的方法对象Function,即其进行编码识别出来的程序调用名称为同级别的程序调用名称,该方法对象Function对应的先后顺序表示通过编码识别出来的程序调用名称的先后顺序。
在操作S3,根据该第一级调用程序名称所对应的序列化对象,重复S2步骤,得到第一级调用程序所对应的第二级的调用程序名称,......,依次类推,根据获得的各级的调用程序名称生成相应的程序调用链。
根据S2中得到的第一级调用程序名称,可相应定位到该第一级调用程序名称所对应的序列化对象,然后根据各自对应的序列化对象中的方法对象Function的链表信息,对其所对应的方法对象Function一一进行语法编码,得到该第一级调用程序名称所对应的第二级的调用程序名称;再重复上述步骤,可得到所有的序列化对象中所有方法对象的调用程序名称,最后根据各级的调用程序名称生成相应的程序调用链。
图5示意性示出了根据本公开一实施例的的程序对象中方法对象链表信息结构示意图。每个程序对象Program中有记载有方法对象Function的链表信息,如图5所示,初始序列化对象Program中的链表信息记载的方法对象Function包括:F1、F2、F3、...、Fn,按照顺序依次对F1、F2、F3、...、Fn进行语法编码,可得到当前级别的全部程序调用信息,根据该解析顺序可先生成第一级调用程序名称的调用链;然后基于第一级调用程序名称对其所对应的程序对象Program进行解析,得到第二级调用程序名称,例如:来自F1的程序调用F11、F12、F13、....、F1n,来自F2的程序调用F21、F22、F23、....、F2n,.....,依次类推,得到来自Fn的程序调用Fn1、Fn2、F13、....、F1n。同理,,F11对应的程序程序对象Program中记载有该方法对象下的下一级程序调用信息,即F111、F112、F113、.....、F11n等,依次按照顺序进行解析,可得到该待解析程序下所对应的所有方法对象所对应的所有调用程序名称。最后根据解析顺序,根据获得的各级的调用程序名称生成相应的程序调用链。其中,各级方法对象中的n为任意实数,每一方法对象Function其对应的下一级方法对象Function的数量根据实际程序源码而定,上述示例仅为示意性的,并不构成对各程序对象Program中链表信息的限定,例如:有些方法对象Function可能对应多个下一级方法对象Function,即存在多个调用程序;也有可能不存在下一级方法对象Function,即不存在下一级的调用程序。
需说明的是,图5仅为示例性的序对象中方法对象链表信息结构示意图,各级之间的方法对象Function仅为示例说明,并未全部画全或是并不代表每个方法对象Function均对应n个下一级方法对象Function。
图6示意性示出了根据本公开一实施例的程序调用链结构示意图。如图6所示,初始程序接口名称为“EIxxxxx1”,对其进行解析生成大量的序列化对象文件,则将其对应的方法对象Function筛选其中包含的EGL-call的信息确定其对应的下一级程序调用接口依次按顺序调用,分别为“AIxxxx1”、“AIxxxx2”、“AIxxxx3”、“AIxxxx4”、“AIxxxx5”及“AIxxxx6”;则对该六个第一级程序调用名称进行语法编码,可得到下一级的程序调用关系,其中,“AIxxxx1”下一级依次按顺序调用的程序接口为“CIxxxx1”及“CIxxxx2”,“AIxxxx2”、“AIxxxx4”、“AIxxxx5”下不存在下一级程序调用接口,“AIxxxx3”下一级程序调用接口为“CIxxxx3”,“AIxxxx6”下一级程序调用接口为“CIxxxx4”。同理可得,“CIxxxx2”对应的下一级的程序调用接口为“LIxxxx1”,“CIxxxx3”对应的下一级的程序调用接口为“LIxxxx2”;“LIxxxx2”对应的下一级的程序调用接口为“ACIxxxx2”及“ACIxxxx2”,即该程序调用链表示为该待解析程序各接口程序的调用次序关系。
需说明的是,上述实施例中的程序调用链仅为示例性说明生成的程序调用链形式,其并不构成本公开实施例中的程序调用链的限定。
本公开的实施例提供了一种程序调用链生成方法,实现了程序调用链的自动化解析及生成,其只需提供主机程序,即使不了解主机技术,也可以对系统功能做到整体了解;该方法省去了人工的环节,不仅节省了大量的人力投入,同时也可以根据实际需要快速的生成程序调用链信息。
需说明的是,上述实施例中的实施数据、参数等仅为示例性说明,并不代表本公开不包括其他类型的程序及程序中的参数,其不构成对本公开提供的方法适用应用程序的限定。
图7示意性示出了根据本公开实施例的程序调用链生成系统的方框图。
如图7所示,该程序调用链生成系统700包括:程序解析模块710、对象解析模块720、程序调用链生成模块730。该系统700可以用于实现参考图2所描述的程序调用链生成方法。
程序解析模块710,用于根据预置的解析策略,对待解析的程序进行逐句的语法解析,生成对应的多个序列化对象。根据本公开的实施例,该程序解析模块710例如可以用于执行上文参考图2所描述的S1步骤,在此不再赘述。
对象解析模块720,用于根据预置的编码策略,对初始序列化对象中的当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称,其中,该所有调用程序名称为第一级调用程序名称;根据所述第一级调用程序名称所对应的序列化对象,重复本步骤,得到所述第一级调用程序所对应的第二级的调用程序名称,......,依次类推,得到所有的序列化对象中所有方法对象的调用程序名称。根据本公开的实施例,该对象解析模块720例如可以用于执行上文参考图2所描述的S2~S3步骤,在此不再赘述。
程序调用链生成模块730,用于根据获得的各级的调用程序名称生成相应的程序调用链。根据本公开的实施例,该程序调用链生成模块730例如可以用于执行上文参考图2所描述的S3步骤,在此不再赘述。
本公开的实施例中,该程序解析模块710用于根据预置的解析策略,对待解析的程序进行逐句的语法解析,生成对应的多个序列化对象包括:采用多个解析器,根据预置的解析策略,对待解析的程序进行逐句的语法解析,直至将所述待解析的程序全部解析,生成对应的多个序列化对象。
具体地,采用多个解析器,根据预置的解析策略,对待解析的程序进行逐句的语法解析,直至将所述待解析的程序全部解析,生成对应的多个序列化对象包括:将多个解析器部署在一策略链上,位于所述策略链头上的第一解析器根据预置的解析策略对所述待解析的程序进行逐句的语法解析,若所述第一解析器能够识别该待解析的程序中的当前程序语法,则生成相应的序列化对象,否则,调用第二解析器对该待解析的程序进行解析,......,依次类推,直至将所述待解析的程序全部解析完,生成对应的多个序列化对象。
根据本公开的实施例,每个方法对象对应一个编码器,其中,所述对象解析模块720用于对所有的序列化对象中所有方法对象进行解析得到所有的调用程序名称包括:调取所述当前方法对象对应的编码器对该当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称。
根据本公开的实施例,该待解析的程序语言为EGL语言源码,其对应的编码器为基于EGL-call语法的编码器。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,程序解析模块710、对象解析模块720、程序调用链生成模块730中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,程序解析模块710、对象解析模块720、程序调用链生成模块730中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,程序解析模块710、对象解析模块720、程序调用链生成模块730中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
本公开提供的一种程序调用链生成方法及系统,可用于金融领域或其他领域,需说明的是,本公开提供的一种程序调用链生成方法及系统可用于金融领域,例如金融领域中各业务系统的程序调用链生成,也可用于除金融领域之外其他领域,本公开提供的一种程序调用链生成方法及系统的应用领域不作限定。
图8示意性示出了根据本公开实施例的适于实现上文描述的方法的电子设备的方框图。图8示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,本实施例中所描述的电子设备800,包括:处理器801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。处理器801例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器801还可以包括用于缓存用途的板载存储器。处理器801可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 803中,存储有电子设备800操作所需的各种程序和数据。处理器801、ROM802以及RAM 803通过总线804彼此相连。处理器801通过执行ROM 802和/或RAM 803中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 802和RAM 803以外的一个或多个存储器中。处理器801也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备800还可以包括输入/输出(I/O)接口805,输入/输出(I/O)接口805也连接至总线804。电子设备800还可以包括连接至I/O接口805的以下部件中的一项或多项:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被处理器801执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的程序调用链生成方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 802和/或RAM 803和/或ROM 802和RAM 803以外的一个或多个存储器。
需要说明的是,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

Claims (14)

1.一种程序调用链生成方法,其特征在于,包括:
S1,根据预置的解析策略,对待解析的程序进行逐句的语法解析,生成对应的多个序列化对象;
S2,根据预置的编码策略,对初始序列化对象中的当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称,其中,该所有调用程序名称为第一级调用程序名称;
S3,根据所述第一级调用程序名称所对应的序列化对象,重复S2步骤,得到所述第一级调用程序名称所对应的第二级的调用程序名称,依次类推,根据获得的各级的调用程序名称生成相应的程序调用链。
2.根据权利要求1所述的程序调用链生成方法,其特征在于,所述根据预置的解析策略,对待解析的程序进行逐句的语法解析,生成对应的多个序列化对象包括:
采用多个解析器,根据预置的解析策略,对待解析的程序进行逐句的语法解析,直至将所述待解析的程序全部解析,生成对应的多个序列化对象。
3.根据权利要求2所述的程序调用链生成方法,其特征在于,所述采用多个解析器,根据预置的解析策略,对待解析的程序进行逐句的语法解析,直至将所述待解析的程序全部解析,生成对应的多个序列化对象包括:
将多个解析器部署在一策略链上,位于所述策略链头上的第一解析器根据预置的解析策略对所述待解析的程序进行逐句的语法解析,若所述第一解析器能够识别该待解析的程序中的当前程序语法,则生成相应的序列化对象,否则,调用第二解析器对该待解析的程序中的当前程序进行解析,依次类推,直至将所述待解析的程序全部解析完,生成对应的多个序列化对象。
4.根据权利要求1所述的程序调用链生成方法,其特征在于,每个方法对象对应一个编码器,其中,所述根据预置的编码策略,对初始序列化对象中的当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称包括:
调取所述当前方法对象对应的编码器对该当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称。
5.根据权利要求1所述的程序调用链生成方法,其特征在于,所述多个序列化对象均至少包括:程序对象、方法对象、数据结构及SQL对象。
6.根据权利要求1所述的程序调用链生成方法,其特征在于,所述待解析的程序语言为EGL语言源码,其对应的编码器为基于EGL-call语法的编码器。
7.根据权利要求1所述的程序调用链生成方法,其特征在于,所述生成相应的程序调用链为多级调用程序名称所构成的程序调用关系图。
8.一种程序调用链生成系统,其特征在于,包括:
程序解析模块,用于根据预置的解析策略,对待解析的程序进行逐句的语法解析,生成对应的多个序列化对象;
对象解析模块,用于根据预置的编码策略,对初始序列化对象中的当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称,其中,该所有调用程序名称为第一级调用程序名称;根据所述第一级调用程序名称所对应的序列化对象,重复本步骤,得到所述第一级调用程序所对应的第二级的调用程序名称,依次类推,得到所有的序列化对象中所有方法对象的调用程序名称;
程序调用链生成模块,用于根据获得的各级的调用程序名称生成相应的程序调用链。
9.根据权利要求8所述的程序调用链生成系统,其特征在于,所述程序解析模块用于根据预置的解析策略,对待解析的程序进行逐句的语法解析,生成对应的多个序列化对象包括:
采用多个解析器,根据预置的解析策略,对待解析的程序进行逐句的语法解析,直至将所述待解析的程序全部解析,生成对应的多个序列化对象。
10.根据权利要求9所述的程序调用链生成系统,其特征在于,所述采用多个解析器,根据预置的解析策略,对待解析的程序进行逐句的语法解析,直至将所述待解析的程序全部解析,生成对应的多个序列化对象包括:
将多个解析器部署在一策略链上,位于所述策略链头上的第一解析器根据预置的解析策略对所述待解析的程序进行逐句的语法解析,若所述第一解析器能够识别该待解析的程序中的当前程序语法,则生成相应的序列化对象,否则,调用第二解析器对该待解析的程序进行解析,依次类推,直至将所述待解析的程序全部解析完,生成对应的多个序列化对象。
11.根据权利要求8所述的程序调用链生成系统,其特征在于,每个方法对象对应一个编码器,其中,所述对象解析模块用于对所有的序列化对象中所有方法对象进行解析得到所有的调用程序名称包括:
调取所述当前方法对象对应的编码器对该当前方法对象进行语法编码,获得该当前方法对象中的调用程序名称;重复本步骤,得到该序列化对象中的所有方法对象所对应的所有调用程序名称。
12.根据权利要求8所述的程序调用链生成系统,其特征在于,所述待解析的程序语言为EGL语言源码,其对应的编码器为基于EGL-call语法的编码器。
13.一种电子设备,包括:存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现如权利要求1至7中任一项所述的程序调用链生成方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1至7中任一项所述的程序调用链生成方法。
CN202110416037.2A 2021-04-16 2021-04-16 一种程序调用链生成方法、系统、电子设备及介质 Active CN113110947B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110416037.2A CN113110947B (zh) 2021-04-16 2021-04-16 一种程序调用链生成方法、系统、电子设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110416037.2A CN113110947B (zh) 2021-04-16 2021-04-16 一种程序调用链生成方法、系统、电子设备及介质

Publications (2)

Publication Number Publication Date
CN113110947A CN113110947A (zh) 2021-07-13
CN113110947B true CN113110947B (zh) 2024-04-02

Family

ID=76718446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110416037.2A Active CN113110947B (zh) 2021-04-16 2021-04-16 一种程序调用链生成方法、系统、电子设备及介质

Country Status (1)

Country Link
CN (1) CN113110947B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113703729B (zh) * 2021-08-30 2024-06-28 中国工商银行股份有限公司 一种生成程序调用链的方法、装置及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6487607B1 (en) * 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
KR101674895B1 (ko) * 2015-11-30 2016-11-11 인하대학교 산학협력단 자바 메소드 콜 그래프 기반의 자바 보안 취약점 분석 시스템
CN106227668A (zh) * 2016-07-29 2016-12-14 腾讯科技(深圳)有限公司 数据处理方法和装置
CN111008151A (zh) * 2019-12-20 2020-04-14 上海品顺信息科技有限公司 程序扫描方法、终端设备及计算机可读存储介质
CN112506923A (zh) * 2020-11-20 2021-03-16 北京三快在线科技有限公司 对应业务的方法调用链路确定方法、装置、电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710243B2 (en) * 2013-11-07 2017-07-18 Eagle Legacy Modernization, LLC Parser that uses a reflection technique to build a program semantic tree

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6487607B1 (en) * 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
KR101674895B1 (ko) * 2015-11-30 2016-11-11 인하대학교 산학협력단 자바 메소드 콜 그래프 기반의 자바 보안 취약점 분석 시스템
CN106227668A (zh) * 2016-07-29 2016-12-14 腾讯科技(深圳)有限公司 数据处理方法和装置
CN111008151A (zh) * 2019-12-20 2020-04-14 上海品顺信息科技有限公司 程序扫描方法、终端设备及计算机可读存储介质
CN112506923A (zh) * 2020-11-20 2021-03-16 北京三快在线科技有限公司 对应业务的方法调用链路确定方法、装置、电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种精简二进制代码的程序理解方法;李卷孺;谷大武;陆海宁;;计算机应用;20081001(第10期);全文 *
面向C#的函数调用路径生成;胡明珏;牟永敏;张志华;;计算机仿真;20160915(第09期);全文 *

Also Published As

Publication number Publication date
CN113110947A (zh) 2021-07-13

Similar Documents

Publication Publication Date Title
US10642721B2 (en) Generation of automated testing scripts by converting manual test cases
US8028276B1 (en) Method and system for generating a test file
US9720798B2 (en) Simulating black box test results using information from white box testing
US10742666B2 (en) System and method for static detection and categorization of information-flow downgraders
CN109492053B (zh) 用于访问数据的方法和装置
CN113419740B (zh) 程序数据流的分析方法、装置、电子设备及可读存储介质
Zaccarelli et al. Stream2segment: An open‐source tool for downloading, processing, and visualizing massive event‐based seismic waveform datasets
CN113157572B (zh) 一种测试案例生成方法、系统、电子设备及存储介质
CN110795331A (zh) 软件测试的方法和装置
CN113110947B (zh) 一种程序调用链生成方法、系统、电子设备及介质
US20160110191A1 (en) Staged points-to analysis for large code bases
CN113448869B (zh) 测试用例生成的方法、装置、电子设备及计算机可读介质
CN113297081B (zh) 一种持续集成流水线的执行方法和装置
CN116166547A (zh) 代码变更范围分析方法、装置、设备、存储介质
CN113138767B (zh) 代码语言转换方法、装置、电子设备及存储介质
CN115951916A (zh) 一种组件的处理方法、装置、电子设备及存储介质
CN116414855A (zh) 信息处理方法及装置、电子设备和计算机可读存储介质
CN113050987B (zh) 一种接口文档的生成方法、装置、存储介质及电子设备
CN113032256B (zh) 自动化测试方法、装置、计算机系统和可读存储介质
CN114691197A (zh) 代码分析方法、装置、电子设备和存储介质
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质
US11386209B2 (en) Static source code scanner
US20230315862A1 (en) Method and apparatus for identifying dynamically invoked computer code using literal values
CN116661857A (zh) 数据提取方法、装置、设备及存储介质
CN118535482A (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
GR01 Patent grant
GR01 Patent grant