CN116483735B - 一种代码变更的影响分析方法、装置、存储介质及设备 - Google Patents
一种代码变更的影响分析方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN116483735B CN116483735B CN202310737273.3A CN202310737273A CN116483735B CN 116483735 B CN116483735 B CN 116483735B CN 202310737273 A CN202310737273 A CN 202310737273A CN 116483735 B CN116483735 B CN 116483735B
- Authority
- CN
- China
- Prior art keywords
- data access
- access layer
- file
- function
- interface
- 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
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000008859 change Effects 0.000 title claims abstract description 7
- 238000004458 analytical method Methods 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 285
- 238000004590 computer program Methods 0.000 claims description 11
- 238000000605 extraction Methods 0.000 claims description 5
- 238000005314 correlation function Methods 0.000 claims description 3
- 238000012360 testing method Methods 0.000 abstract description 23
- 238000012986 modification Methods 0.000 abstract description 17
- 230000004048 modification Effects 0.000 abstract description 17
- 238000012827 research and development Methods 0.000 abstract description 13
- 238000011160 research Methods 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 230000014509 gene expression Effects 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 230000035945 sensitivity Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Finance (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种代码变更的影响分析方法、装置、存储介质及设备,该方法中,从项目源码中提取出记录数据访问层类名称的数据访问层文件,以及记录对外接口层类名称的程序接口文件,再根据数据访问层文件,获取数据访问层函数并保存到数据访问层函数列表中,同时根据程序接口文件,获取对外接口函数中调用的相关函数并保存到对外接口信息列表中,通过比对这两个列表,确定各数据访问层函数的影响接口。这样,通过追溯函数的调用关系,精确定位到数据访问层的修改对对外接口的影响范围,使得研发人员可以重点回归测试相关接口,从而缩小回归测试范围,降低时间成本,提升研发速度。
Description
技术领域
本申请涉及代码开发技术领域,具体而言,涉及一种代码变更的影响分析方法、装置、存储介质及设备。
背景技术
去Oracle化,实际上就是去集中式数据库架构,金融行业中,去Oracle化就是将数据从当前的Oracle数据库迁移到具有体积小、速度快、高可移植性等优点的MySQL数据库。数据库的替换,对于历史数据可以通过数据迁移的方式进行,但不同的底层数据库对于程序在数据访问层会有不同的操作逻辑,需要修改相应的代码进行适配。而在修改程序数据访问层代码的过程中,由于金融数据的敏感性以及缺乏对程序业务功能范围的评估,常常是修改一处数据访问层代码,就需要对整个程序业务功能进行回归测试。这一方式容易浪费大量的时间以及测试资源,影响研发进度。
发明内容
本申请的目的在于提供一种代码变更的影响分析方法、装置、存储介质及设备,旨在解决相关技术中存在的修改程序数据访问层代码时容易浪费大量的时间以及测试资源,影响研发进度的问题。
第一方面,本申请提供的一种代码变更的影响分析方法,包括:
获取项目源码,从所述项目源码中提取出数据访问层文件和程序接口文件;其中,所述数据访问层文件是记录数据访问层类名称的文件;所述程序接口文件是记录对外接口层类名称的文件;
根据所述数据访问层文件,获取数据访问层函数并保存到数据访问层函数列表中,根据所述程序接口文件,获取对外接口函数中调用的相关函数并保存到对外接口信息列表中;所述数据访问层函数是所述数据访问层类下的函数;所述对外接口函数是所述对外接口层类下的函数;
比对所述数据访问层函数列表和所述对外接口信息列表,根据比对结果确定各数据访问层函数的影响接口。
在上述实现过程中,从项目源码中提取出记录数据访问层类名称的数据访问层文件,以及记录对外接口层类名称的程序接口文件,再根据数据访问层文件,获取数据访问层函数并保存到数据访问层函数列表中,同时根据程序接口文件,获取对外接口函数中调用的相关函数并保存到对外接口信息列表中,通过比对这两个列表,确定各数据访问层函数的影响接口。这样,通过追溯函数的调用关系,精确定位到数据访问层的修改对对外接口的影响范围,使得研发人员可以重点回归测试相关接口,从而缩小回归测试范围,降低时间成本,提升研发速度。
进一步地,在一些实施例中,所述从所述项目源码中提取出数据访问层文件和程序接口文件,包括:
查找所述项目源码中的Java文件,基于查找到的Java文件生成Java文件列表;
将所述Java文件列表中的文件名称统一转换成小写形式后,查询文件名称以dto结尾的文件作为数据访问层文件,查询文件名称以controller结尾的文件作为程序接口文件。
在上述实现过程中,提供一种提取数据访问层文件和程序接口文件的具体方式,即根据文件名称进行筛选。
进一步地,在一些实施例中,所述根据所述数据访问层文件,获取数据访问层函数并保存到数据访问层函数列表中,根据所述程序接口文件,获取对外接口函数中调用的相关函数并保存到对外接口信息列表中,包括:
将所述数据访问层文件解析成抽象语法树,通过所述数据访问层文件的抽象语法树获取数据访问层函数,再将所述数据访问层函数保存到数据访问层函数列表中;
将所述程序接口文件解析成抽象语法树,通过所述程序接口文件的抽象语法树获取对外接口函数,确定所述对外接口函数中调用的相关函数,再将所述相关函数保存到对外接口信息列表中。
在上述实现过程中,提供一种获取所需函数的具体方式,即分别根据数据访问层文件和程序接口文件构建对应的抽象语法树后,通过抽象语法树获取得到。
进一步地,在一些实施例中,所述将所述数据访问层函数保存到数据访问层函数列表中,包括:
将所述数据访问层函数的函数名称和所在的数据访问层类的类名称作为对象,保存到数据访问层函数列表中。
在上述实现过程中,将从数据访问层文件中提取出的信息以{函数名称,类名称}对象方式保存到数据访问层函数列表中,在追溯出影响接口的同时,为研发人员提供更为丰富的信息,提升研发效率。
进一步地,在一些实施例中,所述将所述相关函数保存到对外接口信息列表中,包括:
通过所述程序接口文件的抽象语法树获取对应的对外接口层类的接口名称、接口函数以及接口类名称;
将所述相关函数和接口名称、接口函数以及接口类名称作为对象,保存到对外接口信息列表中。
在上述实现过程中,将从程序接口文件中提取出的信息以{接口名称、接口函数、接口类名称、相关函数}对象方式保存到对外接口信息列表中,在追溯出影响接口的同时,为研发人员提供更为丰富的信息,提升研发效率。
进一步地,在一些实施例中,所述比对所述数据访问层函数列表和所述对外接口信息列表,根据比对结果确定各数据访问层函数的影响接口,包括:
遍历所述数据访问层函数列表,判断所述对外接口信息列表中是否包含与当前的数据访问层函数相匹配的相关函数;
若判断结果为是,将相匹配的相关函数对应的对外接口确定为当前的数据访问层函数的影响接口。
在上述实现过程中,遍历数据访问层函数列表,在对外接口信息列表中查询对外接口调用的函数中是否包含当前的数据访问层函数,如果包含,则表明当前的数据访问层函数影响该对外接口,在修改该数据访问层后,重点回归测试该对外接口,如此可以减少回归测试所需的时间和测试资源。
进一步地,在一些实施例中,所述方法还包括:
根据各数据访问层函数的影响接口,生成影响接口列表并输出;所述影响接口列表中记录所述数据访问层函数、所述数据访问层函数所在的数据访问层类的类名称以及所述影响接口的接口名称。
在上述实现过程中,在确定当前的数据访问层函数的影响接口后,以{数据访问层函数、数据访问层函数所在的类名、对外接口名称}对象方式添加到影响接口列表中,使得研发人员能够根据该影响接口列表,更为准确评估数据访问层修改对业务造成的影响。
第二方面,本申请提供的一种代码变更的影响分析装置,包括:
文件提取模块,用于获取项目源码,从所述项目源码中提取出数据访问层文件和程序接口文件;其中,所述数据访问层文件是记录数据访问层类名称的文件;所述程序接口文件是记录对外接口层类名称的文件;
列表获取模块,用于根据所述数据访问层文件,获取数据访问层函数并保存到数据访问层函数列表中,根据所述程序接口文件,获取对外接口函数中调用的相关函数并保存到对外接口信息列表中;所述数据访问层函数是所述数据访问层类下的函数;所述对外接口函数是所述对外接口层类下的函数;
关系确定模块,用于比对所述数据访问层函数列表和所述对外接口信息列表,根据比对结果确定各数据访问层函数的影响接口。
第三方面,本申请提供的一种电子设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法的步骤。
第四方面,本申请提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如第一方面任一项所述的方法。
第五方面,本申请提供的一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面任一项所述的方法。
本申请公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本申请公开的上述技术即可得知。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种代码变更的影响分析方法的流程图;
图2为本申请实施例提供的一种追溯数据访问层函数与对外接口关系的方案的工作流程的示意图;
图3为本申请实施例提供的一种代码变更的影响分析装置的框图;
图4为本申请实施例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如背景技术记载,相关技术中存在着修改程序数据访问层代码时容易浪费大量的时间以及测试资源,影响研发进度的问题。基于此,本申请实施例提供一种代码变更的影响分析方案,以解决上述问题。
接下来对本申请实施例进行介绍:
如图1所示,图1是本申请实施例提供的一种代码变更的影响分析方法的流程图,所述方法可以应用于终端或服务器。该终端可以是各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台式计算机等;该服务器可以是单个服务器,也可以是多个服务器组成的分布式服务器集群。该终端或服务器提供代码分析处理的环境,这一环境包括软件部分和硬件部分,其中,软件部分主要包括操作系统,如Windows、Linux等,硬件部分主要包括计算资源、存储资源等,如CPU(Central Processing Unit,中央处理器)、内存、硬盘等。需要说明的是,该终端/服务器也可以实现成多个软件或软件模块,或者还可以实现成单个软件或软件模块,本申请对此不作限制。
所述方法包括:
在步骤101、获取项目源码,从所述项目源码中提取出数据访问层文件和程序接口文件;其中,所述数据访问层文件是记录数据访问层类名称的文件;所述程序接口文件是记录对外接口层类名称的文件;
本步骤中提到的项目源码可以是指因数据库替换而需要修改数据访问层代码的程序的源代码。该程序可以是金融技术领域中的程序,如财务管理程序、银行信贷风险评估程序等。在实现时,该项目源码可以是从项目代码管理平台获取到的。
本实施例方案中,数据访问层类是指数据访问层的类,对外接口层类是指对外接口层的类,通过从项目源码中提取记录数据访问层类名称的数据访问层文件,以及记录对外接口层类名称的程序接口文件,追溯函数的调用关系,以精确定位到数据访问层的修改对对外接口的影响范围,从而缩小测试范围,降低时间成本,提升研发速度。
在一些实施例中,本步骤中提到的从所述项目源码中提取出数据访问层文件和程序接口文件可以包括:查找所述项目源码中的Java文件,基于查找到的Java文件生成Java文件列表;将所述Java文件列表中的文件名称统一转换成小写形式后,查询文件名称以dto结尾的文件作为数据访问层文件,查询文件名称以controller结尾的文件作为程序接口文件。也就是说,在提取这两种文件时,可以先遍历查找项目源码中文件后缀为.java的文件,即Java文件,并添加到Java文件列表中,之后,遍历该Java文件列表,将文件名称通过lower()函数统一转换成小写形式,查询文件名称以dto结尾的文件,则该文件为数据访问层文件,查询文件名称以controller结尾的文件,则该文件为程序接口文件。当然,在其他实施例中,也可以通过其他方式来提取这两种文件。另外,在实际应用中,一个项目源码中往往可以提取出多个数据访问层文件和多个程序接口文件,其中,一个数据访问层文件对应于一个数据访问层类,一个程序接口文件对应于一个对外接口层类。
在步骤102、根据所述数据访问层文件,获取数据访问层函数并保存到数据访问层函数列表中,根据所述程序接口文件,获取对外接口函数中调用的相关函数并保存到对外接口信息列表中;所述数据访问层函数是所述数据访问层类下的函数;所述对外接口函数是所述对外接口层类下的函数;
本步骤是指:根据提取到的数据访问层文件,获取对应类下的所有函数,保存到数据访问层函数列表中,同时根据提取到的程序接口文件,获取对应类下的函数中调用的相关函数,保存到对外接口信息列表中,以便于后续的比对分析。
具体地,在一些实施例中,本步骤可以包括:将所述数据访问层文件解析成抽象语法树,通过所述数据访问层文件的抽象语法树获取数据访问层函数,再将所述数据访问层函数保存到数据访问层函数列表中;将所述程序接口文件解析成抽象语法树,通过所述程序接口文件的抽象语法树获取对外接口函数,确定所述对外接口函数中调用的相关函数,再将所述相关函数保存到对外接口信息列表中。也就是说,分别根据数据访问层文件和程序接口文件构建对应的抽象语法树,抽象语法树(Abstract Syntax Tree,AST)是源代码语法结构的一种抽象表示,树上的每个节点都表示源代码中的一种结构,因此,通过抽象语法树,可以获取到数据访问层函数或对外接口函数,从而能够快速形成数据访问层函数列表信息和对外接口信息列表信息。其中,该抽象语法树可以是通过Python官方提供的AST模块,对数据访问层文件或程序接口文件进行转换而得到的;还有,从抽象语法树中获取所需函数时,可以是通过对应的正则表达式来获取得到的,例如,针对数据访问层文件的抽象语法树,可通过正则表达式//MethodDeclarator[]获取到当前类下的所有数据访问层函数。当然,在其他实施例中,所需函数也可以通过其他方式来提取得到。
进一步地,在一些实施例中,前面提到的将所述数据访问层函数保存到数据访问层函数列表中可以包括:将所述数据访问层函数的函数名称和所在的数据访问层类的类名称作为对象,保存到数据访问层函数列表中。也就是说,在获取到数据访问层函数时,可以提取函数名称,以{函数名称,类名称}对象方式保存到数据访问层函数列表中,这样,可以在追溯出影响接口的同时,为研发人员提供更为丰富的信息,提升研发效率。
相应地,在一些实施例中,前面提到的将所述相关函数保存到对外接口信息列表中可以包括:通过所述程序接口文件的抽象语法树获取对应的对外接口层类的接口名称、接口函数以及接口类名称;将所述相关函数和接口名称、接口函数以及接口类名称作为对象,保存到对外接口信息列表中。也就是说,在获取到对外接口函数中调用的相关函数时,还可以获取相应的对外接口的接口名称、接口函数以及接口类名称,并以{接口名称、接口函数、接口类名称、相关函数}对象方式保存到对外接口信息列表中。同样地,通过这一设置,可以在追溯出影响接口的同时,为研发人员提供更为丰富的信息,提升研发效率。
在步骤103、比对所述数据访问层函数列表和所述对外接口信息列表,根据比对结果确定各数据访问层函数的影响接口。
本步骤是指:对数据访问层函数列表中的数据访问层函数和对外接口信息列表中的相关函数进行比对,追溯函数的调用关系,从而确定出各数据访问层函数的影响接口,即在程序的对外接口会直接或间接使用各数据访问层函数的相关接口,从而为研发人员提供需要重点回归测试的对外接口的信息,缩小回归测试范围。
在一些实施例中,本步骤可以包括:遍历所述数据访问层函数列表,判断所述对外接口信息列表中是否包含与当前的数据访问层函数相匹配的相关函数;若判断结果为是,将相匹配的相关函数对应的对外接口确定为当前的数据访问层函数的影响接口。也就是说,在比对时,遍历数据访问层函数列表,在对外接口信息列表中查询对外接口调用的函数中是否包含当前的数据访问层函数,如果不包含,则跳过继续下一个循环,如果包含,则表明当前的数据访问层函数影响该对外接口,在修改该数据访问层后,重点回归测试该对外接口,如此可以减少回归测试所需的时间和测试资源。
进一步地,在一些实施例中,上述方法还可以包括:根据各数据访问层函数的影响接口,生成影响接口列表并输出;所述影响接口列表中记录所述数据访问层函数、所述数据访问层函数所在的数据访问层类的类名称以及所述影响接口的接口名称。也就是说,在确定当前的数据访问层函数的影响接口后,可以{数据访问层函数、数据访问层函数所在的类名、对外接口名称}对象方式添加到影响接口列表中,在遍历完数据访问层函数列表后,输出该影响接口列表,这样,使得研发人员能够根据该影响接口列表,准确评估数据访问层修改对业务造成的影响,从而有效提升研发效率。
本申请实施例,从项目源码中提取出记录数据访问层类名称的数据访问层文件,以及记录对外接口层类名称的程序接口文件,再根据数据访问层文件,获取数据访问层函数并保存到数据访问层函数列表中,同时根据程序接口文件,获取对外接口函数中调用的相关函数并保存到对外接口信息列表中,通过比对这两个列表,确定各数据访问层函数的影响接口。这样,通过追溯函数的调用关系,精确定位到数据访问层的修改对对外接口的影响范围,使得研发人员可以重点回归测试相关接口,从而缩小回归测试范围,降低时间成本,提升研发速度。
为了对本申请的方案做更为详细的说明,接下来介绍一具体实施例:
本实施例涉及银行的去Oracle化场景。在去Oracle的大背景下,数据库的替换在软件开发的过程中不可避免,数据库的替换,对于历史数据可以通过数据迁移的方式进行,但不同的底层数据库对于程序在数据访问层会有不同的操作逻辑,需要修改相应的代码进行适配。而在修改程序数据访问层代码的过程中,由于金融数据的敏感性以及缺乏对程序业务功能范围的评估,常常是修改一处数据访问层代码,就需要对整个程序业务功能进行回归测试。这就导致回归测试工作量巨大,容易浪费大量的时间和测试资源,而且影响研发进度。基于此,本实施例提供一种追溯数据访问层函数与对外接口关系的方案,以解决上述问题。
本实施例方案的工作流程如图2所示,该工作流程包括:
S201、获取项目源码;
具体地,通过git clone命令从项目代码管理平台获取项目源码;
S202、从项目源码中筛选出Java文件列表;
具体地,遍历查找项目源码中文件后缀为.java的文件,添加到Java文件列表;
S203、从Java文件列表中提取出数据访问层文件;
具体地,遍历Java文件列表,将文件名称通过lower()函数统一转换成为小写形式后,查询文件名称以dto结尾的文件,将该文件确定为数据访问层文件;
S204、针对数据访问层文件,构建抽象语法树;
S205、通过该抽象语法树,生成数据访问层函数列表;
具体地,将数据访问层文件根据Java语法解析成抽象语法树后,通过正则表达式//MethodDeclarator[]获取到当前类下的所有函数,并逐个通过@image属性提取方法名称,以{函数名称,类名称}对象方式保存到数据访问层函数列表;
S206、从Java文件列表中提取出程序接口文件;
具体地,遍历Java文件列表,将文件名称通过lower()函数统一转换成为小写形式后,查询文件名称以controller结尾的文件,将该文件确定为程序接口文件;
S207、针对程序接口文件,构建抽象语法树;
S208、通过该抽象语法树,生成对外接口信息列表;
具体地,将程序接口文件根据Java语法解析成抽象语法树后,通过正则表达式//[Anotation[name=”requestMapping”] / Membervalue/literal[]]获取到当前类下包含requestMapping注解的函数,并通过literal获取对外接口名称;再通过正则表达式//[Anotation[name=”requesMapping”]/ Membervalue/ MethodDeclarator [/>]] 获取到对外接口的对应函数名称,然后以{接口名称,接口函数,接口类名称}对象方式添加到对外接口信息列表;遍历对外接口函数,通过正则表达式//[Anotation[name=”requesMapping”]/Expression/ MethodDeclarator [name =“对外接口名称”]//Expresion//primaryprefix[/>]]获取该对外接口函数中调用的相关函数,并将该信息以{接口名称,接口函数,接口类名称,接口调用的相关函数}对象更新到对外接口信息列表;
其中,S203至S205,和S206至S208这两个子流程之间没有固定的先后顺序;
S209、比对数据访问层函数列表和对外接口信息列表,确定数据访问层函数和对外接口的关系;
具体地,遍历数据访问层函数列表,在对外接口信息列表中查询对外接口调用的函数中是否包含当前的数据访问层函数,如果不包含,则跳过继续下一个循环,如果包含,则说明该数据访问层函数影响该对外接口,以{数据访问层函数,数据访问层函数所在的类名,对外接口名称}对象添加到数据访问层函数影响接口列表。
本实施例方案,通过追溯函数的调用关系,精确定位到数据访问层的修改对对外结果的影响范围,从而缩小测试范围,并且准确评估数据访问层修改对业务造成的影响,实现研发人员能够准确评估项目风险,从而保证金融数据的准确性和金融业务的稳定性,在Oracle转MySQL过程中,提升研发效率。
与前述方法的实施例相对应,本申请还提供代码变更的影响分析装置及其应用的终端的实施例:
如图3所示,图3是本申请实施例提供的一种代码变更的影响分析装置的框图,包括:
文件提取模块31,用于获取项目源码,从所述项目源码中提取出数据访问层文件和程序接口文件;其中,所述数据访问层文件是记录数据访问层类名称的文件;所述程序接口文件是记录对外接口层类名称的文件;
列表获取模块32,用于根据所述数据访问层文件,获取数据访问层函数并保存到数据访问层函数列表中,根据所述程序接口文件,获取对外接口函数中调用的相关函数并保存到对外接口信息列表中;所述数据访问层函数是所述数据访问层类下的函数;所述对外接口函数是所述对外接口层类下的函数;
关系确定模块33,用于比对所述数据访问层函数列表和所述对外接口信息列表,根据比对结果确定各数据访问层函数的影响接口。
在一些实施例中,上述文件提取模块31包括:
生成子模块,用于查找所述项目源码中的Java文件,基于查找到的Java文件生成Java文件列表;
查询子模块,用于将所述Java文件列表中的文件名称统一转换成小写形式后,查询文件名称以dto结尾的文件作为数据访问层文件,查询文件名称以controller结尾的文件作为程序接口文件。
在一些实施例中,上述列表获取模块32包括:
第一获取子模块,用于将所述数据访问层文件解析成抽象语法树,通过所述数据访问层文件的抽象语法树获取数据访问层函数,再将所述数据访问层函数保存到数据访问层函数列表中;
第二获取子模块,用于将所述程序接口文件解析成抽象语法树,通过所述程序接口文件的抽象语法树获取对外接口函数,确定所述对外接口函数中调用的相关函数,再将所述相关函数保存到对外接口信息列表中。
在一些实施例中,上述第一获取子模块具体用于:
将所述数据访问层函数的函数名称和所在的数据访问层类的类名称作为对象,保存到数据访问层函数列表中。
在一些实施例中,上述第二获取子模块具体用于:
通过所述程序接口文件的抽象语法树获取对应的对外接口层类的接口名称、接口函数以及接口类名称;
将所述相关函数和接口名称、接口函数以及接口类名称作为对象,保存到对外接口信息列表中。
在一些实施例中,上述关系确定模块33具体用于:
遍历所述数据访问层函数列表,判断所述对外接口信息列表中是否包含与当前的数据访问层函数相匹配的相关函数;
若判断结果为是,将相匹配的相关函数对应的对外接口确定为当前的数据访问层函数的影响接口。
在一些实施例中,上述装置还包括:
输出模块,用于根据各数据访问层函数的影响接口,生成影响接口列表并输出;所述影响接口列表中记录所述数据访问层函数、所述数据访问层函数所在的数据访问层类的类名称以及所述影响接口的接口名称。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
本申请还提供一种电子设备,请参见图4,图4为本申请实施例提供的一种电子设备的结构框图。电子设备可以包括处理器410、通信接口420、存储器430和至少一个通信总线440。其中,通信总线440用于实现这些组件直接的连接通信。其中,本申请实施例中电子设备的通信接口420用于与其他节点设备进行信令或数据的通信。处理器410可以是一种集成电路芯片,具有信号的处理能力。
上述的处理器410可以是通用处理器,包括中央处理器(CPU,CentralProcessingUnit)、网络处理器(NP,NetworkProcessor)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器410也可以是任何常规的处理器等。
存储器430可以是,但不限于,随机存取存储器(RAM,RandomAccessMemory),只读存储器(ROM,Read Only Memory),可编程只读存储器(PROM ,Programmable Read-OnlyMemory),可擦除只读存储器(EPROM ,Erasable Programmable Read-Only Memory),电可擦除只读存储器(EEPROM ,Electric Erasable Programmable Read-Only Memory)等。存储器430中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器410执行时,电子设备可以执行上述图1或图2方法实施例涉及的各个步骤。
可选地,电子设备还可以包括存储控制器、输入输出单元。
所述存储器430、存储控制器、处理器410、外设接口、输入输出单元各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通信总线440实现电性连接。所述处理器410用于执行存储器430中存储的可执行模块,例如电子设备包括的软件功能模块或计算机程序。
输入输出单元用于提供给用户创建任务以及为该任务创建启动可选时段或预设执行时间以实现用户与服务器的交互。所述输入输出单元可以是,但不限于,鼠标和键盘等。
可以理解,图4所示的结构仅为示意,所述电子设备还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。
本申请实施例还提供一种存储介质,所述存储介质上存储有指令,当所述指令在计算机上运行时,所述计算机程序被处理器执行时实现方法实施例所述的方法,为避免重复,此处不再赘述。
本申请还提供一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行方法实施例所述的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (8)
1.一种代码变更的影响分析方法,其特征在于,包括:
获取项目源码,从所述项目源码中提取出数据访问层文件和程序接口文件;其中,所述数据访问层文件是记录数据访问层类名称的文件;所述程序接口文件是记录对外接口层类名称的文件;
根据所述数据访问层文件,获取数据访问层函数并保存到数据访问层函数列表中,根据所述程序接口文件,获取对外接口函数中调用的相关函数并保存到对外接口信息列表中;所述数据访问层函数是所述数据访问层类下的函数;所述对外接口函数是所述对外接口层类下的函数;
比对所述数据访问层函数列表和所述对外接口信息列表,根据比对结果确定各数据访问层函数的影响接口;
其中,所述从所述项目源码中提取出数据访问层文件和程序接口文件,包括:
查找所述项目源码中的Java文件,基于查找到的Java文件生成Java文件列表;
将所述Java文件列表中的文件名称统一转换成小写形式后,查询文件名称以dto结尾的文件作为数据访问层文件,查询文件名称以controller结尾的文件作为程序接口文件;
所述根据所述数据访问层文件,获取数据访问层函数并保存到数据访问层函数列表中,根据所述程序接口文件,获取对外接口函数中调用的相关函数并保存到对外接口信息列表中,包括:
将所述数据访问层文件解析成抽象语法树,通过所述数据访问层文件的抽象语法树获取数据访问层函数,再将所述数据访问层函数保存到数据访问层函数列表中;
将所述程序接口文件解析成抽象语法树,通过所述程序接口文件的抽象语法树获取对外接口函数,确定所述对外接口函数中调用的相关函数,再将所述相关函数保存到对外接口信息列表中。
2.根据权利要求1所述的方法,其特征在于,所述将所述数据访问层函数保存到数据访问层函数列表中,包括:
将所述数据访问层函数的函数名称和所在的数据访问层类的类名称作为对象,保存到数据访问层函数列表中。
3.根据权利要求2所述的方法,其特征在于,所述将所述相关函数保存到对外接口信息列表中,包括:
通过所述程序接口文件的抽象语法树获取对应的对外接口层类的接口名称、接口函数以及接口类名称;
将所述相关函数和接口名称、接口函数以及接口类名称作为对象,保存到对外接口信息列表中。
4.根据权利要求1所述的方法,其特征在于,所述比对所述数据访问层函数列表和所述对外接口信息列表,根据比对结果确定各数据访问层函数的影响接口,包括:
遍历所述数据访问层函数列表,判断所述对外接口信息列表中是否包含与当前的数据访问层函数相匹配的相关函数;
若判断结果为是,将相匹配的相关函数对应的对外接口确定为当前的数据访问层函数的影响接口。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据各数据访问层函数的影响接口,生成影响接口列表并输出;所述影响接口列表中记录所述数据访问层函数、所述数据访问层函数所在的数据访问层类的类名称以及所述影响接口的接口名称。
6.一种代码变更的影响分析装置,其特征在于,包括:
文件提取模块,用于获取项目源码,从所述项目源码中提取出数据访问层文件和程序接口文件;其中,所述数据访问层文件是记录数据访问层类名称的文件;所述程序接口文件是记录对外接口层类名称的文件;
列表获取模块,用于根据所述数据访问层文件,获取数据访问层函数并保存到数据访问层函数列表中,根据所述程序接口文件,获取对外接口函数中调用的相关函数并保存到对外接口信息列表中;所述数据访问层函数是所述数据访问层类下的函数;所述对外接口函数是所述对外接口层类下的函数;
关系确定模块,用于比对所述数据访问层函数列表和所述对外接口信息列表,根据比对结果确定各数据访问层函数的影响接口;
所述文件提取模块包括:
生成子模块,用于查找所述项目源码中的Java文件,基于查找到的Java文件生成Java文件列表;
查询子模块,用于将所述Java文件列表中的文件名称统一转换成小写形式后,查询文件名称以dto结尾的文件作为数据访问层文件,查询文件名称以controller结尾的文件作为程序接口文件;
所述列表获取模块包括:
第一获取子模块,用于将所述数据访问层文件解析成抽象语法树,通过所述数据访问层文件的抽象语法树获取数据访问层函数,再将所述数据访问层函数保存到数据访问层函数列表中;
第二获取子模块,用于将所述程序接口文件解析成抽象语法树,通过所述程序接口文件的抽象语法树获取对外接口函数,确定所述对外接口函数中调用的相关函数,再将所述相关函数保存到对外接口信息列表中。
7.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的方法。
8.一种电子设备,其特征在于,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310737273.3A CN116483735B (zh) | 2023-06-21 | 2023-06-21 | 一种代码变更的影响分析方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310737273.3A CN116483735B (zh) | 2023-06-21 | 2023-06-21 | 一种代码变更的影响分析方法、装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116483735A CN116483735A (zh) | 2023-07-25 |
CN116483735B true CN116483735B (zh) | 2024-03-19 |
Family
ID=87221769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310737273.3A Active CN116483735B (zh) | 2023-06-21 | 2023-06-21 | 一种代码变更的影响分析方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116483735B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659293A (zh) * | 2019-09-24 | 2020-01-07 | 支付宝(杭州)信息技术有限公司 | 基于变更代码的数据表确定方法以及装置 |
CN112416781A (zh) * | 2020-11-25 | 2021-02-26 | 广州品唯软件有限公司 | 跨系统接口确定方法、装置、计算机设备和存储介质 |
CN112579682A (zh) * | 2020-12-24 | 2021-03-30 | 中国农业银行股份有限公司 | 数据模型变更的通知方法、装置、电子设备及存储介质 |
CN113778515A (zh) * | 2021-11-09 | 2021-12-10 | 北京世纪好未来教育科技有限公司 | 确定程序包变更信息的方法和装置 |
CN114201399A (zh) * | 2021-12-14 | 2022-03-18 | 平安科技(深圳)有限公司 | 程序变更的影响范围识别方法、装置、设备及存储介质 |
CN114490394A (zh) * | 2022-01-27 | 2022-05-13 | 中国农业银行股份有限公司 | 测试范围确定方法、装置、设备和介质 |
CN114579452A (zh) * | 2022-03-07 | 2022-06-03 | 北京有竹居网络技术有限公司 | 接口影响检测方法及相关设备 |
CN115292203A (zh) * | 2022-09-30 | 2022-11-04 | 平安银行股份有限公司 | 一种源代码分析方法及装置 |
CN115291931A (zh) * | 2022-07-21 | 2022-11-04 | 中国平安人寿保险股份有限公司 | 版本变更的处理方法和装置、电子设备及存储介质 |
CN115934161A (zh) * | 2022-12-28 | 2023-04-07 | 支付宝(杭州)信息技术有限公司 | 一种代码变更的影响分析方法、装置以及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8782001B2 (en) * | 2010-02-19 | 2014-07-15 | International Business Machines Corporation | Computation of impacted and affected code due to database schema changes |
-
2023
- 2023-06-21 CN CN202310737273.3A patent/CN116483735B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659293A (zh) * | 2019-09-24 | 2020-01-07 | 支付宝(杭州)信息技术有限公司 | 基于变更代码的数据表确定方法以及装置 |
CN112416781A (zh) * | 2020-11-25 | 2021-02-26 | 广州品唯软件有限公司 | 跨系统接口确定方法、装置、计算机设备和存储介质 |
CN112579682A (zh) * | 2020-12-24 | 2021-03-30 | 中国农业银行股份有限公司 | 数据模型变更的通知方法、装置、电子设备及存储介质 |
CN113778515A (zh) * | 2021-11-09 | 2021-12-10 | 北京世纪好未来教育科技有限公司 | 确定程序包变更信息的方法和装置 |
CN114201399A (zh) * | 2021-12-14 | 2022-03-18 | 平安科技(深圳)有限公司 | 程序变更的影响范围识别方法、装置、设备及存储介质 |
CN114490394A (zh) * | 2022-01-27 | 2022-05-13 | 中国农业银行股份有限公司 | 测试范围确定方法、装置、设备和介质 |
CN114579452A (zh) * | 2022-03-07 | 2022-06-03 | 北京有竹居网络技术有限公司 | 接口影响检测方法及相关设备 |
CN115291931A (zh) * | 2022-07-21 | 2022-11-04 | 中国平安人寿保险股份有限公司 | 版本变更的处理方法和装置、电子设备及存储介质 |
CN115292203A (zh) * | 2022-09-30 | 2022-11-04 | 平安银行股份有限公司 | 一种源代码分析方法及装置 |
CN115934161A (zh) * | 2022-12-28 | 2023-04-07 | 支付宝(杭州)信息技术有限公司 | 一种代码变更的影响分析方法、装置以及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116483735A (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190258648A1 (en) | Generating asset level classifications using machine learning | |
CN112491602B (zh) | 行为数据的监控方法、装置、计算机设备及介质 | |
CN113760891B (zh) | 一种数据表的生成方法、装置、设备和存储介质 | |
CN110674360B (zh) | 一种用于数据的溯源方法和系统 | |
CN111078776A (zh) | 数据表的标准化方法、装置、设备及存储介质 | |
CN115827895A (zh) | 一种漏洞知识图谱处理方法、装置、设备及介质 | |
CN113326247A (zh) | 云端数据的迁移方法、装置及电子设备 | |
CN112363814A (zh) | 任务调度方法、装置、计算机设备及存储介质 | |
CN111475196B (zh) | 编译告警溯源方法、装置、电子设备及计算机可读介质 | |
CN114493255A (zh) | 基于知识图谱的企业异常监控方法及其相关设备 | |
CN115203435A (zh) | 基于知识图谱的实体关系生成方法及数据查询方法 | |
CN116881156A (zh) | 一种自动化测试方法、装置、设备及存储介质 | |
CN113434542B (zh) | 数据关系识别方法、装置、电子设备及存储介质 | |
CN113553309A (zh) | 一种日志模板的确定方法、装置、电子设备及存储介质 | |
CN116382703B (zh) | 软件包生成方法、代码开发方法及装置、电子设备和介质 | |
CN112948478A (zh) | 基于链路的代码分析方法、装置、电子设备及存储介质 | |
CN112650673A (zh) | 事务跟踪系统中测试用例的创建方法、装置及电子设备 | |
CN116483735B (zh) | 一种代码变更的影响分析方法、装置、存储介质及设备 | |
CN116185856A (zh) | 一种软件系统健康检测方法、装置、存储介质及设备 | |
JP6870454B2 (ja) | 分析装置、分析プログラム及び分析方法 | |
CN114385155A (zh) | vue项目可视化工具生成方法、装置、设备及存储介质 | |
CN118502814B (zh) | 一种基于字节码的软件改动评估方法、装置、设备及介质 | |
CN113760765B (zh) | 代码测试方法、装置、电子设备和存储介质 | |
CN116301869B (zh) | 前端页面配置管控系统、方法、设备、介质 | |
CN115600037A (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 |