掌桥专利:专业的专利平台
掌桥专利
首页

基于注释生成代码的方法、装置及存储介质

文献发布时间:2023-06-19 11:39:06


基于注释生成代码的方法、装置及存储介质

技术领域

本申请涉及计算机技术领域,尤其涉及一种基于注释生成代码的方法、装置及存储介质。

背景技术

数据传输对象(Data Transfer Object,DTO)是一种设计模式之间传输数据的软件应用系统,即DTO为负责在应用层和展示层之间传递数据的对象。数据传输目标往往是数据访问对象从数据库中检索数据。数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为,除了存储和检索的数据(访问和存取器),而DTO用于将数据封装成普通的JavaBeans,在J2EE多个层次之间传输。

在数据库技术中,一般使用数据传输对象(Data Transfer Object,DTO)表达对象接口的入参和出参,用实体(Entity)或其他类似概念表达数据库的持久化对象。很多场景下,基于数据库的处理流程会跨越多层,由于DTO和Entity的属性存在很多相同之处,因此,在层与层之间需要对DTO和Entity这两个java对象进行转换。

目前,主要采用基于注解处理器的映射工具(例如selma)来实现在层与层之间需要对DTO和Entity这两个java对象进行转换。具体来说,基于注解处理器的selma编写专用对象接口,编译时生成实现类,基于实现类实现在层与层之间需要对DTO和Entity这两个java对象进行转换。但是,需要专为selma编写一个专用对象接口,无法直接对DTO和Entity进行转换。

发明内容

本申请实施例提供了一种基于注释生成代码的方法、装置及存储介质,旨在解决现有技术中无法直接对DTO和Entity进行转换的问题。

第一方面,本申请实施例提供了一种基于注释生成代码的方法,其包括:

获取待转换为代码的接口文档;

确定所述接口文档中待转换的第一目标类,以及确定第二目标类;

对所述第一目标类设置第一注释标签和第二注释标签,所述第一注释标签用于指示所述第一目标类为待转换的类,所述第二注释标签用于指示将所述第一目标类转换为所述第二目标类;

根据所述第二注释标签将所述第一目标类转换为所述第二目标类;

将所述第一注释标签、所述第二注释标签、所述第一目标类和所述第二目标类对所述接口文档进行编译,以得到所述接口文档对应的源代码文件。。

第二方面,本申请实施例提供了一种代码生成装置,其包括:

获取模块,用于获取待转换为代码的接口文档;

处理模块,用于确定所述获取模块获取的所述接口文档中待转换的第一目标类,以及确定第二目标类;对所述第一目标类设置第一注释标签和第二注释标签,所述第一注释标签用于指示所述第一目标类为待转换的类,所述第二注释标签用于指示将所述第一目标类转换为所述第二目标类;根据所述第二注释标签将所述第一目标类转换为所述第二目标类;将所述第一注释标签、所述第二注释标签、所述第一目标类和所述第二目标类对所述接口文档进行编译,以得到所述接口文档对应的源代码文件。

第三方面,本申请实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的基于注释生成代码的方法。

第四方面,本申请实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的基于注释生成代码的方法。

本申请实施例提供了一种基于注释生成代码的方法、装置、设备及存储介质,针对跨越多层的场景下,对层与层之间的数据传输对象中的类设置第一注释标签和第二注释标签,然后根据第一注释标签将第一目标类转换为第二目标类,然后根据所述第一注释标签、所述第二注释标签、所述第一目标类和所述第二目标类对所述接口文档进行编译,以得到所述接口文档对应的源代码文件。由于采用了自定义注释标签,所以无需编写额外的辅助类来帮助生成转换代码。此外,由于本申请采用自定义注释标签来帮助生成转换代码,所以无需编写额外的专用对象接口,所以能够做到几乎不引入依赖,减少了测试、部署各环节依赖引入的损耗,同时也会降低运行时虚拟机的负担。

附图说明

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

图1为本申请实施例提供的基于注释生成代码的方法的流程示意图;

图2为本申请实施例提供的第一目标类转换为第二目标类的示意图;

