一种接口变更识别方法、装置、设备及存储介质与流程

文档序号:25050678发布日期:2021-05-14 13:10阅读:99来源:国知局
一种接口变更识别方法、装置、设备及存储介质与流程

1.本申请涉及计算机应用技术领域,特别是涉及一种接口变更识别方法、装置、设备及存储介质。


背景技术:

2.在软件开发过程中,客户端和服务端一般由不同的开发人员进行开发,服务端基于服务端开发人员定义的接口,如api(application programming interface,应用程序接口)对外提供服务,客户端开发人员根据服务端开发人员对接口的定义对接开发客户端。另外,测试人员会根据接口定义对接口进行测试。这样,记录接口定义、描述服务端接口功能的接口文档,其作为客户端开发人员、服务端开发人员和测试人员之间对于接口的约定,显得更加重要。
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.变更接口确定模块,用于针对每个接口,基于当前接口的描述信息字符串摘要,确定所述当前接口是否为变更接口。
37.一种接口变更识别设备,包括:
38.存储器,用于存储计算机程序;
39.处理器,用于执行所述计算机程序时实现上述任一项所述接口变更识别方法的步骤。
40.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述接口变更识别方法的步骤。
41.应用本申请实施例所提供的技术方案,在检测到有代码文件提交时,对代码文件中的类进行遍历,提取出每个类中每个接口的相关信息,基于每个接口的相关信息,生成每个接口的描述信息字符串摘要,针对每个接口,基于当前接口的描述信息字符串摘要,确定当前接口是否为变更接口。在提交代码文件时,自动生成每个接口的描述信息字符串摘要,通过描述信息字符串摘要进行接口变更的准确识别,方便后续工作的进行。
附图说明
42.为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
43.图1为本申请实施例中一种接口变更识别方法的实施流程图;
44.图2为本申请实施例中一种接口变更识别装置的结构示意图;
45.图3为本申请实施例中一种接口变更识别设备的结构示意图。
具体实施方式
46.为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
47.参见图1所示,为本申请实施例所提供的一种接口变更识别方法的实施流程图,该方法可以包括以下步骤:
48.s110:在检测到有代码文件提交时,对代码文件中的类进行遍历,提取每个类中每个接口的相关信息。
49.本申请实施例所提供的技术方案可以在ide(integrated development environment,集成开发环境)中进行。在ide启动时,可以向ide注册代码提交(commit)回调的hook,即钩子函数。这样在有代码文件提交时,ide可以自动触发注册的hook方法,即代码扫描方法。
50.在实际应用中,开发人员在编写完成代码或者修改完成代码时,可以向vcs(version control system,版本控制系统)提交代码文件。在检测到有代码文件提交时,可以对提交的代码文件中的类进行遍历,提取每个类中每个接口的相关信息。如提交的是java代码,可以遍历所有的java类,通过解析java类的ast(抽象语法树)提取所有接口的相关信息。
51.在本申请的一种具体实施方式中,每个接口的相关信息包括接口方法全名称信
息、参数信息、返回值信息和注释信息,步骤s110可以包括以下步骤:
52.步骤一:遍历代码文件中的类,获取每个类的包名和类名;
53.步骤二:生成每个类中每个接口的接口方法全名称信息,接口方法全名称信息包括包名、类名、接口方法名、接口方法的参数类型名;
54.步骤三:对每个接口的接口方法的参数进行遍历,提取每个参数的参数信息,参数信息包括参数名称和参数类型;
55.步骤四:根据每个接口的返回值类型提取返回值信息;
56.步骤五:获取注释信息。
57.为便于描述,将上述几个步骤结合起来进行说明。
58.在本申请实施例中,在检测到有代码文件提交时,可以通过遍历代码文件中的类,先获取每个类的包名(package name)和类名(class name),可以构建类全名称(full name)。类全名称的格式可以是“包名.类名”,如“com.xxx.yyy.exampleapi”。
59.然后生成每个类中每个接口的接口方法全名称信息,接口方法全名称信息包括包名、类名、接口方法名、接口方法的参数类型名。可以通过获取每个类中每个接口的接口方法的签名,包含接口方法名、返回值类型、参数类型等信息,生成相应类中相应接口的接口方法全名称信息。
60.具体的,可以先获取接口方法的名称,作为接口名称,再获取接口方法所有参数的类型,最后进行拼接得到接口方法全名称,包含其所在类的包名、类名,还包含接口方法名、接口方法的所有参数类型名。接口方法全名称的格式可以为“包名.类名.接口方法名(参数1类型名,参数2类型名,参数3类型名,......)”,如“com.xxx.yyy.exampleapi.findbytypeandname(integer,string)”。可以通过编译系统保证,使得全名称在系统中具有唯一性。
61.生成每个类中每个接口的接口方法全名称信息之后,进一步可以对每个接口的接口方法的参数进行遍历,提取每个参数的参数信息,参数信息包括参数名称和参数类型。
62.具体的,针对每个接口的接口方法的每个参数,如果当前参数是基本数据类型及对应的包装类型,则提取当前参数的参数信息;
63.如果当前参数不是基本数据类型,且不存在嵌套,则遍历当前参数对应类型的属性,获取每个属性的参数信息;
64.如果当前参数不是基本数据类型,且存在嵌套,则执行递归操作,直至属性为基本数据类型时,提取当前参数的参数信息。
65.以java代码为例,遍历每个接口的接口方法的所有参数,如果参数是java基本数据类型,如int、long、double、string等以及对应的包装类型,如integer、long、double等,则可以直接提取参数名称和参数类型。
66.如果参数非java基本数据类型,且不存在嵌套,则可以遍历该参数对应类型的所有属性,获取所有属性的类型和名称。
67.如果参数非java基本数据类型,且存在嵌套,则可以执行递归操作,直到属性为基本数据类型时,提取参数名称和参数类型。
68.在获取的接口方法的签名中包含接口方法名、返回值类型、参数类型等信息,根据每个接口的返回值类型可以提取返回值信息。
69.具体的,针对每个接口,如果当前接口的返回值类型是基本数据类型及对应的包
装类型,则提取当前接口的返回值信息;
70.如果当前接口的返回值类型不是基本数据类型,且不存在嵌套,则遍历当前接口对应类型的属性,获取每个属性的返回值信息;
71.如果当前接口的返回值类型不是基本数据类型,且存在嵌套,则执行递归操作,直至属性为基本数据类型时,提取当前接口的返回值信息。
72.进一步可以获取注释信息。
73.以java代码为例,可以获取javadoc注释,从javadoc注释中提取方法的描述,作为接口描述,从@param中提取参数的注释,作为参数描述,从@return中提取返回值的注释,作为返回值描述。
74.s120:基于每个接口的相关信息,生成每个接口的描述信息字符串摘要。
75.对代码文件中的类进行遍历,提取得到每个类中每个接口的相关信息后,可以基于每个接口的相关信息,生成每个接口的描述信息字符串摘要。
76.在本申请的一种具体实施方式中,可以基于每个接口的相关信息,构建每个接口的描述信息字符串,然后分别对每个接口的描述信息字符串进行摘要计算,生成每个接口的描述信息字符串摘要。
77.在本申请实施例中,提取到每个接口的相关信息后,可以基于每个接口的相关信息,构建每个接口的描述信息字符串。描述信息字符串的具体格式可以是xml(extensible markup language,可扩展标记语言)、json(javascript object notation,js对象简谱)或yaml(yaml ain't markup language)格式等,下面以json格式为例进行展示:
78.[0079][0080]
构建出每个接口的描述信息字符串后,可以分别对每个接口的描述信息字符串进行摘要计算,生成每个接口的描述信息字符串摘要。具体的,可以通过相关技术中的摘要算法,如md5(message digest algorithm 5,消息摘要算法版本5)、sha(secure hash algorithm,安全散列算法)、mac(hash message authentication code,消息认证码算法)等对每个接口的描述信息字符串进行摘要计算。以使用md5为例,对接口描述信息字符串进行摘要计算后得到的描述信息字符串摘要可以是:232c60c3fb4c87750141089a3d6f0a35。
[0081]
s130:针对每个接口,基于当前接口的描述信息字符串摘要,确定当前接口是否为变更接口。
[0082]
基于每个接口的相关信息,生成每个接口的描述信息字符串摘要,生成的每个接口的描述信息字符串摘要对于每个接口来说是唯一的,可以针对每个接口,基于当前接口的描述信息字符串摘要,确定当前接口是否发生变更,是否为变更接口。
[0083]
在本申请的一种具体实施方式中,步骤s130可以包括以下步骤:
[0084]
第一个步骤:针对每个接口,确定信息库中是否存在当前接口的接口方法摘要信息,如果存在,则执行第二个步骤,如果不存在,则执行第三个步骤;
[0085]
第二个步骤:将当前接口的接口方法摘要信息与当前接口的描述信息字符串摘要进行比较,并根据比较结果,确定当前接口是否为变更接口;
[0086]
第三个步骤:确定当前接口为变更接口。
[0087]
为便于描述,将上述三个步骤结合起来进行说明。
[0088]
在本申请实施例中,可以通过信息库记录接口信息,如按照key

value的形式保存接口方法全名称和接口方法摘要信息,其中,key=接口方法全名称,value=接口方法摘要信息。信息库中记录的信息为当前时刻之前最新信息。通过key

value的形式保存接口信息时,只需要保存接口方法全名称和接口方法全名称信息摘要,不必保存接口的全部信息,可以有效减少需要保存的信息量,减少磁盘占用空间。
[0089]
生成每个接口的描述信息字符串摘要之后,针对每个接口,可以确定信息库中是否存在当前接口的接口方法摘要信息。具体的,可以根据接口方法全名称,在信息库已保存的信息中查找是否存在与相应接口方法全名称对应的接口方法摘要信息。
[0090]
如果在信息库中存在当前接口的接口方法摘要信息,则可以将当前接口的接口方法摘要信息与当前生成的当前接口的描述信息字符串摘要进行比较,如果二者相同,则可以确定当前接口没有变更,不是变更接口,如果二者不同,则可以确定当前接口发生变更,为变更接口。
[0091]
如果信息库中不存在当前接口的接口方法摘要信息,则可以确定当前接口为新增接口,也即为变更接口。
[0092]
在信息库中存在当前接口的接口方法摘要信息的情况下,如果确定当前接口为变更接口,则可以基于当前接口的描述信息字符串摘要,更新信息库中当前接口的接口方法摘要信息。将信息库中记录的当前接口的接口方法摘要信息更新为当前接口的描述信息字符串摘要。
[0093]
在信息库中不存在当前接口的接口方法摘要信息的情况下,可以在信息库中保存当前接口的接口方法全名称及描述信息字符串摘要,即信息库中当前接口的接口方法摘要信息即为当前接口的描述信息字符串摘要。以在下一次执行本申请方案时作为已存信息使用。
[0094]
应用本申请实施例所提供的方法,在检测到有代码文件提交时,对代码文件中的类进行遍历,提取出每个类中每个接口的相关信息,基于每个接口的相关信息,生成每个接口的描述信息字符串摘要,针对每个接口,基于当前接口的描述信息字符串摘要,确定当前接口是否为变更接口。在提交代码文件时,自动生成每个接口的描述信息字符串摘要,通过描述信息字符串摘要进行接口变更的准确识别,方便后续工作的进行。
[0095]
在本申请的一个实施例中,在确定当前接口为变更接口的情况下,该方法还可以包括以下步骤:
[0096]
按照预设的通知方式,向预设目标发送接口变更通知消息。
[0097]
在本申请实施例中,可以预设通知方式,如设定通知方式为邮件、短信、聊天软件、电话等。同时,还可以预先设定通知目标,如客户端开发人员、服务端开发人员、测试人员等。
[0098]
针对每个接口,基于当前接口的描述信息字符串摘要,确定当前接口是否为变更接口之后,可以确定出当前所有的变更接口,按照预设的通知方式,向预设目标发送接口变更通知信息,接口变更通知信息中可以包含变更接口的相关信息。
[0099]
本申请实施例在提交代码前自动检测得到接口变更情况,对变更接口进行自动通知,减少了人为干预,可以有效防止通知遗漏或不及时的情况发生。
[0100]
相应于上面的方法实施例,本申请实施例还提供了一种接口变更识别装置,下文描述的接口变更识别装置与上文描述的接口变更识别方法可相互对应参照。
[0101]
参见图2所示,该装置可以包括以下模块:
[0102]
接口相关信息提取模块210,用于在检测到有代码文件提交时,对代码文件中的类进行遍历,提取每个类中每个接口的相关信息;
[0103]
描述信息字符串摘要生成模块220,用于基于每个接口的相关信息,生成每个接口的描述信息字符串摘要;
[0104]
变更接口确定模块230,用于针对每个接口,基于当前接口的描述信息字符串摘要,确定当前接口是否为变更接口。
[0105]
应用本申请实施例所提供的装置,在检测到有代码文件提交时,对代码文件中的类进行遍历,提取出每个类中每个接口的相关信息,基于每个接口的相关信息,生成每个接口的描述信息字符串摘要,针对每个接口,基于当前接口的描述信息字符串摘要,确定当前接口是否为变更接口。在提交代码文件时,自动生成每个接口的描述信息字符串摘要,通过描述信息字符串摘要进行接口变更的准确识别,方便后续工作的进行。
[0106]
在本申请的一种具体实施方式中,每个接口的相关信息包括接口方法全名称信息、参数信息、返回值信息和注释信息,接口相关信息提取模块210,用于:
[0107]
遍历代码文件中的类,获取每个类的包名和类名;
[0108]
生成每个类中每个接口的接口方法全名称信息,接口方法全名称信息包括包名、类名、接口方法名、接口方法的参数类型名;
[0109]
对每个接口的接口方法的参数进行遍历,提取每个参数的参数信息,参数信息包括参数名称和参数类型;
[0110]
根据每个接口的返回值类型提取返回值信息;
[0111]
获取注释信息。
[0112]
在本申请的一种具体实施方式中,接口相关信息提取模块210,用于:
[0113]
针对每个接口的接口方法的每个参数,如果当前参数是基本数据类型及对应的包装类型,则提取当前参数的参数信息;
[0114]
如果当前参数不是基本数据类型,且不存在嵌套,则遍历当前参数对应类型的属性,获取每个属性的参数信息;
[0115]
如果当前参数不是基本数据类型,且存在嵌套,则执行递归操作,直至属性为基本数据类型时,提取当前参数的参数信息。
[0116]
在本申请的一种具体实施方式中,描述信息字符串摘要生成模块220,用于:
[0117]
基于每个接口的相关信息,构建每个接口的描述信息字符串;
[0118]
分别对每个接口的描述信息字符串进行摘要计算,生成每个接口的描述信息字符串摘要。
[0119]
在本申请的一种具体实施方式中,变更接口确定模块230,用于:
[0120]
针对每个接口,确定信息库中是否存在当前接口的接口方法摘要信息;
[0121]
如果存在,则将当前接口的接口方法摘要信息与当前接口的描述信息字符串摘要进行比较,并根据比较结果,确定当前接口是否为变更接口;
[0122]
如果不存在,则确定当前接口为变更接口。
[0123]
在本申请的一种具体实施方式中,还包括信息更新模块,用于:
[0124]
在信息库中存在当前接口的接口方法摘要信息的情况下,如果确定当前接口为变更接口,则基于当前接口的描述信息字符串摘要,更新信息库中当前接口的接口方法摘要信息;
[0125]
在信息库中不存在当前接口的接口方法摘要信息的情况下,在信息库中保存当前接口的接口方法全名称及描述信息字符串摘要。
[0126]
在本申请的一种具体实施方式中,还包括通知模块,用于:
[0127]
在确定当前接口为变更接口的情况下,按照预设的通知方式,向预设目标发送接口变更通知信息。
[0128]
相应于上面的方法实施例,本申请实施例还提供了一种接口变更识别设备,包括:
[0129]
存储器,用于存储计算机程序;
[0130]
处理器,用于执行计算机程序时实现上述接口变更识别方法的步骤。
[0131]
如图3所示,为接口变更识别设备的组成结构示意图,接口变更识别设备可以包括:处理器10、存储器11、通信接口12和通信总线13。处理器10、存储器11、通信接口12均通过通信总线13完成相互间的通信。
[0132]
在本申请实施例中,处理器10可以为中央处理器(central processing unit,cpu)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件等。
[0133]
处理器10可以调用存储器11中存储的程序,具体的,处理器10可以执行接口变更识别方法的实施例中的操作。
[0134]
存储器11中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本申请实施例中,存储器11中至少存储有用于实现以下功能的程序:
[0135]
在检测到有代码文件提交时,对代码文件中的类进行遍历,提取每个类中每个接口的相关信息;
[0136]
基于每个接口的相关信息,生成每个接口的描述信息字符串摘要;
[0137]
针对每个接口,基于当前接口的描述信息字符串摘要,确定当前接口是否为变更接口。
[0138]
在一种可能的实现方式中,存储器11可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能(比如信息提取功能、摘要计算功能)所需的应用程序等;存储数据区可存储使用过程中所创建的数据,如接口信息数据、摘要对比数据等。
[0139]
此外,存储器11可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
[0140]
通信接口12可以为通信模块的接口,用于与其他设备或者系统连接。
[0141]
当然,需要说明的是,图3所示的结构并不构成对本申请实施例中接口变更识别设备的限定,在实际应用中接口变更识别设备可以包括比图3所示的更多或更少的部件,或者组合某些部件。
[0142]
相应于上面的方法实施例,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述接口变更识别方法的步骤。
[0143]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
[0144]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应
认为超出本申请的范围。
[0145]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质中。
[0146]
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1