一种数据校验方法、装置、存储介质及设备与流程

未命名 07-27 阅读:85 评论:0


1.本技术涉及金融科技及项目测试技术领域,具体而言,涉及一种数据校验方法、装置、存储介质及设备。


背景技术:

2.在软件项目开发中,函数的数据校验是保证软件质量的关键一环。问题数据一旦进入系统,将会对系统造成不可估量的损失,如查询时触发空指针异常,导致整个页面不可用,或者业务逻辑错误,造成流量甚至企业资产上的损失。因此,数据校验是非常重要的。
3.相关技术中一般是由开发人员编写大量的代码来对数据进行验证,以提升系统的健壮性。然而,开发人员需要针对每一个方法中的每一组参数编写数据校验逻辑,这一过程需要耗费大量的时间和精力。


技术实现要素:

4.本技术实施例的目的在于提供一种数据校验方法、装置、存储介质及设备,旨在解决相关技术中存在的函数的数据校验过程需要耗费开发人员大量的时间和精力的问题。
5.第一方面,本技术实施例提供的一种数据校验方法,包括:
6.获取目标源码;其中,所述目标源码包含切面,所述切面的切点设置为使用注解标记的函数;
7.从所述目标源码中获取使用注解标记的函数的参数名称列表信息和参数值列表信息;
8.遍历所述参数名称列表信息中的参数名称,从所述参数值列表信息中获取与所述参数名称对应的参数值,并使用与所述参数名称对应的正则表达式对所述参数值进行判断,基于所述判断结果确定所述函数是否通过数据校验。
9.在上述实现过程中,获取包含切面、且切面的切点设置为使用注解标记的函数的目标源码,再获取被注入的函数的参数名称列表信息和参数值列表信息,以此遍历函数的参数名称,并执行对应的校验逻辑,进而根据各参数值的数据校验结果来确定该函数是否通过数据校验。这样,通过面向切面编程技术以及添加注解的方式,集成函数参数校验功能,对同类型的函数参数实现全面的、完整的校验,并且最大程度地减少源代码修改,从而有效减少开发人员在实现函数参数数据校验时需要耗费的时间和精力。
10.进一步地,在一些实施例中,所述从所述参数值列表信息中获取与所述参数名称对应的参数值之前,包括:
11.将所述函数的参数名称统一转换成目标格式。
12.在上述实现过程中,为了方便比较,先将函数的参数名称统一转成目标格式,如统一转成小写字符,再执行校验逻辑,从而提升处理效率。
13.进一步地,在一些实施例中,所述使用与所述参数名称对应的正则表达式对所述参数值进行判断,基于所述判断结果确定所述函数是否通过数据校验,包括:
14.若所述参数值满足与所述参数名称对应的正则表达式,确定所述参数值通过数据校验,并继续下一个参数的校验;
15.当所述函数的所有参数值均通过数据校验时,确定所述函数通过数据校验。
16.在上述实现过程中,提供确定函数是否通过数据校验的具体方式。
17.进一步地,在一些实施例中,所述方法还包括:
18.当确定所述函数通过数据校验时,执行函数内部逻辑处理。
19.在上述实现过程中,当函数中的所有参数值都通过数据校验,则该函数通过数据校验,可以继续函数内部逻辑处理,否则认为该函数没有通过数据校验,不能执行函数内部逻辑,如此,有效避免系统异常。
20.进一步地,在一些实施例中,所述方法还包括:
21.当所述函数的任一参数值未通过数据校验时,确定所述函数的数据校验失败,并输出告警信息。
22.在上述实现过程中,当未能全部通过数据校验时,确定该函数的数据校验失败,此时脚本可以输出告警信息,以及时提醒开发人员对问题进行排查。
23.进一步地,在一些实施例中,所述方法还包括:
24.遍历所述参数名称列表信息中的参数名称后,基于所有未通过数据校验的参数值生成错误列表,将所述错误列表进行输出。
25.在上述实现过程中,基于所有未通过数据校验的参数值生成错误列表,将该错误列表进行输出,从而方便开发人员排查问题并修正,提高开发效率。
26.第二方面,本技术实施例提供的一种数据校验装置,包括:
27.第一获取模块,用于获取目标源码;其中,所述目标源码包含切面,所述切面的切点设置为使用注解标记的函数;
28.第二获取模块,用于从所述目标源码中获取使用注解标记的函数的参数名称列表信息和参数值列表信息;
29.遍历校验模块,用于遍历所述参数名称列表信息中的参数名称,从所述参数值列表信息中获取与所述参数名称对应的参数值,并使用与所述参数名称对应的正则表达式对所述参数值进行判断,基于所述判断结果确定所述函数是否通过数据校验。
30.第三方面,本技术实施例提供的一种电子设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法的步骤。
31.第四方面,本技术实施例提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如第一方面任一项所述的方法。
32.第五方面,本技术实施例提供的一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面任一项所述的方法。
33.本技术公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本技术公开的上述技术即可得知。
34.为使本技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
35.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
36.图1为本技术实施例提供的一种数据校验方法的流程图;
37.图2为本技术实施例提供的一种基于aop的函数参数数据校验的方案的工作流程的示意图;
38.图3为本技术实施例提供的一种数据校验装置的框图;
39.图4为本技术实施例提供的一种电子设备的结构框图。
具体实施方式
40.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
41.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
42.如背景技术记载,相关技术中存在着函数的数据校验过程需要耗费开发人员大量的时间和精力的问题。基于此,本技术实施例提供一种数据校验方案,以解决上述问题。
43.接下来对本技术实施例进行介绍:
44.如图1所示,图1是本技术实施例提供的一种数据校验方法的流程图,所述方法可以应用于终端或服务器,该终端可以是各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台式计算机等;该服务器可以是单个服务器,也可以是多个服务器组成的分布式服务器集群。该终端或服务器提供数据校验的环境,这一环境包括软件部分和硬件部分,其中,软件部分主要包括操作系统,如windows、linux等,硬件部分主要包括计算资源、存储资源等,如cpu(central processing unit,中央处理器)、内存、硬盘等。需要说明的是,该终端/服务器也可以实现成多个软件或软件模块,或者还可以实现成单个软件或软件模块,本技术对此不作限制。另外,所述方法可以实现为一个脚本程序。
45.所述方法包括:
46.在步骤101、获取目标源码;其中,所述目标源码包含切面,所述切面的切点设置为使用注解标记的函数;
47.本步骤中提到的目标源码是当前项目的源代码,其可以是在项目代码管理仓库gitlab中获取的。本实施例中,该目标源码包含切面,该切面的切点设置为使用注解标记的函数,也就是说,本实施例是通过aop(aspect oriented programming,面向切面编程)的方式编写函数参数数据校验逻辑,通过开发自定义注解的方式,将函数参数校验aop集成到自定义注解中。
48.注解(annotation),也叫元数据,是一种代码级别的说明,它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明。也就是说,注解可以认为是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解,开发人员可以在不改变原有代码和逻辑的情况下,在源代码中嵌入补充信息。在
本实施例中,开发人员可以对需要实施函数参数数据校验的函数添加注解,以集成函数参数校验功能。具体地,在实现时,可以在获取的当前项目的源代码中,添加@interface类型文件,@interface用来定义一个自定义注解,通过@retention(retentionpolicy.runtime)配置为在程序的整个生命周期有效。
49.aop是通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术,利用aop可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低。在本实施例中,开发人员通过aop的方式编写函数参数数据校验逻辑。具体地,在实现时,可以新建java class文件(可以运行在任何支持java虚拟机的硬件平台和操作系统上的二进制文件),再使用@aspect注解标注该文件为java aop切面文件,编写函数参数校验方式,切面函数切入点为自定义注解类@pointcut(“@annotation(自定义注解类路径)”),之后,在@before(“pointcut()”)注解下重写before函数,以达到在进入函数逻辑前,先实施函数的参数校验。
50.在步骤102、从所述目标源码中获取使用注解标记的函数的参数名称列表信息和参数值列表信息;
51.本步骤是指:获取当前被注入的函数,即需要实施函数参数数据校验的函数的参数名称列表信息和参数值列表信息。每个函数参数都有一个参数名称,参数名称在函数的实现中使用;参数值是函数参数的值,默然情况下,函数参数通过值传递。而该参数名称列表信息中记录的就是当前被注入的函数的所有参数的参数名称,相应地,该参数值列表信息中记录的就是当前被注入的函数的所有参数的参数值。
52.由于使用注解标记的函数是切面的切点,因此,在实现时,可以通过aop提供的proceedingjoinpoint机制来获取该参数名称列表信息以及该参数值列表信息,例如,可以通过该proceedingjoinpoint机制中的getsignature()函数和getparameternames()函数来获取参数名称列表信息,及通过getargs()函数获取该参数值列表信息。当然,在其他实施例中,该参数名称列表信息和参数值列表信息也可以基于其他方式获取得到,本技术对此不作限制。
53.在步骤103、遍历所述参数名称列表信息中的参数名称,从所述参数值列表信息中获取与所述参数名称对应的参数值,并使用与所述参数名称对应的正则表达式对所述参数值进行判断,基于所述判断结果确定所述函数是否通过数据校验。
54.遍历参数名称列表信息中的参数名称,即遍历使用注解标记的函数的所有参数名称,执行相对应的校验逻辑,从参数值列表信息中获取与参数名称对应的参数值,使用相应的正则表达式进行判断,遍历完所有参数名称后,基于各判断结果来确定函数是否通过数据校验。通过统一的函数参数数据校验集成,对同类型的函数参数实现全面的、完整的校验。例如,例如,函数的参数名称是email,则执行email校验逻辑,从获取的参数值列表中获取对应的值,使用正则表达式进行判断,该正则表达式考虑email各边界值,为"[a-za-z0-9]\\w+@[a-za-z0-9]+\\.(cn|com|com.cn|net|gov)+",以此实现对email这一函数参数的全面、完整校验;又例如,函数的参数名称是phone,则执行phone校验逻辑,从获取的参数值列表中获取对应的值,使用正则表达式进行判断,考虑phone的各种情况,设置该正则表达式为"^[1]([3-9])[0-9]{9}$",以此实现对phone这一函数参数的全面、完整校验。当然,各参数名称对应的正则表达式也可以根据不同场景的需求来进行不同的设置,本技术对此不
作限制。
[0055]
在一些实施例中,在从所述参数值列表信息中获取与所述参数名称对应的参数值之前可以包括:将所述函数的参数名称统一转换成目标格式。函数参数的参数名称可能是由大写字符组成,可能是由小写字符组成,还有可能是大小写字符混合组成,因此,为了方便比较,可以先将函数的参数名称统一转成目标格式,如统一转成小写字符,再执行校验逻辑,从而提升处理效率。
[0056]
还有,在一些实施例中,本步骤中提到的使用与所述参数名称对应的正则表达式对所述参数值进行判断,基于所述判断结果确定所述函数是否通过数据校验可以包括:若所述参数值满足与所述参数名称对应的正则表达式,确定所述参数值通过数据校验,并继续下一个参数的校验;当所述函数的所有参数值均通过数据校验时,确定所述函数通过数据校验。也就是说,判断当前参数值是否满足对应的正则表达式,若满足,则确定该当前参数值通过数据校验,则继续下一个参数的校验,待所有的参数值均通过数据校验,则确定函数通过数据校验。
[0057]
进一步地,在一些实施例中,上述方法还包括:当确定所述函数通过数据校验时,执行函数内部逻辑处理。也就是说,当函数中的所有参数值都通过数据校验,则该函数通过数据校验,可以继续函数内部逻辑处理,否则认为该函数没有通过数据校验,不能执行函数内部逻辑,如此,有效避免系统异常。
[0058]
更进一步地,在一些实施例中,上述方法还包括:当所述函数的任一参数值未通过数据校验时,确定所述函数的数据校验失败,并输出告警信息。也就是说,只有所有参数值都通过数据校验,才能确定函数通过数据校验,当未能全部通过数据校验时,确定该函数的数据校验失败,此时脚本可以输出告警信息,以及时提醒开发人员对问题进行排查。并且,在当前参数值不满足对应的正则表达式的情况下,可以继续下一个参数的校验,在遍历参数名称列表信息中的参数名称后,可以基于所有未通过数据校验的参数值生成错误列表,将该错误列表进行输出,从而方便开发人员排查问题并修正,提高开发效率。
[0059]
通过本技术实施例的这一方案,开发人员无需再对每一个方法中的每一组参数编写数据校验逻辑。例如,开发人员针对下一个项目的函数参数数据校验,只需要在需要进行校验的方法上添加@自定义注解,即可实现对指定的函数中的参数实施数据校验;而且,若该下一个项目中有新的函数参数类型,开发人员只需要针对新的函数参数类型,添加对应的校验逻辑即可。如此,有效减少开发人员的开发时间。
[0060]
本技术实施例方案,获取包含切面、且切面的切点设置为使用注解标记的函数的目标源码,再获取被注入的函数的参数名称列表信息和参数值列表信息,以此遍历函数的参数名称,并执行对应的校验逻辑,进而根据各参数值的数据校验结果来确定该函数是否通过数据校验。这样,通过面向切面编程技术以及添加注解的方式,集成函数参数校验功能,对同类型的函数参数实现全面的、完整的校验,并且最大程度地减少源代码修改,从而有效减少开发人员在实现函数参数数据校验时需要耗费的时间和精力。
[0061]
为了对本技术的方案做更为详细的说明,接下来介绍一具体实施例:
[0062]
本实施例涉及在软件项目开发过程中函数的数据校验场景。对于经验较少的开发人员,其注意力只放在正常流程,容易忽略边界条件;而对于经验较丰富的开发人员,其编写大量的代码,对数据进行验证,以提升系统的健壮性,但也耗费了大量的精力。也就是说,
其至少存在两种问题:第一、校验不完整,对各种类型的函数参数的所有边界值考虑不全面,导致数据校验不完整;第二、需要针对每一个方法中的每一组参数编写数据校验逻辑,导致需要耗费大量的时间和精力。基于此,本实施例提供一种基于aop的函数参数数据校验的方案,以解决这一问题。
[0063]
本实施例的方案的工作流程如图2所示,包括:
[0064]
s201、获取包含aop切面文件的源码;
[0065]
其中,在项目代码管理仓库gitlab中通过git clone命令获取当前项目的源码;之后,添加@interface类型文件,文件名为自定义注解,通过@retention(retentionpolicy.runtime)配置为在程序的整个生命周期有效;新建java class文件,使用@aspect注解标注该文件为java aop切面文件,编写函数参数校验方式,切面函数切入点为自定义注解类@pointcut(“@annotation(自定义注解类路径)”);
[0066]
在@before(“pointcut()”)注解下重写before函数,以达到在进入函数逻辑前,先实施函数的参数校验;
[0067]
s202、获取当前被注入的函数的参数名称列表信息;
[0068]
其中,通过proceedingjoinpoint.getsignature().getparameternames()获取由需要实施函数参数校验的函数的参数名称组成的列表信息;
[0069]
s203、获取当前被注入的函数的参数值列表信息;
[0070]
其中,通过proceedingjoinpoint.getargs()获取由需要实施函数参数校验的函数的参数值组成的列表信息;
[0071]
需要说明的是,s202和s203没有固定的先后顺序;
[0072]
s204、遍历函数的参数名称,针对当前的参数名称,从获取到的参数值列表信息中获取对应的值,使用对应的正则表达式进行判断,如果满足该正则表达式,说明该函数的该参数值数据校验通过,则继续下一个参数的校验;
[0073]
其中,在遍历时,为了方便比较,将函数的参数名称统一转成小写字符;如果函数的参数名称是email,则执行email校验逻辑,获取对应的值,使用正则表达式"[a-za-z0-9]\\w+@[a-za-z0-9]+\\.(cn|com|com.cn|net|gov)+"进行判断,如果满足该正则表达式,说明email数据校验通过,则继续下一个参数的校验;如果下一个参数的参数名称是phone,则执行phone校验逻辑,获取对应的值,使用正则表达式"^[1]([3-9])[0-9]{9}$"进行判断,如果满足该正则表达式,说明phone数据校验通过,则继续下一个参数的校验;依此方式,实现对idcard、order等数据类型的校验;
[0074]
s205、判断函数的参数值是否全部通过数据校验,是则执行s206,否则执行s207;
[0075]
s206、继续函数内部逻辑处理;
[0076]
s207、不执行函数内部逻辑,直接跳出函数。
[0077]
本实施例方案,通过aop的方式编写函数参数数据校验逻辑,通过开发自定义注解的方式,将函数参数校验aop集成到自定义注解中,通过在需要进行函数参数校验的地方,添加自定义注解的方式集成函数参数校验功能。这一方式至少具有以下优点:通过统一的函数参数数据校验集成,对同类型的函数参数实现全面的、完整的校验;通过函数添加自动定义注解的方式,最大程度减少源代码修改实现函数参数数据校验。
[0078]
与前述方法的实施例相对应,本技术还提供数据校验装置及其应用的终端的实施
例:
[0079]
如图3所示,图3是本技术实施例提供的一种数据校验装置的框图,所述装置包括:
[0080]
第一获取模块31,用于获取目标源码;其中,所述目标源码包含切面,所述切面的切点设置为使用注解标记的函数;
[0081]
第二获取模块32,用于从所述目标源码中获取使用注解标记的函数的参数名称列表信息和参数值列表信息;
[0082]
遍历校验模块33,用于遍历所述参数名称列表信息中的参数名称,从所述参数值列表信息中获取与所述参数名称对应的参数值,并使用与所述参数名称对应的正则表达式对所述参数值进行判断,基于所述判断结果确定所述函数是否通过数据校验。
[0083]
在一些实施例中,上述装置还包括:转换模块,用于在从所述参数值列表信息中获取与所述参数名称对应的参数值之前,将所述函数的参数名称统一转换成目标格式。
[0084]
在一些实施例中,上述遍历校验模块33具体用于:若所述参数值满足与所述参数名称对应的正则表达式,确定所述参数值通过数据校验,并继续下一个参数的校验;当所述函数的所有参数值均通过数据校验时,确定所述函数通过数据校验。
[0085]
在一些实施例中,上述装置还包括:执行模块,用于当确定所述函数通过数据校验时,执行函数内部逻辑处理。
[0086]
在一些实施例中,上述装置还包括:输出模块,用于当所述函数的任一参数值未通过数据校验时,确定所述函数的数据校验失败,并输出告警信息。
[0087]
在一些实施例中,上述装置还包括:生成模块,用于当所述函数的任一参数值未通过数据校验时,确定所述函数的数据校验失败,并输出告警信息。
[0088]
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0089]
本技术还提供一种电子设备,请参见图4,图4为本技术实施例提供的一种电子设备的结构框图。电子设备可以包括处理器410、通信接口420、存储器430和至少一个通信总线440。其中,通信总线440用于实现这些组件直接的连接通信。其中,本技术实施例中电子设备的通信接口420用于与其他节点设备进行信令或数据的通信。处理器410可以是一种集成电路芯片,具有信号的处理能力。
[0090]
上述的处理器410可以是通用处理器,包括中央处理器(cpu,central processing unit)、网络处理器(np,network processor)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器410也可以是任何常规的处理器等。
[0091]
存储器430可以是,但不限于,随机存取存储器(ram,random access memory),只读存储器(rom,read only memory),可编程只读存储器(prom,programmable read-only memory),可擦除只读存储器(eprom,erasable programmable read-only memory),电可擦除只读存储器(eeprom,electric erasable programmable read-only memory)等。存储器430中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器410执行时,电子设备可以执行上述图1方法实施例涉及的各个步骤。
[0092]
可选地,电子设备还可以包括存储控制器、输入输出单元。
[0093]
所述存储器430、存储控制器、处理器410、外设接口、输入输出单元各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通信总线440实现电性连接。所述处理器410用于执行存储器430中存储的可执行模块,例如电子设备包括的软件功能模块或计算机程序。
[0094]
输入输出单元用于提供给用户创建任务以及为该任务创建启动可选时段或预设执行时间以实现用户与服务器的交互。所述输入输出单元可以是,但不限于,鼠标和键盘等。
[0095]
可以理解,图4所示的结构仅为示意,所述电子设备还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。
[0096]
本技术实施例还提供一种存储介质,所述存储介质上存储有指令,当所述指令在计算机上运行时,所述计算机程序被处理器执行时实现方法实施例所述的方法,为避免重复,此处不再赘述。
[0097]
本技术还提供一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行方法实施例所述的方法。
[0098]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0099]
另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0100]
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0101]
以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0102]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
[0103]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