图3为本申请实施例提供的代码生成装置的示意性框图;

图4为本申请实施例提供的计算机设备的示意性框图。

具体实施方式

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

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

请参阅图1,图1为本申请实施例提供的基于注释生成代码的方法的流程示意图,该基于注释生成代码的方法应用于服务器中,该方法通过安装于服务器中的应用软件进行执行。如图1所示,该方法包括步骤S101~S105。

S101、获取待转换为代码的接口文档。

其中,接口文档是指应用层和展示层之间传递数据的文档,即在软件项目开发过程中调用接口来完成相应的软件设计时需要的文档,也可称作代码。本申请实施例中,接口文档可为DTO。表现层与应用层之间是通过DTO进行交互,DTO是没有行为的POCO对象,其目的只是为了对领域对象进行数据封装,实现层与层之间的数据传递,即DTO注重数据,直接将领域对象的行为暴露给表现层,DTO面向界面UI。

本申请实施例中,接口文档可用于项目开发过程中前后端工程师有一个统一的文件进行沟通交流开发,以及用于项目维护中或者项目人员更迭,方便后期人员查看、维护。接口文档还可以进行接口验证。具体来说,前后端和测试对应的接口使用。由于现在一款程序的开发实现的前后端分离,前端和后端直接的数据传输和交互都是通过接口来进行操作的。。

前端:通过后端人员给的接口文档进行Ajax的设计,通过接口向服务发送请求,获取响应的数据,然后通过返回的数据进行下一步的页面跳转和显示。

后端:通过编写接口,为前端提供与服务器和数据请求交互的通道。编写对应的接口,需要传递的参数,参数类型等等。然后生成接口文档,分享给前端,让其按照接口文档编写对应的Ajax。

测试:可以通过接口文档,进行接口验证,查看后端开发的接口和前端所写的Ajax是否对应,有没有出错的接口,还可通过接口流程测试,知道整个系统之间的接口是否是相对应的,有没有接口是不对的,或者没有正常运行。

接口一般分为程序内部的接口和系统对外的接口。以下分别介绍:

系统对外的接口:比如要从其他网站或服务器上获取资源或信息,而其他网站或服务器不会共享数据库,而是只提供一个已经写好的方法来获取数据,因此,非该网站或服务器的人员需要引用其提供的接口,才能使用该写好的方法,从而达到数据共享的目的。

程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如某论坛系统有登录模块、发帖模块等,如果要在该论坛系统发帖,就必须先登录,那么登录模块、发帖模块之间就需要有交互,因此,该论坛系统会抛出一个接口,以供内部系统进行调用。

S102、确定所述接口文档中待转换的第一目标类,以及确定第二目标类。

其中,第一目标类是指需要转换的类,第二目标类是指转换的目标类。第一目标类可为至少一个,具体数量本申请实施例不作限定。

S103、对所述第一目标类设置第一注释标签和第二注释标签。

其中,所述第一注释标签用于指示所述第一目标类为待转换的类,第一注释标签关联对应的触发事件,该触发事件为触发将第一目标类转换为第二目标类的事件。所述第二注释标签用于指示将所述第一目标类转换为所述第二目标类。

具体来说,由于单元测试中所涉及的类很多,只有部分类需要被转换为其他类,为实现自动化测试以及提高测试效率,可先根据测试需求确定第一目标类是待进行转换为其他类的触发事件,且确定将第一目标类要转换为的类是第二目标类之后,即可确定该第一目标类满足预设的注释标签设置条件。那么,可对第一目标类添加一个第一注释标签和第二注释标签,以便于后续编译流程中,当遍历到该第二目标类的时候即可触发第一注释标签所关联的触发事件,即触发将第一目标类转换为第二目标类的事件。

一些实施方式中,为了进一步方便数据交互和提高数据处理效率,还可以按需组织数据对象DTO,只组织接口文档页面需要的目标字段,一方面避免传输整个表的字段,进而提高安全性,另一方面提高传输效率。

