发明内容
基于此,有必要针对上述技术问题,提供一种能够自动收集接口信息,有效提高接口文档生成效率的接口文档生成方法、装置、计算机设备和存储介质。
一种接口文档生成方法,所述方法包括:
获取代码文件,遍历代码文件中记录的多个接口的类,获取当前遍历的类对应的代码注解信息;
查找当前遍历的提供接口的类中定义的全局参数,从所述当前遍历的提供接口的类以及其对应的所述代码注解信息中获取全局变量信息;
通过遍历所述类中的类方法反射出所述类所包含的所有接口,从遍历的所述类方法对应的方法体中以及所述类对应的代码注解信息中获取每个所述接口的接口信息;
将所述全局参数信息添加到所有所述接口的接口信息中,并将得到的接口信息写入接口文档;
将通过遍历代码文件中的下一个提供接口的类所得到的接口信息写入所述接口文档,直至所述接口文档中写入了所述代码文件中所有提供接口的类的接口信息。
在一个实施例中,在所述获取代码文件,遍历代码文件中记录的多个接口的类,获取当前遍历的类对应的代码注解信息之前,还包括:
采集代码文件中所有类对应的代码注解信息,其中,所述类对应的代码注解信息是通过收集和分析所述类以及对应的父类的代码注解得到的;
缓存采集的所述代码注解信息。
在其中一个实施例中,所述采集代码文件中所有类对应的代码注解信息,包括:
将代码文件的源码转换成语法树,基于所述语法树遍历获取类中的每一个类变量的代码注解以及每一个类方法的代码注解,解析获取的所述代码注解得到所述类的代码注解信息;
基于所述语法树递归遍历获取所述类对应的父类的每一个类变量的代码注解以及每一个类方法的代码注解,解析所述代码注解得到所述父类的代码注解信息;
将所述父类的代码注解信息添加至所述类的代码注解信息中。
在其中一个实施例中,所述查找当前遍历的类中的全局参数,从所述类对所述全局参数的定义中以及所述类对应的代码注解信息中获取全局参数信息,包括:
遍历所述类中的类变量,从遍历的所述类变量中获取定义的接口参数,并从所述类变量中提取所述接口参数的基本信息,其中,提取的所述接口参数为全局参数;
遍历所述类中所有的非接口类方法,从遍历的所述非接口类方法中获取定义的参数,并从所述非接口类方法中获取所述参数的基本信息,其中,提取的所述参数为全局参数;
从所述类对应的代码注解信息中提取每个所述全局参数的附加信息,所述基本信息和所述附加信息构成了所述全局参数的全局参数信息。
在其中一个实施例中,所述通过遍历所述类中的类方法反射出所述类所包含的所有接口,从遍历的所述类方法对应的方法体中以及所述类对应的代码注解信息中获取每个所述接口的接口信息,包括:
遍历所述类中所有接口类方法,获取每个所述类方法所提供的接口并从对应的方法体中提取接口基本信息;
从所述类对应的代码注解信息中提取每个所述接口的接口附加信息;
将所述接口附加信息添加到对应的所述接口的接口基本信息中,得到每个所述接口的接口信息。
一种接口文档生成装置,所述装置包括:
代码注解信息获取模块,用于获取代码文件,遍历代码文件中记录的多个接口的类,获取当前遍历的类对应的代码注解信息;
全局参数信息获取模块,用于查找当前遍历的类中的全局参数,从类对全局参数的定义中以及类对应的代码注解信息中获取全局参数信息;
接口反射模块,用于通过遍历类中的类方法反射出类所包含的所有接口,从遍历的类方法对应的方法体中以及类对应的代码注解信息中获取每个接口的接口信息。
信息写入模块,用于将全局参数信息添加到所有接口的接口信息中,并将得到的接口信息写入接口文档;将通过遍历代码文件中的下一个提供接口的类所得到的接口信息写入接口文档,直至接口文档中写入了代码文件中所有提供接口的类的接口信息。
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述各个方法实施例提供的步骤。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各个方法实施例提供的步骤。
上述接口文档生成方法、装置、计算机设备和存储介质,通过遍历源码文件,查找到所有提供接口的类,获取该源码文件中所包含的所有接口,也就是通过反射的方式获取系统的代码文件中所包含的接口,然后从源码文件以及预先从源码文件中收集用于注解代码的代码注解信息获取接口信息,遍历源码得到每个接口都需要的全局参数信息,将全局参数信息添加到接口信息中以得到每个接口完整的信息,实现了接口信息的自动获取,且自动根据获取到的接口信息生成接口文档,无需手动编写或者手动输入接口信息即可生成接口文档,大大提高了接口文档生成效率。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的接口文档生成方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。终端102用于提供用户操作界面,向服务器104发送接口文档生成请求。服务器104拉取系统的源码文件进行解析,收集源码注解信息,通过遍历类得到源码文件中所包含的所有接口以及全局参数,从源码和对应的源码注解信息中提取接口信息,并将以全局参数的形式定义在类中的接口参数添加到接口信息中,以获取接口的全部信息。进而根据接口信息生成接口文档,将生成的接口文档推送至终端102中进行显示。
其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种接口文档生成方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤202:获取代码文件,遍历代码文件中记录的多个接口的类,获取当前遍历的类对应的代码注解信息。
这里的代码文件可以是Java文件,还可以是其他编码语言编写的代码文件。
服务器从业务系统拉取代码文件。本实施例中,以代码文件为Java文件进行说明。服务器从业务系统中拉取Java文件,编译Java文件,生成至少一个.class文件(类文件)。Java文件中可以包括多个类,编译时为每个类生成对应的类文件。
一个类中包括多个类变量(field类)和多个类方法(method类),查找类中的是否存在带有接口标记的类方法,若是,则对应类是接口的类。其中,不同的服务框架对接口的标记有所不同。如jersey框架中标记有@path的method类为对外提供的接口。spring mvc框架中标记有@path Mapping的method类为对外提供的接口。
参照以下示例,示例中为一method类,该method类中包含“@Path(″definition/ processRemoteOrders″)”这一标记,因此,该method类对应的类为提供接口的类。
@GET
@Path(″definition/processRemoteOrders″)
public GenericResponse<Object>processRemoteDefinitionORDERS(){
…
}
预先收集Java文件中每个类对应的代码注解信息,这里的代码注解信息可以是用于注解代码的Javadoc信息。Javadoc是基于按照预先约定的标签规范化的代码注解信息。
在一个实施例中,预先定义Javadoc标签,使得基于预定义的Javadoc标签能够对接口所需要的所有描述信息按照标签的进行规范地表达。
在一个实施例中,Javadoc标签和标签对应的含义如下表所示:
表1
表中的main tag(主标签)可以单独存在,需要重新开一行,格式是°@tag xxx;subtag(副标签)不能单独存在,格式是°@tag=xxx。
@required是特例,既可以作为sub tag(例如描述@param),也可以作为main tag(schema class中的field)。
在一个实施例中,表格中的参数,返回值和分支的示例的描述放在第一个注解(@annotation)后面,例如@returnCase fail des和@param application:applicationname。
基于表1中的Javadoc标签,在Java文件中注解代码的Javadoc信息可以如下示例:
/**
*获取万元收益走势图数据(超级零活宝)
*@type service
*@sla@level=2,@idempotent=true,@parallel=2,@timeout=100ms
*@param productCode:产品编码@required=true@example=″1718599574026″@example=″1718599574489″
*@reture收益走势图数据@schema={@linkcom.lufax.gson.dto.BaseRespDTO}@codeName=res_code
*/
通过上述的Javadoc示例可知,Javadoc信息中包含了对参数、参数的属性、示例等详细的描述信息。服务器拉取Java文件,编译Java文件后生成多个类文件。本实施例中,对提供接口的类文件进行遍历查找。首先获取每个提供接口的类对应的Javadoc信息,缓存这些Javadoc信息,本案后续步骤将使用Javadoc信息来补充接口信息。
步骤S204:查找当前遍历的提供接口的类中定义的全局参数,从当前遍历的提供接口的类以及其对应的代码注解信息中获取全局变量信息。
服务器查找当前遍历的提供接口的类中定义的全局参数并获取全局参数信息。从类文件的定义全局参数的相应代码处获取全局参数信息,并从该类对应的Javadoc信息中查找出与该全局参数的相应代码对应的全局参数的Javadoc信息,从全局参数的Javadoc信息中获取全局参数的补充信息。
全局变量定义在当前遍历的提供接口的类的field类中,当前遍历的提供接口的类中定义的所有的接口(提供接口的method类)均需要提取的全局变量,也就是,提取的全局变量是类中所有接口的变量。
在一个实施例中提取全局变量以及全局变量信息包括:从当前遍历的提供接口的类中的field类中获取全局变量。从field类和其对应的Javadoc信息中获取全局变量信息。对于全局变量仅定义在field类的提供接口的类,仅遍历其中的field类即可查找出全部的全局变量,较少了查询时间,提高了接口文档的生成效率。
本实施例中,预先通过遍历查找的方式获取所有接口需要的全局参数,以补全接口信息。
步骤S206:通过遍历类中的类方法反射出类所包含的所有接口,从遍历的类方法对应的方法体中以及类对应的代码注解信息中获取每个接口的接口信息。
类中的类方法包括接口类方法和非接口类方法,如步骤S202中所描述的,其中带有接口标记的类方法为接口类方法,如方法体中带有@Path(″definition/processRemoteOrders″)标记的类方法为接口类方法。可以将接口类方法或者接口method类简称为“接口”。服务器遍历类中的带有接口标记的类方法实质上是在查找类中所包括的接口。
服务器遍历类中所有带有接口标记的类方法,从方法体中(代码中)获取接口信息,从该方法体对应的Javadoc信息中获取附加信息。
本实施的接口文档生成方法是在预先不知道类中存在哪些接口的前提下,通过遍历查找的方式反射出接口,在通过定义接口的方法体和对应的代码注解这两个渠道中获取反射出的接口的接口信息。
步骤S208:将全局参数信息添加到所有接口的接口信息中,并将得到的接口信息写入接口文档。
将预先查找出的全局参数信息添加到从类中反射出的接口的接口信息中,以得到完整的接口信息。
本实施例的从多个渠道获取的接口信息更加完整,保障了生成的接口文档的信息完整性和可靠性。
步骤S210:将通过遍历代码文件中的下一个提供接口的类所得到的接口信息写入接口文档,直至接口文档中写入了代码文件中所有提供接口的类的接口信息。
判断当前是否还存在未遍历的接口的类,若是,获取该未遍历的接口的类中所包含的所有接口的接口信息,直至遍历完Java文件中所有接口的类,将获取的所有的接口信息都写入接口文档。
本实施例中,通过遍历源码文件,查找到所有提供接口的类,获取该源码文件中所包含的所有接口,也就是通过反射的方式获取系统的代码文件中所包含的接口,然后从源码文件以及预先从源码文件中收集用于注解代码的Javadoc信息获取接口信息,遍历源码得到每个接口都需要的全局参数信息,将全局参数信息添加到接口信息中以得到每个接口完整的信息,实现了接口信息的自动获取,根据获取到的接口信息生成接口文档,无需手动编写或者手动输入接口信息即可生成接口文档,大大提高了接口文档生成效率。
在一个实施例中,将获取的接口信息写入接口文档前,对接口信息进行数据格式转换,转换成接口文档数据格式,进而将转换后的接口信息写入接口文档。
如图3,左上为Javadoc信息,左下为接口method类,从左侧中提取的接口信息转换成右侧的接口文档格式。由图3可以看出,Javadoc信息起到了比较重要的补全接口信息的作用。
在一个实施例中,将遍历得到的Java文件中的所有类所包含的接口信息写入接口文档中后,将接口文档推送至前端页面显示。进一步的,可在前端页面中对显示的接口文档中的接口信息进行修改和本地保存。
在一个实施例中,如图4所示,在从Java文件中提取接口信息之前,也就是在步骤S202:获取代码文件,遍历代码文件中记录的多个接口的类,获取当前遍历的类对应的代码注解信息之前,还需要预先从代码文件中提取代码注解信息,具体包括如下步骤:
步骤S302:代码文件的源码转换成语法树,基于语法树遍历获取类中的每一个类变量的代码注解以及每一个类方法的代码注解,解析获取的代码注解得到类的代码注解信息。
可以使用Eclipse JDT库将获取的源码转换成语法树,获取import列表。通过import列表获取查找每个类包括的field类和method类以及类的父类。
具体为:根据import列表遍历分析类中每一个field类的代码注解,并按照上述表格中的标签对注解代码进行解析,得到每一个field类对应的Javadoc信息,其中,解析field类的代码注解得到的Javadoc信息可以包括描述信息、是否必填,schema,样例等信息。
根据import列表遍历分析类中每一个method类的代码注解,并按照上述表格中的标签对注解代码进行解析,得到每一个method类对应的Javadoc信息,其中,解析method类的代码注解得到的Javadoc信息可以包括描述信息、是否必填,SLA信息,参数、隐式定义的参数、Response、对其他接口的引用等信息。
步骤S304:基于语法树递归遍历获取类对应的父类的每一个类变量的代码注解以及每一个类方法的代码注解,解析代码注解得到父类的代码注解信息。
步骤S306:将父类的代码注解信息添加至类的代码注解信息中。
同样的方式,递归遍历父类的的field类和method类,提取父类的Javadoc信息,将父类的Javadoc信息添加到当前类的Javadoc信息中,即得到了当前类的完整的Javadoc信息。
步骤S308:缓存收集的代码注解信息。
同样的方式,收集源码中包括的下一个类的Javadoc信息,直至收集到所有类对应的Javadoc信息。缓存收集到的Java文件中所有类对应的Javadoc信息。
本实施例中,将父类的Javadoc信息添加到对应类的Javadoc信息,可使类的Javadoc信息更加丰富和全面。由于类的Javadoc信息用于补充接口信息,收集的更加全面的Javadoc信息进一步确保了最终收集的接口信息的完整性。
本实施例中,Javadoc信息的收集是在生成接口文档流程之前进行的,在生成接口文档时直接调用收集好的Javadoc信息即可,在保证接口信息完整性的前提下,确保了接口文档的生成效率。
在一个实施例中,如图5所示,步骤S204:查找当前遍历的类中的全局参数,从类对全局参数的定义中以及类对应的代码注解信息中获取全局参数信息,包括如下步骤:
步骤S402:遍历类中的类变量,从遍历的类变量中获取定义的接口参数,并从类变量中提取接口参数的基本信息,其中,提取的接口参数为全局参数。
全局参数可以以变量的形式定义在field类中,也可以定义为method类(也就是定义为方法)。field类中定义的全局参数包括接口参数和非接口参数。其中,接口参数带有设定的接口标记,如在jersey框架中,接口参数带有@queryparam。在field类中查找接口需要的全局参数为:遍历field类中定义的所参数,从中筛选出带有设定标记的接口参数并为筛选出的接口参数获取相应的接口信息。
本实施例中,从field类中提取接口参数的基本信息,提取的基本接口信息包括参数名和参数类型。
步骤S404:遍历类中所有的非接口类方法,从遍历的非接口类方法中获取定义的参数,并从非接口类方法中获取参数的基本信息,其中,提取的参数为全局参数。
接口参数还可以以方法的形式定义在method类中,这里说的定义全局参数的method类为非接口method类,即在所有method类中除去上述接口method类以外的method类,也就是,带有接口标记的方法类为接口method类。不带有接口标记的方法类为非接口method类。
遍历非接口method类,提取在其中定义的参数并获取参数信息,提取的参数即为接口所需要的全局参数,提取的参数信息为全局参数的基本信息。
在一个实施例中,提取的基本接口信息包括参数名和参数类型。
步骤S406:从类对应的代码注解信息中提取每个全局参数的附加信息,基本信息和附加信息构成了全局参数的全局参数信息。
从Javadoc信息中获取全局的接口参数的附加信息。在一个实施例中,附加信息可以包括是否必填,schema,样例等信息。
本实施例中,通过遍历field类和非接口method类获取在类中定义的全局参数,这种查找方式可获取到类中所有的全局的接口参数。从全局参数的定义中以及类对应的Javadoc中获取全局参数信息,叠加两个渠道获取的信息可使获取的全局参数信息更加全面完整。
在一个实施例中,步骤S206:通过遍历类中的类方法反射出类所包含的所有接口,从遍历的类方法对应的方法体中以及类对应的代码注解信息中获取每个接口的接口信息,包括:遍历类中所有接口类方法,获取每个类方法所提供的接口并从对应的方法体中提取接口基本信息;从类对应的代码注解信息中提取每个接口的接口附加信息;将接口附加信息添加到对应的接口的接口基本信息中,得到每个接口的接口信息。
通过遍历查找的方式,获取类中定义的所有接口,在从定义接口的方法体和类对应的Javadoc中获取接口信息。在一个实施例中,从提供接口的方法体中获取的基本接口信息包括接口路径、请求类型和接口参数等信息。从Javadoc中提取的附加接口信息包括接口描述信息、接口类型、sla数据、参数等数据。
在一个实施例中,如图6所示,提供了一种接口文档生成方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤S502:响应于用户触发的接口文档生成请求,调用文档提取接口,
其中,文档提取接口基于源码分析反射出源码中包含的接口,并从源码以及预先缓存的源码对应的Javadoc信息中获取接口信息。
具体的,监听用户触发的接口文档生成请求操作,当获取到该操作后生成接口文档生成请求,相应于接口文档生成请求,调用文档提取接口,该文档提取接口执行步骤S202-S210,获取所有接口的接口信息。文档提取接口遍历源码,反射出接口并从多个渠道获取接口信息后,向终端反馈接口文档获取通知。
步骤S504:响应于文档提取接口反馈的结果获取通知,在本地添加接口文档获取任务。
终端响应于文档提取接口返回的接口文档获取通知,在任务获取列表中添加对应本次文档获取请求的接口文档获取任务。任务获取列表中显示待获取的接口文档标识,接口文档标识可以是系统名称,业务模块名称等。
步骤S506:当接收到接口文档获取任务激活指令时,从文档提取接口中获取接口信息,根据接口信息生成并显示接口文档。
监听用户对列表中某一待获取的接口文档获取任务的触发操作,该触发操作激活接口文档获取任务,从服务器中获取相应的接口信息,渲染接口信息生成并显示接口文档。
进一步的,文档提取接口或者终端将获取到的接口信息转换成设定的数据格式,终端基于转换后的接口信息生成接口文档。
本实施例中,从文档展现平台上发送生成接口文档的操作,通知文档提取服务,文档提取服务通过源码分析和反射的方式,从代码和代码注解中提取接口信息,转换成接口文档数据格式,由文档展现平台展现接口文档。
应该理解的是,虽然图2,4-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2,4-6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种接口文档生成装置,该装置包括:
代码注解信息获取模块602,用于获取代码文件,遍历代码文件中记录的多个接口的类,获取当前遍历的类对应的代码注解信息。
全局参数信息获取模块604,用于查找当前遍历的提供接口的类中定义的全局参数,从当前遍历的提供接口的类以及其对应的代码注解信息中获取全局变量信息。
接口反射模块606,用于通过遍历类中的类方法反射出类所包含的所有接口,从遍历的类方法对应的方法体中以及类对应的代码注解信息中获取每个接口的接口信息。
信息写入模块608,用于将全局参数信息添加到所有接口的接口信息中,并将得到的接口信息写入接口文档;将通过遍历代码文件中的下一个提供接口的类所得到的接口信息写入接口文档,直至接口文档中写入了代码文件中所有提供接口的类的接口信息。
在一个实施例中,如图8所示,接口文档生成装置还包括:
代码注解信息采集模块601,用于采集代码文件中所有类对应的代码注解信息,其中,类对应的代码注解信息是通过收集和分析类以及对应的父类的代码注解得到的。缓存采集的代码注解信息。
在一个实施例中,代码注解信息采集模块601,还用于将代码文件的源码转换成语法树,基于语法树遍历获取类中的每一个类变量的代码注解以及每一个类方法的代码注解,解析获取的代码注解得到类的代码注解信息;基于语法树递归遍历获取类对应的父类的每一个类变量的代码注解以及每一个类方法的代码注解,解析代码注解得到父类的代码注解信息;将父类的代码注解信息添加至类的代码注解信息中。
在一个实施例中,全局参数信息获取模块604,还用于遍历类中的类变量,从遍历的类变量中获取定义的接口参数,并从类变量中提取接口参数的基本信息,其中,提取的接口参数为全局参数;遍历类中所有的非接口类方法,从遍历的非接口类方法中获取定义的参数,并从非接口类方法中获取参数的基本信息,其中,提取的参数为全局参数;从类对应的代码注解信息中提取每个全局参数的附加信息,基本信息和附加信息构成了全局参数的全局参数信息。
在一个实施例中,接口反射模块606,还用于遍历类中所有接口类方法,获取每个类方法所提供的接口并从对应的方法体中提取接口基本信息;从类对应的代码注解信息中提取每个接口的接口附加信息;将接口附加信息添加到对应的接口的接口基本信息中,得到每个接口的接口信息。
在一个实施例中,接口文档生成装置还包括信息推送模块610,用于将生成的接口文档推送至前端页面显示。
在一个实施例中,如图9所示,提供了一种接口文档生成装置,包括:
请求模块702,用于响应于用户触发的接口文档生成请求,调用文档提取接口;其中,文档提取接口基于源码分析反射出源码中包含的接口,并从源码以及预先缓存的源码对应的Javadoc信息中获取接口信息。
任务添加模块704,用于响应于文档提取接口反馈的结果获取通知,在本地添加接口文档获取任务。
文档显示模块706,用于当接收到接口文档获取任务激活指令时,从文档提取接口中获取接口信息,根据接口信息生成并显示接口文档。
关于接口文档生成装置的具体限定可以参见上文中对于接口文档生成方法的限定,在此不再赘述。上述接口文档生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储Javadoc信息。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种接口文档生成方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种接口文档生成方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:获取代码文件,遍历代码文件中记录的多个接口的类,获取当前遍历的类对应的代码注解信息;查找当前遍历的提供接口的类中定义的全局参数,从当前遍历的提供接口的类以及其对应的代码注解信息中获取全局变量信息;通过遍历类中的类方法反射出类所包含的所有接口,从遍历的类方法对应的方法体中以及类对应的代码注解信息中获取每个接口的接口信息;将全局参数信息添加到所有接口的接口信息中,并将得到的接口信息写入接口文档;将通过遍历代码文件中的下一个提供接口的类所得到的接口信息写入接口文档,直至接口文档中写入了代码文件中所有提供接口的类的接口信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:采集代码文件中所有类对应的代码注解信息,其中,类对应的代码注解信息是通过收集和分析类以及对应的父类的代码注解得到的;缓存采集的代码注解信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将代码文件的源码转换成语法树,基于语法树遍历获取类中的每一个类变量的代码注解以及每一个类方法的代码注解,解析获取的代码注解得到类的代码注解信息;基于语法树递归遍历获取类对应的父类的每一个类变量的代码注解以及每一个类方法的代码注解,解析代码注解得到父类的代码注解信息;将父类的代码注解信息添加至类的代码注解信息中。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:遍历类中的类变量,从遍历的类变量中获取定义的接口参数,并从类变量中提取接口参数的基本信息,其中,提取的接口参数为全局参数;遍历类中所有的非接口类方法,从遍历的非接口类方法中获取定义的参数,并从非接口类方法中获取参数的基本信息,其中,提取的参数为全局参数;从类对应的代码注解信息中提取每个全局参数的附加信息,基本信息和附加信息构成了全局参数的全局参数信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:遍历类中所有接口类方法,获取每个类方法所提供的接口并从对应的方法体中提取接口基本信息;从类对应的代码注解信息中提取每个接口的接口附加信息;将接口附加信息添加到对应的接口的接口基本信息中,得到每个接口的接口信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将生成的接口文档推送至前端页面显示。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:响应于用户触发的接口文档生成请求,调用文档提取接口;其中,文档提取接口基于源码分析反射出源码中包含的接口,并从源码以及预先缓存的源码对应的Javadoc信息中获取接口信息;响应于文档提取接口反馈的结果获取通知,在本地添加接口文档获取任务;当接收到接口文档获取任务激活指令时,从文档提取接口中获取接口信息,根据接口信息生成并显示接口文档。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取代码文件,遍历代码文件中记录的多个接口的类,获取当前遍历的类对应的代码注解信息;查找当前遍历的提供接口的类中定义的全局参数,从当前遍历的提供接口的类以及其对应的代码注解信息中获取全局变量信息;通过遍历类中的类方法反射出类所包含的所有接口,从遍历的类方法对应的方法体中以及类对应的代码注解信息中获取每个接口的接口信息;将全局参数信息添加到所有接口的接口信息中,并将得到的接口信息写入接口文档;将通过遍历代码文件中的下一个提供接口的类所得到的接口信息写入接口文档,直至接口文档中写入了代码文件中所有提供接口的类的接口信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:采集代码文件中所有类对应的代码注解信息,其中,类对应的代码注解信息是通过收集和分析类以及对应的父类的代码注解得到的;缓存采集的代码注解信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将代码文件的源码转换成语法树,基于语法树遍历获取类中的每一个类变量的代码注解以及每一个类方法的代码注解,解析获取的代码注解得到类的代码注解信息;基于语法树递归遍历获取类对应的父类的每一个类变量的代码注解以及每一个类方法的代码注解,解析代码注解得到父类的代码注解信息;将父类的代码注解信息添加至类的代码注解信息中。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:遍历类中的类变量,从遍历的类变量中获取定义的接口参数,并从类变量中提取接口参数的基本信息,其中,提取的接口参数为全局参数;遍历类中所有的非接口类方法,从遍历的非接口类方法中获取定义的参数,并从非接口类方法中获取参数的基本信息,其中,提取的参数为全局参数;从类对应的代码注解信息中提取每个全局参数的附加信息,基本信息和附加信息构成了全局参数的全局参数信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:遍历类中所有接口类方法,获取每个类方法所提供的接口并从对应的方法体中提取接口基本信息;从类对应的代码注解信息中提取每个接口的接口附加信息;将接口附加信息添加到对应的接口的接口基本信息中,得到每个接口的接口信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将生成的接口文档推送至前端页面显示。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:响应于用户触发的接口文档生成请求,调用文档提取接口;其中,文档提取接口基于源码分析反射出源码中包含的接口,并从源码以及预先缓存的源码对应的Javadoc信息中获取接口信息;响应于文档提取接口反馈的结果获取通知,在本地添加接口文档获取任务;当接收到接口文档获取任务激活指令时,从文档提取接口中获取接口信息,根据接口信息生成并显示接口文档。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。