技术特征:
1.一种数据校验方法,其特征在于,包括:获取目标源码;其中,所述目标源码包含切面,所述切面的切点设置为使用注解标记的函数;从所述目标源码中获取使用注解标记的函数的参数名称列表信息和参数值列表信息;遍历所述参数名称列表信息中的参数名称,从所述参数值列表信息中获取与所述参数名称对应的参数值,并使用与所述参数名称对应的正则表达式对所述参数值进行判断,基于所述判断结果确定所述函数是否通过数据校验。2.根据权利要求1所述的方法,其特征在于,所述从所述参数值列表信息中获取与所述参数名称对应的参数值之前,包括:将所述函数的参数名称统一转换成目标格式。3.根据权利要求1所述的方法,其特征在于,所述使用与所述参数名称对应的正则表达式对所述参数值进行判断,基于所述判断结果确定所述函数是否通过数据校验,包括:若所述参数值满足与所述参数名称对应的正则表达式,确定所述参数值通过数据校验,并继续下一个参数的校验;当所述函数的所有参数值均通过数据校验时,确定所述函数通过数据校验。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:当确定所述函数通过数据校验时,执行函数内部逻辑处理。5.根据权利要求3所述的方法,其特征在于,所述方法还包括:当所述函数的任一参数值未通过数据校验时,确定所述函数的数据校验失败,并输出告警信息。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:遍历所述参数名称列表信息中的参数名称后,基于所有未通过数据校验的参数值生成错误列表,将所述错误列表进行输出。7.一种数据校验装置,其特征在于,包括:第一获取模块,用于获取目标源码;其中,所述目标源码包含切面,所述切面的切点设置为使用注解标记的函数;第二获取模块,用于从所述目标源码中获取使用注解标记的函数的参数名称列表信息和参数值列表信息;遍历校验模块,用于遍历所述参数名称列表信息中的参数名称,从所述参数值列表信息中获取与所述参数名称对应的参数值,并使用与所述参数名称对应的正则表达式对所述参数值进行判断,基于所述判断结果确定所述函数是否通过数据校验。8.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的方法。9.一种电子设备,其特征在于,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的方法。10.一种计算机程序产品,其特征在于,所述计算机程序产品在计算机上运行时,使得计算机执行如权利要求1至6任一项所述的方法。

技术总结
本申请实施例提供一种数据校验方法、装置、存储介质及设备,该方法中,获取包含切面、且切面的切点设置为使用注解标记的函数的目标源码,再获取被注入的函数的参数名称列表信息和参数值列表信息,以此遍历函数的参数名称,并执行对应的校验逻辑,进而根据各参数值的数据校验结果来确定该函数是否通过数据校验。这样,通过面向切面编程技术以及添加注解的方式,集成函数参数校验功能,对同类型的函数参数实现全面的、完整的校验,并且最大程度地减少源代码修改,从而有效减少开发人员在实现函数参数数据校验时需要耗费的时间和精力。现函数参数数据校验时需要耗费的时间和精力。现函数参数数据校验时需要耗费的时间和精力。


技术研发人员:吴艳兵
受保护的技术使用者:平安银行股份有限公司
技术研发日:2023.03.29
技术公布日:2023/7/25
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