具体来说,可以使用DTO类继承entity类,在特定DTP类(这些特定DTO类不需要被转换为其他类)中放入一个特定业务字段,并对应提供对应的使用方法(例如包括get方法和set方法),以及分别为这些特定业务字段设置第三注释标签,这些特定业务字段的功能等同于数据库中经过预处理的数据库字段的功能。当在业务逻辑层或者交互层使用到数据库中不存在的字段时,即可通过第三注释标签识别这类特定业务字段,然后使用这些特定业务字段进行数据交互。

一些实施方式中,可在所述第一目标类上以javadoc格式书写所述第一注释标签和所述第二注释标签。这种情况下,所述第一注释标签和所述第二注释标签均为自定义注释标签。

另一些实施方式中,还可对所述第一目标类设置辅助信息,根据所述辅助信息生成第一代码。例如,可以附加一些额外信息,来辅助生成其它非必需信息。

本申请实施例中,也可将对所述第一目标类设置第一注释标签和第二注释标签看作是对接口文档进行文档注释。其中,文档注释只负责描述类(class)、接口(interface)、方法(method)、构造器(constructor)、成员字段(field)。相应地,文档注释必须写在类、接口、方法、构造器、成员字段前面,而写在其他位置,比如函数内部,是无效的文档注释。文档注释采用HTML语法规则书写,支持HTML标记(tag),同时也有一些额外的辅助标记,这些标记的作用是为了javadoc工具更好地生成最终文档。

S104、根据所述第二注释标签将所述第一目标类转换为所述第二目标类。

具体来说,是将第一目标类中与第二目标类相同的字段进行转换,可统统与将第二目标类中的字段(或属性)a赋值给第一目标类中的字段(或属性)a。一些实施方式中,若第一目标类与第二目标类为相同结构且类名不同,则可采用BeanUtils的copyProperties方法将所述第一目标类转换为所述第二目标类,具体可参考如图2所示的第一目标类转换为第二目标类的示意图。或者,采用json工具先将第一目标类换成json串,再将json串转成第二目标类。

S105、将所述第一注释标签、所述第二注释标签、所述第一目标类和所述第二目标类对所述接口文档进行编译,以得到所述接口文档对应的源代码文件。

一些实施方式中,S105可基于生成器实现,例如,可启动生成器,生成器将接口文档编译得到源代码文件后,会将源代码文件输出到指定目录,同时将测试代码输出到指定的测试目录。

一些实施方式中,在得到所述接口文档对应的源代码文件之后,所述方法还包括:

将所述源代码文件添加至目标目录,以及将测试代码添加至测试目录;

基于所述测试代码对所述源代码文件进行单元测试,以测试所述源代码文件的正确性。

例如,通过运行单元测试,即通过自动生成的单元测试类,保证生成代码的正确性。比如类型是否正确转换,名称映射是否正确,是否是深复制。这个对于修改后的验证提供极大的便利。

其中,单元测试包括接口测试,本申请不对此做区分。接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。

一些实施方式中,为进一步保证类的转换成功率,在所述根据所述第二注释标签将所述第一目标类转换为所述第二目标类之前,所述方法还包括:

(1)检测当前的应用环境;

(2)当检测到所述应用环境中存在特定依赖关系的测试项时,生成特定转换类。

具体来说,若所述应用环境中存在特定依赖关系,则生成与所述特定依赖关系对应的特定转换类,例如,该特定转换类可包括集成spring元素的特定转换类。

其中,特定依赖关系是指两种类之间的使用关系,一种类的使用必须基于生成类运行。例如,特定依赖关系是指一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A,具体表现在代码层面,为类B作为参数被类A在某个方法中使用。若在编译时无对应的生成类,则会报错而中断运行。

(3)将所述特定转换类注入所述接口文档。

例如,生成集成spring元素的特定转换类后,将特定转换类注入所述接口文档中。

相应的,(4)基于所述特定转换类启动所述生成器。

例如,在发现特定依赖关系时,可生成对应地特定代码,比如可以生成集成spring元素的转换类,由于spring框架支持构造器参数注入和setter方法属性注入,因此无需接口注入,那么,在运行该接口文档中存在特定依赖关系的测试项时,可以不依赖接口注入,而是基于上述特定转换类实现属性注入,因此在编译时不会因为生成类不存在而报错,在运行时因为spring框架的注入而正确运行。

