CN111078559B - java代码中函数调用的提取方法、装置、介质及计算机设备 - Google Patents
java代码中函数调用的提取方法、装置、介质及计算机设备 Download PDFInfo
- Publication number
- CN111078559B CN111078559B CN201911310483.4A CN201911310483A CN111078559B CN 111078559 B CN111078559 B CN 111078559B CN 201911310483 A CN201911310483 A CN 201911310483A CN 111078559 B CN111078559 B CN 111078559B
- Authority
- CN
- China
- Prior art keywords
- function
- data
- call
- java code
- function call
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- 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
Abstract
本申请涉及一种java代码中函数调用的提取方法。该方法包括:获取并存储java代码文件中的函数调用数据,所述函数调用数据包括所述java代码文件中函数的属性数据以及各个函数的调用状态数据;在接收到终端提交的包含当前函数的属性数据的函数调用关系生成请求时,从预先存储的函数调用数据中获取与所述当前函数的属性数据匹配的调用状态数据作为目标数据;根据所述目标数据生成当前函数的函数调用关系,将所述函数调用关系反馈至所述终端展示。本申请可以预先存储java代码文件中函数的属性数据与函数的调用状态数据的对应关系,基于该对应关系实现根据用户需求提取java代码中的函数调用关系。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种java代码中函数调用的提取方法、装置、介质及计算机设备。
背景技术
函数调用关系即函数调用链是一个由程序入口点到出口点的函数名序列,其将控制逻辑与函数调用相结合,并把代码分析粒度从语句扩展到函数。
在软件测试过程中通常需要关注同一项目的不同版本的代码差异,获取不同版本的代码间函数的新增、函数的变更以及函数的删除的情况。因此,为了关注不同软件版本之间的函数变动情况,则需要提取不同的版本的代码中的函数调用关系。
目前的技术方案中,可以实现代码中函数调用的提取,然而现有的技术不能根据用户提供的查询需求提取与查询需求匹配的函数调用关系,方案不够灵活。
发明内容
基于此,有必要针对上述技术问题,提供一种可以预先存储java代码文件中函数的属性数据与函数的调用状态数据的对应关系,基于该对应关系实现根据用户需求提取java代码中的函数调用关系的java代码中函数调用的提取方法、装置、计算机设备和存储介质。
一种java代码中函数调用的提取方法,方法包括:
获取并存储java代码文件中的函数调用数据,所述函数调用数据包括java代码文件中函数的属性数据以及各个函数的调用状态数据;
在接收到终端提交的包含当前函数的属性数据的函数调用关系生成请求时,从预先存储的函数调用数据中获取与当前函数的属性数据匹配的调用状态数据作为目标数据;
根据目标数据生成当前函数的函数调用关系,将函数调用关系反馈至终端展示。
在其中一个实施例中,获取并存储java代码文件中的函数调用数据,包括:
根据预设配置文中各个java代码文件的路径信息,获取各个路径信息对应的java代码文件;
提取各个java代码文件中的函数调用数据并存储。
在其中一个实施例中,获取并存储java代码文件中的函数调用数据,还包括:
根据函数调用数据创建多条数据记录,数据记录中包括函数的属性数据与调用状态数据的映射关系;
将数据记录存入预设数据库中;
从预先存储的函数调用数据中获取与当前函数的属性数据匹配的调用状态数据作为目标数据,包括:
将当前函数的属性数据与数据库中各条数据记录中的映射关系进行匹配,获取与当前函数的属性数据匹配的各条目标数据记录;
提取各条目标数据记录中的调用状态数据作为目标数据。
在其中一个实施例中,调用状态数据包括与当前函数存在调用关系的目标函数,根据目标数据生成函数调用关系,包括:
提取各条目标数据记录的调用状态数据中的目标函数;
生成各个目标函数与当前函数的第一调用链;
将各个第一调用链进行组合生成第二调用链;
以第二调用链作为当前函数的函数调用关系。
在其中一个实施例中,方法还包括:
在接收到终端提交的两个java代码文件中函数调用数据的比对请求时,提取两个java代码文件中函数调用数据的差异数据;
根据差异数据生成差异报表;
将差异报表反馈至终端展示。
在其中一个实施例中,方法还包括:
接收预设配置文件中路径信息的新增请求;
提取新增请求中的新增路径信息;
将新增路径信息对应添加至预设配置文件中。
一种java代码中函数调用的提取装置,装置包括:
获取模块,用于获取并存储java代码文件中的函数调用数据,所述函数调用数据包括java代码文件中函数的属性数据以及各个函数的调用状态数据;
生成模块,用于在接收到终端提交的包含当前函数的属性数据的函数调用关系生成请求时,从预先存储的函数调用数据中获取与当前函数的属性数据匹配的调用状态数据作为目标数据;
反馈模块,用于根据目标数据生成当前函数的函数调用关系,将函数调用关系反馈至终端展示。
在其中一个实施例中,装置还包括:
差异比对模块,用于在接收到终端提交的两个java代码文件中函数调用数据的比对请求时,提取两个java代码文件中函数调用数据的差异数据;
根据差异数据生成差异报表;
将差异报表反馈至终端展示。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,处理器执行计算机程序时实现上述任一实施例方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现上述任一实施例方法的步骤。
上述的java代码中函数调用的提取方法、装置及计算机设备,方法通过获取并存储java代码文件中的函数调用数据,所述函数调用数据包括java代码文件中函数的属性数据以及各个函数的调用状态数据;在接收到终端提交的包含当前函数的属性数据的函数调用关系生成请求时,从预先存储的函数调用数据中获取与当前函数的属性数据匹配的调用状态数据作为目标数据;根据目标数据生成当前函数的函数调用关系,将函数调用关系反馈至终端展示。本申请通过预先建立函数的属性数据与函数的调用状态数据的对应关系,在接收到终端发送的函数调用关系生成请求时,根据该对应关系获取对应的函数调用状态数据,基于该函数调用状态数据生成函数调用关系,以实现根据用户需求提取java代码中的函数调用关系。
附图说明
图1为本申请一示例性实施例中java代码中函数调用的提取方法的应用环境图;
图2为本申请一示例性实施例中提供的java代码中函数调用的提取方法的流程示意图;
图3为本申请一示例性实施例中提供的函数调用关系的有向图的示意图;
图4为本申请一示例性实施例中提供的java代码中函数调用的提取方法的流程示意图;
图5为本申请一示例性实施例中提供的java代码中函数调用的提取装置的结构框图;
图6为本申请一示例性实施例中提供的java代码中函数调用的提取装置的结构框图;
图7为本申请一示例性实施例中提供的计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
请参考图1,图1为本申请一示例性实施例提供的一种java代码中函数调用的提取方法的应用环境示意图。如图1所示,该java代码中函数调用的提取系统包括数据处理服务器100以及终端101。数据处理服务器100与终端101通过网络102进行通信,以实现本申请的java代码中函数调用的提取方法。
数据处理服务器100用于获取并存储java代码文件中的函数调用数据,所述函数调用数据包括java代码文件中函数的属性数据以及各个函数的调用状态数据;在接收到终端101提交的包含当前函数的属性数据的函数调用关系生成请求时,从预先存储的函数调用数据中获取与当前函数的属性数据匹配的调用状态数据作为目标数据;根据目标数据生成当前函数的函数调用关系,将函数调用关系反馈至终端101展示。数据处理服务器100可以用独立的数据处理服务器或者是多个数据处理服务器组成的数据处理服务器集群来实现。
终端101用于向数据处理服务器100提交函数调用关系生成请求,并接收数据处理服务器100反馈的函数调用关系,将该函数调用关系展示于用户界面。终端101可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。
网络102用于实现数据处理服务器100与终端101之间的网络连接。具体的,网络102可以包括多种类型的有线或无线网络。
在一个实施例中,如图2所示,提供了一种java代码中函数调用的提取方法,以该方法应用于图1中的数据处理服务器为例进行说明,包括以下步骤:
S11、获取并存储java代码文件中的函数调用数据,所述函数调用数据包括java代码文件中函数的属性数据以及各个函数的调用状态数据。
本申请中,预先创建多个java项目,各个java项目下面包括多个版本对应的java代码文件。
本申请中开发人员通过git(开源的分布式版本控制系统)向git服务器提交各个java项目对应的java代码文件。git服务器接收java代码文件后为该java代码文件设定一个代码标识,如代码id。
进一步的,本申请中的数据处理服务器每隔预设时间段从git服务器获取java代码文件以及对应的代码标识,将获取的java代码文件以及对应的代码标识存入本地的预设目录下。
进一步的,数据处理服务器从该目录下扫描各个java项目下的各个java代码文件,以采集各个java代码文件中的函数调用数据。
具体的,函数调用数据包括但不限于以下各项:
各个java代码文件所属的项目的项目标识、各个java代码文件对应的代码标识、各个java代码文件中的类名、函数名以及各个函数之间的调用状态数据。其中,项目标识可以为项目名称或者项目的id号,函数的属性数据包括函数的函数名、函数所属类的类名、函数java代码文件的代码标识以及java代码文件所属的java项目的项目标识。函数的调用状态数据包括函数所调用的目标函数以及调用函数的目标函数。
本申请中,通过crontab(定时任务工具)以及flock(文件锁工具)等工具实现多个项目的不间断采集同时有效防止采集到污染、重复数据。具体的,本申请通过crontab工具设定定时采集任务,以采集函数调用数据,通过flock工具实现锁定当前执行的采集脚本,防止同时执行两个采集脚本造成采集到冗余的数据。
S12、在接收到终端提交的包含当前函数的属性数据的函数调用关系生成请求时,从预先存储的函数调用数据中获取与当前函数的属性数据匹配的调用状态数据作为目标数据。
本申请中,调用关系生成请求是指在该应用程序启动后,在用户界面通过用户操作而产生的生成函数调用关系的触发指令相对应的请求。触发指令可以是通过用户预先输入至少一个查询参数后通过触控一个虚拟按键所产生,例如,终端上提供多个输入控件以及一个虚拟按键,各个输入控件可供输入一个查询参数,用户输入完所有查询参数后,通过触控该虚拟按键,即产生的触发指令。
具体的,查询参数包括当前函数的属性数据。一种实施例中,查询参数还可以包括调用深度以及其他的信息。其中,调用深度为当前调用链的调用级数。
S13、根据目标数据生成当前函数的函数调用关系,将函数调用关系反馈至终端展示。
本申请中,函数调用关系为java代码文件中指定类中指定函数与其他函数之间的调用关系。函数调用关系可以被表达为有向图。另一种可能的设计中,函数调用关系也可以为链式结构、表格形式或者其他形式。例如,java代码文件中包括类A,类A中包括函数B、函数C以及函数D,生成该java代码文件中包括类A中的函数调用关系为:B调用C,C调用D。
在其中一个实施例中,上述的获取并存储java代码文件中的函数调用数据,包括:
根据预设配置文中各个java代码文件的路径信息,获取各个路径信息对应的java代码文件;
提取各个java代码文件中的函数调用数据并存储。
本申请中,预先设置预设配置文件,预设配置文件中包括多个java项目的项目标识、各个java项目中的多个java代码文件代码标识以及各个java代码文件的路径信息。
数据处理服务器根据预设配置文件中的路径信息以及代码标识扫描各个java代码文件,得到各个java代码文件中的函数调用数据并存入预设数据库,做持久化存储。
在其中一个实施例中,上述的获取并存储java代码文件中的函数调用数据,可以包括:
根据函数调用数据创建多条数据记录,数据记录中包括函数的属性数据与调用状态数据的映射关系;
将数据记录存入预设数据库中;
上述的从预先存储的函数调用数据中获取与当前函数的属性数据匹配的调用状态数据作为目标数据,可以包括:
将当前函数的属性数据与数据库中各条数据记录中的映射关系进行匹配,获取与当前函数的属性数据匹配的各条目标数据记录;
提取各条目标数据记录中的调用状态数据作为目标数据。
本申请中,预先根据获取的函数调用数据构建映射关系的数据记录。具体的,针对一个函数的一级调用创建一条数据记录。例如,针对类A中的函数B,若函数B调用了函数C以及函数D,则针对类A中的函数B调用函数C创建一条数据记录,针对类A中的函数B调用函数D创建另一条数据记录。每一条数据记录中包括当前函数的属性数据与当前函数的调用状态数据之间的映射关系,即当前类的类名、当前类中的当前函数的函数名、当前函数的所属java代码文件的代码标识、java代码文件所属的java项目的项目标识以及当前函数的调用状态数据之间的映射关系。
具体的,调用状态数据包括与当前函数存在调用关系的目标函数以及具体的调用关系,即当前函数所调用的目标函数以及调用当前函数的目标函数。
一种可能的设计中,预设数据库的数据结果如下表1所示:
表1一种实施例中,预设数据库的数据结构
如上表1所示,表1中包括3条数据记录,数据记录的id分别为:id1、id2以及id3。在第一条数据记录中包括java代码文件的代码标识commitid1、java代码文件所属的java项目的项目标识、java代码文件中的类A1、类A1中的函数B1以及函数B1调用的目标函数C1。其中,代码标识、项目标识以及类名以及函数名为函数B1的属性数据,目标函数C1为函数B1的调用状态数据。同理,第二条数据记录以及第三条数据记录也包括代码标识、项目标识、类名、函数名以及目标函数名等数据。
需要说明的是,从id1以及id3的两条数据记录可以看出,当一个函数调用了不同的目标函数时,允许该函数存在多条数据记录。
本申请中,当接收终端提交的当前函数的函数调用关系生成请求时,提取该函数调用关系生成请求中的当前函数的属性数据,将当前函数的属性数据与预设数据库中的函数的属性数据进行比对,获取与当前函数的属性数据匹配的各条数据记录。
在其中一个实施例中,上述的调用状态数据包括与当前函数存在调用关系的目标函数,上述的根据目标数据生成函数调用关系,可以包括:
提取各条目标数据记录的调用状态数据中的目标函数;
生成各个目标函数与当前函数的第一调用链;
将各个第一调用链进行组合生成第二调用链;
以第二调用链作为当前函数的函数调用关系。
由上表1可知,针对同一函数可以存在多条数据记录,因此,针对当前函数可能匹配出一条或多条数据记录。进一步的,提取各条数据记录中的目标函数,根据各个目标函数与当前函数构成多个第一调用链,将各个第一调用链进行组合生成第二调用链,以第二调用链作为当前函数的函数调用关系。
请参考图3,图3为一种实施例中,函数调用关系的有向图的示意图。如图3所示,当前函数所调用的目标函数包括:函数1、函数2、函数3以及函数4,同时当前函数被函数5调用,即与当前函数存在调用关系的函数包括函数1、函数2、函数3、函数4以及函数5,其中,函数1、函数2、函数3以及函数4为被调函数,函数5为当前函数的主调函数。
本申请通过可视化界面,接收终端提交的函数调用关系的生成请求,该函数调用关系的生成请求中包括用户所需要展示的函数调用关系的函数名、函数所属的类、函数所属的java代码文件的代码标识以及java代码文件所属的java项目的项目标识。另一种实施例中,用户还可以输入需要展示的调用深度,如用户输入调用深度为5,则展示当前函数的5级调用关系,若用户输入的调用深度为10,而数据处理服务器检测到当前函数的调用深度最大为6时,则仅显示6级的调用深度在用户界面,如此,实现了根据用户需求展示指定类的指定函数的函数调用关系。
请参考图4,在其中一个实施例中,上述的方法还可以包括步骤:
S14、在接收到终端提交的两个java代码文件中函数调用数据的比对请求时,提取两个java代码文件中函数调用数据的差异数据,根据差异数据生成差异报表,将差异报表反馈至终端展示。
本申请中,终端可以向数据处理服务器发起两个java代码文件中函数调用数据的比对请求,数据处理服务器接收比对请求后,从比对请求中提取两个java代码文件的代码标识,根据代码标识从预设数据库中获取两个代码标识对应的所有的数据记录,并逐一比对各个数据记录得到两个java代码文件中函数调用数据的差异数据。
进一步的,根据差异数据生成差异报表,该差异报表中包括两个java代码文件中其中一个java代码文件相对于另一个java代码文件而言,新增的函数、修改的函数以及删除的函数等函数变动信息。进一步的,将差异报表展示于用户界面,便于研发人员关注同一java项目的不同版本之间的函数的差异情况。
在其中一个实施例中,上述的方法还可以包括:
接收预设配置文件中路径信息的新增请求;
提取新增请求中的新增路径信息;
将新增路径信息对应添加至预设配置文件中。
当需要修改预设配置文件时,开发人员可以通过终端向数据处理服务器提交预设配置文件的修改请求。例如,当需要新增java项目时,可以向数据处理服务器提交java项目的新增请求,该新增请求中包括新增java项目的项目标识、该新增java项目中包含的新增java代码文件的路径信息以及代码标识,数据处理服务器提取该新增java项目的项目标识、路径信息以及代码标识,添加至预设配置文件中。
在一个实施例中,如图5所示,提供了一种java代码中函数调用的提取装置,包括:
获取模块11,用于获取并存储java代码文件中的函数调用数据,所述函数调用数据包括java代码文件中函数的属性数据以及各个函数的调用状态数据;
匹配模块12,用于在接收到终端提交的包含当前函数的属性数据的函数调用关系生成请求时,从预先存储的函数调用数据中获取与当前函数的属性数据匹配的调用状态数据作为目标数据;
生成模块13,用于根据目标数据生成当前函数名对应函数的函数调用关系,将函数调用关系反馈至终端展示。
在其中一个实施例中,上述的获取模块11,包括:
获取单元,用于根据预设配置文中各个java代码文件的路径信息,获取各个路径信息对应的java代码文件;
提取各个java代码文件中的函数调用数据并存储。
在其中一个实施例中,上述的获取模块11,包括:
存储单元,用于根据函数调用数据创建多条数据记录,数据记录中包括函数的属性数据与调用状态数据的映射关系;
将数据记录存入预设数据库中;
上述的匹配模块12,包括:
匹配单元,用于将当前函数的属性数据与数据库中各条数据记录中的映射关系进行匹配,获取与当前函数的属性数据匹配的各条目标数据记录;
提取各条目标数据记录中的调用状态数据作为目标数据。
在其中一个实施例中,上述的调用状态数据包括与当前函数存在调用关系的目标函数,上述的生成模块13,包括:
生成单元,用于提取各条目标数据记录的调用状态数据中的目标函数;
生成各个目标函数与当前函数的第一调用链;
将各个第一调用链进行组合生成第二调用链;
以第二调用链作为当前函数的函数调用关系。
请参考图6,在其中一个实施例中,上述的装置还包括:
差异比对模块14,用于在接收到终端提交的两个java代码文件中函数调用数据的比对请求时,提取两个java代码文件中函数调用数据的差异数据;
根据差异数据生成差异报表;
将差异报表反馈至终端展示。
请继续参考图6在其中一个实施例中,上述的装置还包括:
新增模块15,用于接收预设配置文件中路径信息的新增请求;
提取新增请求中的新增路径信息;
将新增路径信息对应添加至预设配置文件中。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是业务处理数据处理服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供确定和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的第一终端通过网络连接通信。该计算机程序被处理器执行时以实现一种java代码中函数调用的提取方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取并存储java代码文件中的函数调用数据,所述函数调用数据包括java代码文件中函数的属性数据以及各个函数的调用状态数据;在接收到终端提交的包含当前函数的属性数据的函数调用关系生成请求时,从预先存储的函数调用数据中获取与当前函数的属性数据匹配的调用状态数据作为目标数据;根据目标数据生成当前函数的函数调用关系,将函数调用关系反馈至终端展示。
在一个实施例中,处理器执行计算机程序实现上述的获取并存储java代码文件中的函数调用数据步骤时,具体实现以下步骤:
根据预设配置文中各个java代码文件的路径信息,获取各个路径信息对应的java代码文件;
提取各个java代码文件中的函数调用数据并存储。
在一个实施例中,处理器执行计算机程序实现上述的取并存储多个java代码文件中的函数调用数据步骤时,具体还实现以下步骤:
根据函数调用数据创建多条数据记录,数据记录中包括函数的属性数据与调用状态数据的映射关系;
将数据记录存入预设数据库中;
处理器执行计算机程序实现上述的从预先存储的函数调用数据中获取与当前函数的属性数据匹配的调用状态数据作为目标数据步骤时,具体实现以下步骤:
将当前函数的属性数据与数据库中各条数据记录中的映射关系进行匹配,获取与当前函数的属性数据匹配的各条目标数据记录;
提取各条目标数据记录中的调用状态数据作为目标数据。
在其中一个实施例中,上述的调用状态数据包括与当前函数存在调用关系的目标函数,处理器执行计算机程序实现上述的根据目标数据生成函数调用关系步骤时,具体实现以下步骤:
提取各条目标数据记录的调用状态数据中的目标函数;
生成各个目标函数与当前函数的第一调用链;
将各个第一调用链进行组合生成第二调用链;
以第二调用链作为当前函数的函数调用关系。
在其中一个实施例中,处理器执行计算机程序时具体还实现以下步骤:
在接收到终端提交的两个java代码文件中函数调用数据的比对请求时,提取两个java代码文件中函数调用数据的差异数据;
根据差异数据生成差异报表;
将差异报表反馈至终端展示。
在其中一个实施例中,处理器执行计算机程序时具体还实现以下步骤:
接收预设配置文件中路径信息的新增请求;
提取新增请求中的新增路径信息;
将新增路径信息对应添加至预设配置文件中。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取并存储java代码文件中的函数调用数据,所述函数调用数据包括java代码文件中函数的属性数据以及各个函数的调用状态数据;在接收到终端提交的包含当前函数的属性数据的函数调用关系生成请求时,从预先存储的函数调用数据中获取与当前函数的属性数据匹配的调用状态数据作为目标数据;根据目标数据生成当前函数的函数调用关系,将函数调用关系反馈至终端展示。
在一个实施例中,计算机程序被处理器执行实现上述的获取并存储java代码文件中的函数调用数据步骤时,具体实现以下步骤:
根据预设配置文中各个java代码文件的路径信息,获取各个路径信息对应的java代码文件;
提取各个java代码文件中的函数调用数据并存储。
在一个实施例中,计算机程序被处理器执行实现上述的取并存储多个java代码文件中的函数调用数据步骤时,具体还实现以下步骤:
根据函数调用数据创建多条数据记录,数据记录中包括函数的属性数据与调用状态数据的映射关系;
将数据记录存入预设数据库中;
计算机程序被处理器执行实现上述的从预先存储的函数调用数据中获取与当前函数的属性数据匹配的调用状态数据作为目标数据步骤时,具体实现以下步骤:
将当前函数的属性数据与数据库中各条数据记录中的映射关系进行匹配,获取与当前函数的属性数据匹配的各条目标数据记录;
提取各条目标数据记录中的调用状态数据作为目标数据。
在其中一个实施例中,上述的调用状态数据包括与当前函数存在调用关系的目标函数,计算机程序被处理器执行实现上述的根据目标数据生成函数调用关系步骤时,具体实现以下步骤:
提取各条目标数据记录的调用状态数据中的目标函数;
生成各个目标函数与当前函数的第一调用链;
将各个第一调用链进行组合生成第二调用链;
以第二调用链作为当前函数的函数调用关系。
在其中一个实施例中,计算机程序被处理器执行时具体还实现以下步骤:
在接收到终端提交的两个java代码文件中函数调用数据的比对请求时,提取两个java代码文件中函数调用数据的差异数据;
根据差异数据生成差异报表;
将差异报表反馈至终端展示。
在其中一个实施例中,计算机程序被处理器执行时,具体还实现以下步骤:
接收预设配置文件中路径信息的新增请求;
提取新增请求中的新增路径信息;
将新增路径信息对应添加至预设配置文件中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种java代码中函数调用的提取方法,所述方法包括:
根据预设配置文件中各个java代码文件的路径信息,获取各个路径信息对应的java代码文件;
提取各个java代码文件中的函数调用数据并存储,所述函数调用数据包括所述java代码文件中函数的属性数据以及各个函数的调用状态数据;
在接收到终端提交的包含当前函数的属性数据的函数调用关系生成请求时,从预先存储的函数调用数据中获取与所述当前函数的属性数据匹配的调用状态数据作为目标数据;
根据所述目标数据生成当前函数的函数调用关系,将所述函数调用关系反馈至所述终端展示;
接收所述预设配置文件中路径信息的新增请求;
提取所述新增请求中的新增路径信息;
将所述新增路径信息对应添加至所述预设配置文件中。
2.根据权利要求1所述的方法,其特征在于,所述获取并存储java代码文件中的函数调用数据,还包括:
根据所述函数调用数据创建多条数据记录,所述数据记录中包括函数的属性数据与调用状态数据的映射关系;
将所述数据记录存入预设数据库中;
所述从预先存储的函数调用数据中获取与所述当前函数的属性数据匹配的调用状态数据作为目标数据,包括:
将当前函数的属性数据与所述数据库中各条数据记录中的映射关系进行匹配,获取与当前函数的属性数据匹配的各条目标数据记录;
提取各条目标数据记录中的调用状态数据作为所述目标数据。
3.根据权利要求2所述的方法,其特征在于,所述调用状态数据包括与所述当前函数存在调用关系的目标函数,所述根据所述目标数据生成函数调用关系,包括:
提取各条目标数据记录的调用状态数据中的目标函数;
生成各个目标函数与所述当前函数的第一调用链;
将各个第一调用链进行组合生成第二调用链;
以所述第二调用链作为所述当前函数的函数调用关系。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到终端提交的两个java代码文件中所述函数调用数据的比对请求时,提取所述两个java代码文件中所述函数调用数据的差异数据;
根据所述差异数据生成差异报表;
将所述差异报表反馈至所述终端展示。
5.一种java代码中函数调用的提取装置,所述装置包括:
获取模块,用于根据预设配置文件中各个java代码文件的路径信息,获取各个路径信息对应的java代码文件,提取各个java代码文件中的函数调用数据并存储,所述函数调用数据包括所述java代码文件中函数的属性数据以及各个函数的调用状态数据;
匹配模块,用于在接收到终端提交的包含当前函数的属性数据的函数调用关系生成请求时,从预先存储的函数调用数据中获取与所述当前函数的属性数据匹配的调用状态数据作为目标数据;
生成模块,用于根据所述目标数据生成当前函数的函数调用关系,将所述函数调用关系反馈至所述终端展示;
新增模块,用于接收所述预设配置文件中路径信息的新增请求,提取所述新增请求中的新增路径信息,将所述新增路径信息对应添加至所述预设配置文件中。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
差异比对模块,用于在接收到终端提交的两个java代码文件中所述函数调用数据的比对请求时,提取所述两个java代码文件中函数调用数据的差异数据;
根据所述差异数据生成差异报表;
将所述差异报表反馈至所述终端展示。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述的java代码中函数调用的提取方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的java代码中函数调用的提取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911310483.4A CN111078559B (zh) | 2019-12-18 | 2019-12-18 | java代码中函数调用的提取方法、装置、介质及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911310483.4A CN111078559B (zh) | 2019-12-18 | 2019-12-18 | java代码中函数调用的提取方法、装置、介质及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111078559A CN111078559A (zh) | 2020-04-28 |
CN111078559B true CN111078559B (zh) | 2023-10-13 |
Family
ID=70315604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911310483.4A Active CN111078559B (zh) | 2019-12-18 | 2019-12-18 | java代码中函数调用的提取方法、装置、介质及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111078559B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111736896B (zh) * | 2020-06-30 | 2024-03-12 | 中国工商银行股份有限公司 | 代码处理方法、装置、电子设备和介质 |
CN112380286B (zh) * | 2020-11-17 | 2022-03-18 | 平安科技(深圳)有限公司 | 数据库的数据对象关系图谱生成方法、装置、设备及介质 |
CN112596737A (zh) * | 2020-12-28 | 2021-04-02 | 上海品顺信息科技有限公司 | 一种函数调用关系的扫描方法、系统、设备及存储介质 |
CN112965794B (zh) * | 2021-02-19 | 2024-03-22 | 西安智周深鉴信息科技集团有限公司 | 算法调用方法、电子设备及存储介质 |
CN117118962B (zh) * | 2023-07-25 | 2024-03-22 | 领悦数字信息技术有限公司 | 用于跨多个云平台部署用户方法的方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104035772A (zh) * | 2014-06-09 | 2014-09-10 | 中国科学院软件研究所 | 基于静态分析的源码多版本函数调用关系差异性标识方法 |
CN105867930A (zh) * | 2016-04-05 | 2016-08-17 | 华为技术有限公司 | 一种函数调用关系的显示方法、装置及终端 |
CN106951228A (zh) * | 2017-02-21 | 2017-07-14 | 腾讯科技(深圳)有限公司 | 版本迭代中差异的处理方法和装置 |
CN108874470A (zh) * | 2017-05-11 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 一种信息处理方法及服务器、计算机存储介质 |
CN110007957A (zh) * | 2018-12-17 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 调用链路构建方法、装置及设备 |
-
2019
- 2019-12-18 CN CN201911310483.4A patent/CN111078559B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104035772A (zh) * | 2014-06-09 | 2014-09-10 | 中国科学院软件研究所 | 基于静态分析的源码多版本函数调用关系差异性标识方法 |
CN105867930A (zh) * | 2016-04-05 | 2016-08-17 | 华为技术有限公司 | 一种函数调用关系的显示方法、装置及终端 |
CN106951228A (zh) * | 2017-02-21 | 2017-07-14 | 腾讯科技(深圳)有限公司 | 版本迭代中差异的处理方法和装置 |
CN108874470A (zh) * | 2017-05-11 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 一种信息处理方法及服务器、计算机存储介质 |
CN110007957A (zh) * | 2018-12-17 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 调用链路构建方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111078559A (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078559B (zh) | java代码中函数调用的提取方法、装置、介质及计算机设备 | |
CN109672741B (zh) | 微服务监控方法、装置、计算机设备和存储介质 | |
CN108874926B (zh) | 海量数据查询方法、装置、计算机设备和存储介质 | |
WO2020186786A1 (zh) | 文件处理方法、装置、计算机设备和存储介质 | |
CN109558440B (zh) | 数据批量处理方法、装置、计算机设备及存储介质 | |
CN110290212B (zh) | 服务调用记录方法、装置、计算机设备和存储介质 | |
CN110276002B (zh) | 搜索应用数据处理方法、装置、计算机设备和存储介质 | |
WO2020253061A1 (zh) | 页面生成方法、装置、计算机设备和存储介质 | |
CN107688664B (zh) | 图表生成方法、装置、计算机设备和存储介质 | |
CN111191221B (zh) | 权限资源的配置方法、装置和计算机可读存储介质 | |
WO2020233091A1 (zh) | 业务数据回退方法、装置、计算机设备和存储介质 | |
CN111078507A (zh) | 数据监控方法、系统、计算机设备和存储介质 | |
CN111177302A (zh) | 业务单据处理方法、装置、计算机设备和存储介质 | |
CN111259358B (zh) | 登录方法、装置、计算机设备和存储介质 | |
CN109597979B (zh) | 清单表格生成方法、装置、计算机设备和存储介质 | |
CN112860778B (zh) | 桌面应用程序的数据库管理方法、装置、设备和介质 | |
CN109389299B (zh) | 工作流流程部署方法、装置、计算机设备和存储介质 | |
CN110704095A (zh) | 基于工作流的配置处理方法、装置、计算机设备和存储介质 | |
CN108255967B (zh) | 存储过程的调用方法、装置、存储介质及终端 | |
CN112288400A (zh) | 多系统数据交互方法、装置、计算机设备及存储介质 | |
CN109542764B (zh) | 网页自动化测试方法、装置、计算机设备和存储介质 | |
WO2021169469A1 (zh) | 声纹数据处理方法、装置、计算机设备和存储介质 | |
CN111756618B (zh) | 群聊的处理方法及装置、电子设备、可读存储介质 | |
CN109542962B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN115098889B (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 |