首页> 中国专利> 一种项目接口解析方法及相关装置

一种项目接口解析方法及相关装置

摘要

本申请公开了一种项目接口解析方法,包括:获取目标项目的所有代码文件;通过mvn对所述目标项目进行依赖树结构分析,得到所有依赖包文件;对所述所有代码文件和所述所有依赖包文件进行动态编译,得到所有接口类信息;根据所述所有接口类信息确定对应的接口方法及参数。通过对代码文件和依赖包文件进行动态编译,确定到接口信息,并确定接口方法及参数,实现接口解析,而不是运行该代码实现s解析,提高了解析效率。本申请还公开了一种项目接口解析装置、服务器以及计算机可读存储介质,具有以上有益效果。

著录项

  • 公开/公告号CN112748927A

    专利类型发明专利

  • 公开/公告日2021-05-04

    原文格式PDF

  • 申请/专利权人 上海微盟企业发展有限公司;

    申请/专利号CN202011623371.7

  • 发明设计人 周海波;

    申请日2020-12-30

  • 分类号G06F8/41(20180101);G06F8/61(20180101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人丁曼曼

  • 地址 200441 上海市宝山区长江路258号3幢B1-8008室

  • 入库时间 2023-06-19 10:51:07

说明书

技术领域

本申请涉及计算机技术领域,特别涉及一种项目接口解析方法、项目接口解析装置、服务器以及计算机可读存储介质。

背景技术

在项目开发中,web项目的前后端分离开发,APP开发,需要由多个工程师共同定义接口,编写接口文档。在后续开发过程中,共同开发的工程师只需要通过接口文档进行开发,以便实现共同协作完成项目,到项目结束前都要一直维护。而在不同的开发环境中,接口文档可能并不是由工程师们共同指定,需要根据现有的服务分析出对应的接口文档。

相关技术中,在微服务场景下,服务和服务之间的对接需要通过接口文档,接口文档的生成需要依赖接口的方法和数据模型信息。但是,通常情况下需要运行服务才能获取相应的接口方法和数据模型结构,其中运行服务的方式降低了解析效率,影响获取接口文档的速度。

因此,如何在不运行服务的情况下获取接口方法和数据模型结构是本领域技术人员关注的重点问题。

发明内容

本申请的目的是提供一种项目接口解析方法、项目接口解析装置、服务器以及计算机可读存储介质,通过对代码文件和依赖包文件进行动态编译,确定到接口信息,并确定接口方法及参数,实现接口解析,而不是运行该代码实现解析,提高了解析效率。

为解决上述技术问题,本申请提供一种项目接口解析方法,包括:

获取目标项目的所有代码文件;

通过mvn对所述目标项目进行依赖树结构分析,得到所有依赖包文件;

对所述所有代码文件和所述所有依赖包文件进行动态编译,得到所有接口类信息;

根据所述所有接口类信息确定对应的接口方法及参数。

可选的,对所述所有代码文件和所述所有依赖包文件进行动态编译,得到所有接口类信息,包括:

根据所述getTask方法对所述所有代码文件和所述所有依赖包文件进行动态编译;

判断所述动态编译是否成功;

若是,则进行遍历处理,得到所有类信息;

根据接口类判断函数对所述所有类信息进行筛选,得到所述所有接口类信息。

可选的,还包括:

安装mvn环境,并对所述mvn环境进行环境变量配置。

可选的,还包括:

通过代码文档对所述所有接口类信息、对应的接口方法及参数添加注释信息,得到接口文档。

可选的,还包括:

通过自动脚本将所述接口文档生成为markdown接口文档,并上传至文档服务器中。

本申请还提供一种项目接口解析装置,包括:

代码文件获取模块,用于获取目标项目的所有代码文件;

依赖包获取模块,用于通过mvn对所述目标项目进行依赖树结构分析,得到所有依赖包文件;

动态编译模块,用于对所述所有代码文件和所述所有依赖包文件进行动态编译,得到所有接口类信息;

信息获取模块,用于根据所述所有接口类信息确定对应的接口方法及参数。

可选的,所述动态编译模块;

编译单元,用于根据所述getTask方法对所述所有代码文件和所述所有依赖包文件进行动态编译;

编译判断单元,用于判断所述动态编译是否成功;

类信息获取单元,用于当所述动态编译成功时,进行遍历处理,得到所有类信息;

类信息筛选单元,用于根据接口类判断函数对所述所有类信息进行筛选,得到所述所有接口类信息。

可选的,还包括:

mvn配置模块,用于安装mvn环境,并对所述mvn环境进行环境变量配置。

本申请还提供一种服务器,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上所述的项目接口解析方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的项目接口解析方法的步骤。

本申请所提供的一种项目接口解析方法,包括:获取目标项目的所有代码文件;通过mvn对所述目标项目进行依赖树结构分析,得到所有依赖包文件;对所述所有代码文件和所述所有依赖包文件进行动态编译,得到所有接口类信息;根据所述所有接口类信息确定对应的接口方法及参数。

通过对代码文件和依赖包文件进行动态编译,确定到接口信息,并确定接口方法及参数,实现接口解析,而不是运行该代码实现解析,提高了解析效率。

本申请还提供一种项目接口解析装置、服务器以及计算机可读存储介质,具有以上有益效果,在此不做赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的一种项目接口解析方法的流程图;

图2为本申请实施例所提供的一种项目接口解析装置的结构示意图。

具体实施方式

本申请的核心是提供一种项目接口解析方法、项目接口解析装置、服务器以及计算机可读存储介质,通过对代码文件和依赖包文件进行动态编译,确定到接口信息,并确定接口方法及参数,实现接口解析,而不是运行该代码实现解析,提高了解析效率。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

相关技术中,在微服务场景下,服务和服务之间的对接需要通过接口文档,接口文档的生成需要依赖接口的方法和数据模型信息。但是,通常情况下需要运行服务才能获取相应的接口方法和数据模型结构,其中运行服务的方式降低了解析效率,影响获取接口文档的速度。

因此,本申请提供了一种项目接口解析方法,通过对代码文件和依赖包文件进行动态编译,确定到接口信息,并确定接口方法及参数,实现接口解析,而不是运行该代码实现解析,提高了解析效率。

以下通过一个实施例,对本申请提供的一种项目接口解析方法进行说明。

请参考图1,图1为本申请实施例所提供的一种项目接口解析方法的流程图。

本实施例中,该方法可以包括:

S101,获取目标项目的所有代码文件;

可见,本步骤中主要是获取到该目标项目的代码文件。

其中,目标项目的代码文件,就是该项目下的所有代码文件。如果是Java项目,也是该项目路径下的所有扩展名为java的文件。

S102,通过mvn对目标项目进行依赖树结构分析,得到所有依赖包文件;

在S101的基础上,本步骤旨在通过mvn对目标项目进行依赖树结构分析,得到所有依赖包文件。

其中,mvn(Maven,project object model,项目对象模型)是可以通过一小段描述信息来管理项目的构建,并输出报告和文档的项目管理工具软件,可以对Java项目进行构建、依赖管理。

因此,在mvn的基础上,可以通过mvn dependency:tree命令对该目标项目的jar依赖包进行分析,得到该目标项目的工程依赖关系,进而提取出该目标项目的所有依赖包文件。

进一步的,本实施例还可以包括:

安装mvn环境,并对mvn环境进行环境变量配置。

可见,通过本可选方案中主要是安装mvn环境,并对mvn环境进行环境变量配置。其中,安装mvn环境和环境变量配置的过程可以参考现有技术提供的任意一种配置方式,在此不做赘述。

S103,对所有代码文件和所有依赖包文件进行动态编译,得到所有接口类信息;

在S102的基础上,本步骤旨在对所有代码文件和所有依赖包文件进行动态编译,得到所有接口类信息。

其中,动态编译的过程,就是在程序运行时产生java类,并编译成class(类)文件的过程。进而在获取到类文件的基础上,就可以筛选出接口类信息。

举例来讲,可以通过ToolProvider.getSystemJavaCompiler()方法来获得JavaCompiler实例,重写SimpleJavaFileObject、ForwardingJavaFileManager、ClassLoader三个类。将收集到的java文件和jar依赖组织成参数传入JavaCompiler实例的getTask方法中执行动态编译操作。

进一步的,为了实现动态编译,本步骤可以包括:

步骤1,根据getTask方法对所有代码文件和所有依赖包文件进行动态编译;

步骤2,判断动态编译是否成功;

步骤3,若是,则进行遍历处理,得到所有类信息;

步骤4,根据接口类判断函数对所有类信息进行筛选,得到所有接口类信息。

可见,本可选方案主要是对获取到接口类信息的过程进行说明。本可选方案中根据getTask方法对所有代码文件和所有依赖包文件进行动态编译;然后,判断动态编译是否成功;若是,则进行遍历处理,得到所有类信息;最后,根据接口类判断函数对所有类信息进行筛选,得到所有接口类信息。

S104,根据所有接口类信息确定对应的接口方法及参数。

在S103的基础上,本步骤旨在根据所有接口类信息确定对应的接口方法及参数,也就是在确定接口类的基础上,获取到该接口类中的接口方法和参数。

进一步的,本实施例还可以包括:

通过代码文档对所有接口类信息、对应的接口方法及参数添加注释信息,得到接口文档。

可见,通过本可选方案还可以从代码文档中获取到对应的注释信息,对所有的接口类信息,及对应的接口方法及参数进行注释,得到接口文档,提高了获取接口文档的效率。

进一步的,本实施例还可以包括:

通过自动脚本将接口文档生成为markdown接口文档,并上传至文档服务器中。

可见,本可选方案中主要是将生成的接口文档上传至文档服务器中,以便进行查看。

综上,本实施例通过对代码文件和依赖包文件进行动态编译,确定到接口信息,并确定接口方法及参数,实现接口解析,而不是运行该代码实现解析,提高了解析效率。

以下通过一个具体的实施例,对本申请提供的一种项目接口解析方法作进一步说明。

本实施例中,安装mvn环境并配置好环境变量,该方法可以包括:

步骤1,收集项目路径下所有的*.java文件;

步骤2,运行mvn dependency:tree,获取项目的依赖jar包;

步骤3,将java文件和依赖的jar包通过动态编译的方式获取接口类的信息,再通过反射获取接口方法和出入参数;

步骤4,通过javadoc提供的api获取类、方法、字段的注释信息。

具体的,代码中通过遍历路径获取路径下所有的.java文件并通过正则表达式匹配出类名称并和java文件的内容保存到HashMap中待用,通过运行命令mvn dependency:tree获取依赖的jar包,通过ToolProvider.getSystemJavaCompiler()方法来获得JavaCompiler实例,重写SimpleJavaFileObject、ForwardingJavaFileManager、ClassLoader三个类。将收集到的java文件和jar依赖组织成参数传入JavaCompiler实例的getTask方法中执行编译操作。

在编译成功的前提下,遍历存储文件名和内容的hashmap。通过ClassLoader的loadClass方法加载java类获得Class信息,并可以通过Class的isInterface()方法判断是否是接口类,再通过接口类的getDeclaredMethods()方法获取接口类定义的接口方法Method。再通过Methd获得出入参的Class信息。

此外,还可以在mvn插件中集成此发明并运行生成markdown接口文档。

步骤1,在项目接口模块的pom文件中集成mvn插件;

步骤2,编写完成接口类;

步骤3,运行插件生成markdown文档并保存到文档服务器中。

具体的,在自定义的mvn插件中调用上述方法获取到接口类的源信息,和javadoc中获取的类、方法的注释信息,并根据一定的格式为每个接口类生成一个markdown格式的文档,插件中再集成通过模拟请求将markdown文档保存到文档服务器的功能,将插件集成在接口项目的pom文件中,运行插件就可以自动的生成接口文档并保存到文档服务器中。

可见,本实施例可以通过对代码文件和依赖包文件进行动态编译,确定到接口信息,并确定接口方法及参数,实现接口解析,而不是运行该代码实现解析,提高了解析效率。

下面对本申请实施例提供的项目接口解析装置进行介绍,下文描述的项目接口解析装置与上文描述的项目接口解析方法可相互对应参照。

请参考图2,图2为本申请实施例所提供的一种项目接口解析装置的结构示意图。

本实施例中,该装置可以包括:

代码文件获取模块100,用于获取目标项目的所有代码文件;

依赖包获取模块200,用于通过mvn对目标项目进行依赖树结构分析,得到所有依赖包文件;

动态编译模块300,用于对所有代码文件和所有依赖包文件进行动态编译,得到所有接口类信息;

信息获取模块400,用于根据所有接口类信息确定对应的接口方法及参数。

可选的,该动态编译模块200,可以包括:

编译单元,用于根据getTask方法对所有代码文件和所有依赖包文件进行动态编译;

编译判断单元,用于判断动态编译是否成功;

类信息获取单元,用于当动态编译成功时,进行遍历处理,得到所有类信息;

类信息筛选单元,用于根据接口类判断函数对所有类信息进行筛选,得到所有接口类信息。

可选的,该装置还可以包括:

mvn配置模块,用于安装mvn环境,并对mvn环境进行环境变量配置。

本申请实施例还提供一种服务器,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如以上实施例所述的项目接口解析方法的步骤。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如以上实施例所述的项目接口解析方法的步骤。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的一种项目接口解析方法、项目接口解析装置、服务器以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号