因此,在将所述第一注释标签、所述第二注释标签、所述第一目标类和所述第二目标类对所述接口文档进行编译的过程中,若不存在生成类,则调用所述特定转换类,以执行将第一目标类转换为第二目标类的操作。

可见,通过该特定转换类,无需编写额外的接口,做到几乎不引入依赖,减少测试、部署各环节依赖引入的损耗,同时也会降低运行时虚拟机的负担。

一些实施例中,为帮助生成器更正确地生成源代码文件,还可以对第一目标类中的字段进行标记,具体来说,将所述第一注释标签、所述第二注释标签、所述第一目标类和所述第二目标类对所述接口文档进行编译,以得到所述接口文档对应的源代码文件之前,本申请还包括:

确定所述第一目标类中符合预设注释条件的目标业务字段;

为所述目标业务字段生成注释标记字段。

例如,第一目标类中的某些字段需要忽略,或者某些字段在两个类名称不一致(例如第一目标类中的字段a在第一目标类和第三目标类中的名称不一致),或者对应的字段类型不一致,为提高源代码文件的准确性,出现此类情形时,则需要对第一目标类进行额外的标记,通过这些额外的标记即可帮助生成器更正确地生成源代码文件。

本申请实施例中,针对跨越多层的场景下,对层与层之间的数据传输对象中的类设置第一注释标签和第二注释标签,然后根据第一注释标签将第一目标类转换为第二目标类,然后根据所述第一注释标签、所述第二注释标签、所述第一目标类和所述第二目标类对所述接口文档进行编译,以得到所述接口文档对应的源代码文件。一方面中,由于采用了自定义注释标签,所以无需编写额外的辅助类来帮助生成转换代码。由于本申请采用自定义注释标签来帮助生成转换代码,所以无需编写额外的接口,所以能够做到几乎不引入依赖,减少了测试、部署各环节依赖引入的损耗,同时也会降低运行时虚拟机的负担。

另一方面中,本方案可以智能地检测应用环境,在发现特定依赖时生成对应地特殊代码,比如可以生成集成spring元素的转换类,由于spring框架支持构造器参数注入和setter方法属性注入,因此无需接口注入,那么,在运行该接口文档中存在特定依赖关系的测试项时,可以不依赖接口注入,而是基于上述特定转换类实现属性注入,因此在编译时不会因为生成类不存在而报错导致编译中断,即在运行该接口文档中存在特定依赖关系的测试项时会因为spring框架的注入而正确运行,因此,能够做到高内聚,低耦合。生成与应用本身代码天衣无缝的集成的源代码文件。由此可见,本申请得到的源代码文件具有可测试性和可读性。其中,可测试性体现在:自动生成的测试类省去开发者负担的同时保证了正确性。可读性则体现在:编写的是注释,增加代码可读性,注释即代码,符合开发设计中的自主原则。

本申请实施例还提供一种代码生成装置,该代码生成装置用于执行前述基于注释生成代码的方法的任一实施例。具体地,请参阅图3,图3是本申请实施例提供的代码生成装置30的的一种示意性框图。该代码生成装置30可以配置于服务器中。

如图3所示,代码生成装置30包括:获取模块301和处理模块302。

获取模块301,用于获取待转换为代码的接口文档;

处理模块302,用于确定所述接口文档中待转换的第一目标类,以及确定第二目标类;对所述第一目标类设置第一注释标签和第二注释标签,所述第一注释标签用于指示所述第一目标类为待转换的类,所述第二注释标签用于指示将所述第一目标类转换为所述第二目标类;根据所述第二注释标签将所述第一目标类转换为所述第二目标类;将所述第一注释标签、所述第二注释标签、所述第一目标类和所述第二目标类对所述接口文档进行编译,以得到所述接口文档对应的源代码文件。

在一实施例中,所述处理模块302得到所述接口文档对应的源代码文件之后,还用于:

将所述源代码文件添加至目标目录,以及将测试代码添加至测试目录;

基于所述测试代码对所述源代码文件进行单元测试,以测试所述源代码文件的正确性。

在一实施例中,所述第一注释标签和所述第二注释标签均为自定义注释标签;所述处理模块302对所述第一目标类设置第一注释标签和第二注释标签之前,还用于:

若根据测试需求确定第一目标类是待进行类转换的触发事件,且确定将第一目标类要转换为的类是第二目标类,则确定该第一目标类满足预设的注释标签设置条件;

对所述第一目标类设置所述第一注释标签和所述第二注释标签;

将所述第一注释标签与触发事件绑定,所述触发事件为将所述第一目标类转换为所述第二目标类;

当遍历到所述第二目标类时,触发与所述第一注释标签所关联的触发事件,以根据所述第二注释标签将所述第一目标类转换为所述第二目标类。

在一实施例中,所述处理模块302在所述根据所述第二注释标签将所述第一目标类转换为所述第二目标类之前,还用于:

检测当前的应用环境;

当检测到所述应用环境中存在特定依赖关系的测试项时,生成特定转换类;

将所述特定转换类注入所述接口文档;

基于所述特定转换类启动所述生成器。

在一实施例中,所述处理模块302还用于:

在所述特定转换类中放入一个特定业务字段,并配置所述特定业务字段的使用方法;

为所述特定业务字段设置第三注释标签,使得所述特定业务字段的功能模拟数据库中经过预处理的数据库字段的功能;

当在业务逻辑层或者交互层使用到所述数据库中不存在的字段时,通过所述第三注释标签识别所述特定业务字段;

使用所述特定业务字段进行数据交互。

一些实施例中,所述处理模块302将所述第一注释标签、所述第二注释标签、所述第一目标类和所述第二目标类对所述接口文档进行编译,以得到所述接口文档对应的源代码文件之前,还用于:

确定所述第一目标类中符合预设注释条件的目标业务字段;

为所述目标业务字段生成注释标记字段。

一些实施例中,所述处理模块302根据所述第二注释标签将所述第一目标类转换为所述第二目标类之前,还用于:

对所述第一目标类设置辅助信息;

根据所述辅助信息生成第一代码。

该代码生成装置30无需编写额外的辅助类来帮助生成转换代码,能够做到几乎不引入依赖,减少了测试、部署各环节依赖引入的损耗,同时也会降低运行时虚拟机的负担。

上述代码生成装置30可以实现为计算机程序的形式,该计算机程序可以在如图4所示的计算机设备上运行。

请参阅图4,图4是本申请实施例提供的计算机设备的示意性框图。该计算机设备400是服务器,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。

参阅图4,该计算机设备400包括通过系统总线401连接的处理器402、存储器和网络接口405,其中,存储器可以包括非易失性存储介质403和内存储器404。

该非易失性存储介质403可存储操作系统4031和计算机程序4032。该计算机程序4032被执行时,可使得处理器402执行基于注释生成代码的方法。

该处理器402用于提供计算和控制能力,支撑整个计算机设备400的运行。

该内存储器404为非易失性存储介质403中的计算机程序4032的运行提供环境,该计算机程序4032被处理器402执行时,可使得处理器402执行基于注释生成代码的方法。

该网络接口405用于进行网络通信,如提供数据信息的传输等。本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备400的限定,具体的计算机设备400可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

其中,所述处理器402用于运行存储在存储器中的计算机程序4032,以实现本申请实施例公开的基于注释生成代码的方法。

本领域技术人员可以理解,图4中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其他实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图4所示实施例一致,在此不再赘述。

应当理解,在本申请实施例中,处理器402可以是中央处理单元(CentralProcessing Unit,CPU),该处理器402还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

在本申请的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质。该计算机可读存储介质存储有计算机程序,其中计算机程序被处理器执行时实现本申请实施例公开的基于注释生成代码的方法。

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

在本申请所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

相关技术
  • 基于注释生成代码的方法、装置及存储介质
  • 代码注释文档的生成方法、装置、电子设备及存储介质
技术分类

06120113008503