CN115878163A - 自动注解方法、终端设备及计算机可读存储介质 - Google Patents
自动注解方法、终端设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115878163A CN115878163A CN202211637830.6A CN202211637830A CN115878163A CN 115878163 A CN115878163 A CN 115878163A CN 202211637830 A CN202211637830 A CN 202211637830A CN 115878163 A CN115878163 A CN 115878163A
- Authority
- CN
- China
- Prior art keywords
- annotation
- information
- parameter
- automatic
- parameters
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了自动注解方法、终端设备及计算机可读存储介质,该自动注解方法通过设置注解类型参数标识需要进行自动注解的元素,使得遍历待注解项目的源代码时能够根据标识获取对应的元素信息,在元素信息包括方法参数时,基于注解类型参数为方法参数添加对应的注解信息,以实现自动注解,无需开发人员手动添加注解,提高开发人员的研发效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及自动注解方法、终端设备及计算机可读存储介质。
背景技术
在系统开发以及系统升级开发过程中,开发人员有时会使用MyBatis作为持久层框架,并通过数据库操作对象(DataBase Access Object,DAO)访问面向对象的数据库接口,以对数据库中的数据进行增删改查等操作。
在开发和使用DAO类对象的过程中,开发人员在引入和使用方法参数时,均需在该方法参数前加上用于赋值的Param注解,并且在使用Javac对项目源代码进行编译的过程中,还需开发人员手动添加对应的parameters参数,使得编译生成的字节码能够保留原始的方法参数名称,不利于提高开发人员的研发效率。
发明内容
为解决上述技术问题,本申请提供了一种自动注解方法、终端设备及计算机可读存储介质。
为解决上述问题,本申请提供一种自动注解方法,包括:
获取注解类型参数,以通过所述注解类型参数标识需要进行自动注解的元素;遍历待注解项目的源代码,以获取所述源代码中包括所述注解类型参数的元素信息;在所述元素信息包括所述方法参数时,基于所述注解类型参数为所述方法参数添加对应的注解信息,以实现自动注解。
其中,所述注解类型参数包括用户定义的需要添加注解的方法类;所述遍历待注解项目的源代码,以基于所述注解类型参数获取所述源代码中对应的元素信息的步骤,包括:获取所述源代码对应的抽象代码树,遍历所述抽象代码树,以获取所述抽象代码树的每一节点的第一元素信息;在所述第一元素信息中获取包括所述注解类型参数的第二元素信息;在所述节点的第二元素信息为方法类时,遍历所述节点,以获取所述节点的参数信息,直至获取所有方法类节点的参数信息。
其中,所述在所述节点的第二元素信息为方法类时,遍历所述节点,以获取所有方法类节点的参数信息的步骤之后,所述自动注解方法还包括:获取所述参数信息对应的导入信息;在所述导入信息不存在注解相关信息时,为所述导入信息添加对应的所述注解相关信息;基于所述注解相关信息,获取所述导入信息对应的方法参数;为所述方法参数添加对应的注解信息,以实现自动注解。
其中,所述获取所述参数信息对应的导入信息的步骤之后,所述自动注解方法还包括:在所述导入信息存在所述注解相关信息时,获取所述注解相关信息对应的方法参数;为所述方法参数添加对应的注解信息,以实现自动注解。
其中,所述为所述方法参数添加对应的注解信息,以实现自动注解的步骤,包括:判断所述方法参数是否存在所述注解信息;在所述方法参数不存在所述注解信息时,为所述方法参数添加对应的所述注解信息,直至所有所述方法类节点的参数信息完成注解。
其中,所述获取注解类型参数,以通过所述注解类型参数标识需要进行自动注解的元素的步骤之前,所述自动注解方法包括:对所述待注解项目的源代码进行编译,以获取所述抽象代码树;所述在所述元素信息包括方法参数时,基于所述注解类型参数为所述方法参数添加对应的注解信息,以实现自动注解的步骤之后,所述自动注解方法还包括:根据注解后的所述抽象代码树,生成字节码文件,以使所述待注解项目编译完成。
其中,所述获取注解类型参数,以通过所述注解类型参数标识需要进行自动注解的元素的步骤,包括:通过注解处理器生成自定义注解,以根据所述自定义注解获取所述注解类型参数。
其中,所述注解信息用于为所述方法参数进行赋值,所述元素信息用于数据库的数据操作。
为解决上述问题,本申请提供一种终端设备,包括处理器以及与所述处理器连接的存储器,其中,所述存储器中存储有程序数据,所述处理器调取所述存储器存储的所述程序数据,以执行如上任一项所述的自动注解方法。
为解决上述问题,本申请提供一种计算机可读存储介质,存储有程序指令,所述程序指令被执行以实现如上任一项所述的自动注解方法。
区别于现有技术,本申请的自动注解方法通过设置注解类型参数标识需要进行自动注解的元素,使得遍历待注解项目的源代码时能够根据标识获取对应的元素信息,在元素信息包括方法参数时,基于注解类型参数为方法参数添加对应的注解信息,以实现自动注解,无需开发人员手动添加注解,提高开发人员的研发效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请提供的自动注解方法的一实施例的流程示意图;
图2是本申请提供的自动注解方法的另一实施例的流程示意图;
图3是本申请提供的自动注解方法的又一实施例的流程示意图;
图4是本申请提供的终端设备的一实施例的框架示意图;
图5是本申请提供的终端设备的另一实施例的框架示意图;
图6是本申请提供的计算机可读存储介质的一实施例的框架示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动情况下所获得的所有其他实施例,均属于本申请保护的范围。
需要说明,若本申请实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,若本申请实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
为了便于理解,本申请对下文涉及的一些定义进行解释:
Javac是Java语言编程编译器,全称为Javacompiler,Javac可以隐式编译一些没有在命令行中提及的源文件,当编译源文件时,编译器常常需要它还没有识别出的类型的有关信息,对于源文件中使用、扩展或实现的每个类或接口,编译器都需要其元素信息,Java源代码通过Javac编译成可以在Java虚拟机上运行的字节码文件,该字节码文件可以在多种平台上不加修改地运行;
注解用于对程序中的类、方法、变量、接口等进行修饰,可以通过自定义注解对字节码文件进行修改;
MyBatis是一个持久层框架,用于通过XML或注解配置自定义SQL、存储过程以及高级映射;
数据库操作对象(DataBase Access Object,DAO)是用于对数据库中的数据进行增删改查等数据操作的类。
目前,在系统开发以及系统升级开发过程中,开发人员有时会使用MyBatis作为持久层框架,并通过DAO类访问面向对象的数据库接口,以对数据库中的数据进行增删改查等操作。
在开发和使用DAO类对象的过程中,由于Javac的编译过程中不会保留对应的方法参数名称,使得MyBatis无法获取代码文件中的方法参数的名称,现有的解决MyBatis无法获取名称的方法包括下列两种:
第一种解决方法是在编写DAO类的SQL(Structured Query Language)语句时不使用实际的参数名称,而是添加“#{参数名称}”的语句来表示具体的参数名,但上述语句对于SQL语句而言并无意义,会导致编写的SQL语句可读性较差,不利于开发人员的研发和复盘。
第二种解决方法是在使用Javac进行源代码编译时,在源代码中加入-parameters参数,以使得Javac编译生成的字节码能够保留方法参数的名称,但该种方法需要修改Javac的编译参数,使得编译参数仅适用于该开发环境,各环境的通用性不足。
有鉴于此,本申请提出了一种自动注解方法,该自动注解方法可以应用于Maven等Java开发管理工具,用于对开发人员编写的代码文件添加自定义的注解,而无需对项目的源代码文件进行更改,提高源代码文件的通用性,便于项目在后续的更新版本时能够根据该自动注解方法生成对应的注解语句,提高开发人员的研发效率。
其中,该自动注解方法可以应用于终端设备,该终端设备可以应用于计算机技术领域的软件开发过程,例如,该终端设备所开发的软件项目可以应用于金融科技,软件项目可以用于电子商务、电子支付、证券、电子银行、税务交易、信用卡、网络购物、保险等业务场景中,在此不做具体限定。
其中,本申请的终端设备可以为服务器,也可以为由服务器和本地终端相互配合的系统。相应地,终端设备包括的各个部分,例如各个单元、子单元、模块、子模块可以全部设置于服务器中,也可以分别设置于服务器和本地终端中。
进一步地,上述服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块,例如用来提供分布式服务器的软件或软件模块,也可以实现成单个软件或软件模块,在此不做具体限定。在一些可能的实现方式中,本申请实施例的自动注解方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
请参见图1,图1是本申请提供的自动注解方法的一实施例的流程示意图。如图1所示,在本实施例中,该自动注解方法包括以下步骤:
步骤S11:获取注解类型参数,以通过注解类型参数标识需要进行自动注解的元素。
注解类型参数包括用户预设的需要添加注解的方法参数,注解类型参数通过自定义注解的方式引入。具体的,该自定义注解的ElementType的类型为type类型,用于标识作用目标的类型,以增强代码提示以及其它功能。
可以理解的,在本实施例中,通过使用type类型的注解类型参数,对需要进行自动注解的元素,元素可以理解为代码文件中的类(class),在可选的实施方式中,元素包括但不局限于DAO类,注解类型参数用于标识需要进行自动注解的DAO类。
其中,注解类型参数还用于配置需要添加的注解类型,例如,在元素为DAO类时,注解类型参数用于添加param注解;根据具体的业务需求,自定义的注解类型参数还可以用于添加其他类型的注解,在此不做具体限定。
步骤S12:遍历待注解项目的源代码,以获取源代码中包括注解类型参数的元素信息。
在获取注解类型参数后,获取待注解项目的源代码,并在获取源代码时按照注解类型参数对源代码中的需要进行自动注解的元素进行标记,以获取源代码中包括注解类型参数的元素信息。
可以理解的,元素信息可以包括该元素的导入信息、注解相关信息、方法参数信息等,导入信息为该元素的参数导入(import)的相关信息;注解相关信息为使用import导入参数时,导入的方法参数的相关信息,例如,在使用MyBatis作为持久层框架并引入多个方法参数时,需要通过“import org.apache.ibatis.annotations.Param”来使用对应的方法参数,该代码即为注解相关信息;方法参数信息包括该元素(class)的所有参数以及具体的参数值。
步骤S13:在元素信息包括方法参数时,基于注解类型参数为方法参数添加对应的注解信息,以实现自动注解。
在获取包括注解类型参数的元素信息后,判断元素信息是否存在方法参数,在元素信息包括方法参数时,基于注解类型参数定义的注解类型为方法参数添加对应的注解信息,以实现自动注解;例如,在注解类型参数定义的注解类型为param注解时,在方法参数上添加param注解。
在本申请实施例中,该自动注解方法通过设置注解类型参数标识需要进行自动注解的元素,使得遍历待注解项目的源代码时能够根据标识获取对应的元素信息,在元素信息包括方法参数时,基于注解类型参数为方法参数添加对应的注解信息,以实现自动注解,无需开发人员手动添加注解,提高开发人员的研发效率。
在一实施例中,注解类型参数包括用户定义的需要添加注解的方法类,源代码为抽象代码树。
请参见图2,图2是本申请提供的自动注解方法的另一实施例的流程示意图。如图2所示,步骤S12还包括以下步骤:
步骤S21:获取源代码对应的抽象代码树,遍历抽象代码树,以获取抽象代码树的每一节点的第一元素信息。
具体的,Javac编译用于分析待注解项目的源代码并生成一棵抽象的字节码语法树(abstract syntax code,AST),可以理解的,抽象代码树AST为源代码的抽象语法结构的树状表示,每一节点的第一元素信息包括该节点的所有元素的相关信息,例如,第一元素信息包括该节点的类型信息、参数信息等。在可选的实施方式中,可以通过JCClassDecl获取抽象代码树的所有节点的第一元素信息。
步骤S22:在第一元素信息中获取包括注解类型参数的第二元素信息。
获取所有节点的第一元素信息后,通过注解类型参数,在第一元素信息中获取第二元素信息,第二元素信息为该节点中具有需要进行自动注解的元素的相关信息,例如,第二元素信息为需要注解的DAO类的信息。
步骤S23:在第二元素信息为方法类时,遍历节点,以获取节点的参数信息,直至获取所有方法类节点的参数信息。
具体的,在获取包括注解类型参数的第二元素信息后,根据第二元素信息的元素类型,判断该节点是否为方法类节点,在第二元素信息为方法类时,遍历该节点,以获取该节点的参数信息,直至获取所有方法类节点的参数信息。
获取所有方法类节点的参数信息后,可以判断该方法类节点的参数信息是否存在注解信息,以为不存在注解信息的参数信息添加相应的注解。例如,在判断到DAO类节点的参数信息不存在param注解时,为该参数添加对应的param注解,以通过param注解使得Javac编译时能够保留DAO类节点的参数名称。
在本实施例中,通过遍历抽象代码树,获取包括注解类型参数的第二元素信息,并基于注解类型参数为方法参数添加对应的注解信息,以实现自动注解,无需开发人员手动添加注解,提高开发人员的研发效率。
在一实施例中,请参见图3,图3是本申请提供的自动注解方法的又一实施例的流程示意图。如图3所示,步骤S12之后,该自动注解方法还包括以下步骤:
步骤S31:获取参数信息对应的导入信息。
具体的,待注解元素的参数信息中包括对应的导入信息,导入信息可以理解为在待注解项目的源代码中用于说明需要使用的元素的导入语句,例如,导入信息包括import参数,import参数用于说明使用的元素,以在后续使用某个元素时可以注解使用元素名称来指定该元素。在本实施例中,通过获取导入信息,可以获取源代码中所有使用的元素,以进而获取该元素的相关信息。
步骤S32:在导入信息不存在注解相关信息时,为导入信息添加对应的注解相关信息。
具体的,在使用import参数来表示元素导入时,例如,在通过improt参数进行多个参数的导入时,如果导入信息不设置相关的注解信息时,示例性地,导入信息没有添加“import org.apache.ibatis.annotations.Param”,此时,由于不存在注解相关信息,Javac编译过程没有识别注解,会导致元素导入的顺序错误引起的报错。因此,在终端设备判断到导入信息不存在注解相关信息时,需为导入信息添加对应的注解相关信息,以使得import参数的元素导入可以正常运行。
步骤S33:基于注解相关信息,获取导入信息对应的方法参数。
基于添加的注解相关信息,获取导入信息对应的方法参数。其中,此处的方法参数为导入信息中所引用的方法参数。
步骤S34:为方法参数添加对应的注解信息,以实现自动注解。
具体的,注解类型参数包括配置的注解类型,根据注解类型参数定义的注解类型,为方法参数添加对应的注解信息,以实现自动注解。例如,在注解类型参数配置用于添加param注解时,为方法参数添加对应的param注解。
在本实施例中,通过获取参数信息对应的导入信息,在导入信息不存在注解相关信息时,为导入信息添加对应的注解相关信息,以使得import参数的元素导入可以正常运行,并实现自动注解,而无需开发人员手动添加注解,提高开发人员的研发效率。
在一实施例中,步骤S21之后,该自动注解方法还包括:在导入信息存在注解相关信息时,获取注解相关信息对应的方法参数;基于注解类型参数为方法参数添加对应的注解信息,以实现自动注解。
具体的,在improt导入信息存在注解相关信息时,例如,导入信息包括“import org.apache.ibatis.annotations.Param”时,直接执行上述实施例的步骤S33-步骤S34,以为方法参数添加对应的注解信息,实现自动注解,而无需开发人员手动添加注解,提高开发人员的研发效率。
在一实施例中,上述为方法参数添加对应的注解信息,以实现自动注解的步骤包括:判断方法参数是否包括注解信息;在方法参数不存在注解信息时,为方法参数添加对应的注解信息,直至所有方法类节点的参数信息完成注解。
具体的,在方法参数包括注解信息时,即该方法参数已经进行了相关的注解,则获取下一方法类节点的方法参数,继续进行自动注解;在方法参数不存在注解信息时,为该方法参数添加对应的注解信息,并获取下一方法类节点的方法参数,继续执行判断步骤,直至所有方法类节点的参数信息完成注解。
在一实施例中,在步骤S11之前,该自动注解方法还包括:对待注解项目的源代码进行编译,以获取抽象代码树。在步骤S13之后,该自动注解方法还包括:根据注解后的抽象代码树,生成字节码文件,以使待注解项目编译完成。
具体的,在对待注解项目的源代码进行编译时,对源代码进行解析并填充符号表,以获取源代码对应的抽象代码树。获取抽象代码树后,通过遍历抽象代码树,获取每个方法类节点的参数信息,以对方法参数进行自动注解,并把注解信息插入到抽象代码树的结构中。在注解完成后,根据注解后的抽象代码树生成对应的字节码文件,以给元素增加新的代码块,使待注解项目编译完成后能够保留元素名称。
可以理解的,由于注解信息在抽象代码树的结构中体现,而非直接对源代码进行修改,提高了源代码的通用性,便于后续在对待注解项目进行版本更新时能够直接复用部分源代码并生成对应注解,避免了在多环境下部署项目时的配置遗漏,提高了开发人员的研发效率。
在一实施例中,步骤S11还包括以下步骤:通过注解处理器生成自定义注解,以根据自定义注解获取注解类型参数。
具体的,注解处理器需要继承AbstractProcessor类来实现自定义注解,注解处理器运行在步骤S12之前,注解处理器用于生成自定义注解,自定义注解用于通过标识需要进行自动注解的元素,并获取注解类型参数,使得遍历抽象代码树后可以获取每个方法类节点的参数信息。
在一实施例中,注解信息用于为方法参数进行赋值,元素信息用于数据库的数据操作。具体的,注解信息所使用的注解类包括但不局限于param注解,元素信息包括但不局限于DAO类元素。
请参见图4,图4是本申请提供的终端设备的一实施例的框架示意图。如图4所示,该终端设备100包括处理器101以及与处理器101连接的存储器102,其中,存储器102中存储有程序数据,处理器101调取存储器102存储的程序数据,以执行上述的自动注解方法。
可选地,在一实施例中,处理器101用于执行程序数据以实现如下方法:获取注解类型参数,以通过注解类型参数标识需要进行自动注解的元素;遍历待注解项目的源代码,以获取源代码中包括注解类型参数的元素信息;在元素信息包括方法参数时,基于注解类型参数为方法参数添加对应的注解信息,以实现自动注解。
其中,处理器101还可以称为CPU(Central Processing Unit,中央处理单元)。处理器101可能是一种电子芯片,具有信号的处理能力。处理器101还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器102可以为内存条、TF卡等,可以存储终端设备100中的全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器102中。它根据处理器101指定的位置存入和取出信息。有了存储器102,终端设备100才有记忆功能,才能保证正常工作。终端设备100的存储器102按用途可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。
请参见图5,图5是本申请提供的终端设备的另一实施例的框架示意图。如图5所示,本申请还提供了另一种终端设备100,该终端设备100包括标识模块103、遍历模块104和注解模块105。
标识模块103用于获取注解类型参数,以通过注解类型参数标识需要进行自动注解的元素;遍历模块104用于遍历待注解项目的源代码,以获取源代码中包括注解类型参数的元素信息;注解模块105用于在元素信息包括方法参数时,基于注解类型参数为方法参数添加对应的注解信息,以实现自动注解。
其中,在本申请的一个实施例,终端设备100中的各个模块可以分别或全部合并为一个或若干个单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个子单元,可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述模块是基于逻辑功能划分的,在实际应用中,一个模块的功能也可以由多个单元来实现,或者多个模块的功能由一个单元实现。
请参见图6,图6是本申请提供的计算机可读存储介质的一实施例的框架示意图。如图6所示,该计算机可读存储介质110中存储有能够实现上述所有方法的程序指令111。
在本申请各个实施例中的各功能单元集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在计算机可读存储介质110中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机可读存储介质110在一个程序指令111中,包括若干指令用以使得一台计算机设备(可以是个人计算机,系统服务器,或者网络设备等)、电子设备(例如MP3、MP4等,也可以是手机、平板电脑、可穿戴设备等移动终端,也可以是台式电脑等)或者处理器(processor)以执行本申请各个实施方式方法的全部或部分步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质110(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机可读存储介质110实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机可读存储介质110到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的程序指令111产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机可读存储介质110也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储介质110中的程序指令111产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机可读存储介质110也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的程序指令111提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(可以是个人计算机,服务器,网络设备或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种自动注解方法,其特征在于,包括:
获取注解类型参数,以通过所述注解类型参数标识需要进行自动注解的元素;
遍历待注解项目的源代码,以获取所述源代码中包括所述注解类型参数的元素信息;
在所述元素信息包括所述方法参数时,基于所述注解类型参数为所述方法参数添加对应的注解信息,以实现自动注解。
2.根据权利要求1所述的自动注解方法,其特征在于,所述注解类型参数包括用户定义的需要添加注解的方法类;所述遍历待注解项目的源代码,以基于所述注解类型参数获取所述源代码中对应的元素信息的步骤,包括:
获取所述源代码对应的抽象代码树,遍历所述抽象代码树,以获取所述抽象代码树的每一节点的第一元素信息;
在所述第一元素信息中获取包括所述注解类型参数的第二元素信息;
在所述节点的第二元素信息为方法类时,遍历所述节点,以获取所述节点的参数信息,直至获取所有方法类节点的参数信息。
3.根据权利要求2所述的自动注解方法,其特征在于,所述在所述节点的第二元素信息为方法类时,遍历所述节点,以获取所有方法类节点的参数信息的步骤之后,所述自动注解方法还包括:
获取所述参数信息对应的导入信息;
在所述导入信息不存在注解相关信息时,为所述导入信息添加对应的所述注解相关信息;
基于所述注解相关信息,获取所述导入信息对应的方法参数;
为所述方法参数添加对应的注解信息,以实现自动注解。
4.根据权利要求3所述的自动注解方法,其特征在于,所述获取所述参数信息对应的导入信息的步骤之后,所述自动注解方法还包括:
在所述导入信息存在所述注解相关信息时,获取所述注解相关信息对应的方法参数;
为所述方法参数添加对应的注解信息,以实现自动注解。
5.根据权利要求4所述的自动注解方法,其特征在于,所述为所述方法参数添加对应的注解信息,以实现自动注解的步骤,包括:
判断所述方法参数是否存在所述注解信息;
在所述方法参数不存在所述注解信息时,为所述方法参数添加对应的所述注解信息,直至所有所述方法类节点的参数信息完成注解。
6.根据权利要求2所述的自动注解方法,其特征在于,所述获取注解类型参数,以通过所述注解类型参数标识需要进行自动注解的元素的步骤之前,所述自动注解方法包括:
对所述待注解项目的源代码进行编译,以获取所述抽象代码树;
所述在所述元素信息包括方法参数时,基于所述注解类型参数为所述方法参数添加对应的注解信息,以实现自动注解的步骤之后,所述自动注解方法还包括:
根据注解后的所述抽象代码树,生成字节码文件,以使所述待注解项目编译完成。
7.根据权利要求1所述的自动注解方法,其特征在于,所述获取注解类型参数,以通过所述注解类型参数标识需要进行自动注解的元素的步骤,包括:
通过注解处理器生成自定义注解,以根据所述自定义注解获取所述注解类型参数。
8.根据权利要求1所述的自动注解方法,其特征在于,所述注解信息用于为所述方法参数进行赋值,所述元素信息用于数据库的数据操作。
9.一种终端设备,其特征在于,包括处理器以及与所述处理器连接的存储器,其中,所述存储器中存储有程序数据,所述处理器调取所述存储器存储的所述程序数据,以执行如权利要求1-8任一项所述的自动注解方法。
10.一种计算机可读存储介质,其特征在于,存储有程序指令,所述程序指令被执行以实现如权利要求1-8任一项所述的自动注解方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211637830.6A CN115878163A (zh) | 2022-12-19 | 2022-12-19 | 自动注解方法、终端设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211637830.6A CN115878163A (zh) | 2022-12-19 | 2022-12-19 | 自动注解方法、终端设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115878163A true CN115878163A (zh) | 2023-03-31 |
Family
ID=85755226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211637830.6A Pending CN115878163A (zh) | 2022-12-19 | 2022-12-19 | 自动注解方法、终端设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878163A (zh) |
-
2022
- 2022-12-19 CN CN202211637830.6A patent/CN115878163A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110162296B (zh) | 应用程序编程接口文档的生成方法、装置及终端设备 | |
CN109976761B (zh) | 软件开发工具包的生成方法、装置及终端设备 | |
CN107025559B (zh) | 一种业务处理方法及装置 | |
CN107644286B (zh) | 工作流处理方法及装置 | |
US8141035B2 (en) | Method for accessing internal states of objects in object oriented programming | |
CN109840429A (zh) | 智能合约部署、调用方法和装置 | |
US20240045850A1 (en) | Systems and methods for database orientation transformation | |
CN113076096A (zh) | 一种桌面应用程序开发方法、装置、设备及存储介质 | |
US7565364B1 (en) | Annotation processor discovery | |
US8327323B2 (en) | Automatic copying by ancestor in object-oriented languages | |
CN114691188A (zh) | 兼容性评估方法、装置、设备及存储介质 | |
CN111625225A (zh) | 一种程序指定数据输出方法和装置 | |
CN114138748A (zh) | 数据库映射文件生成方法、装置、设备及存储介质 | |
US9396239B2 (en) | Compiling method, storage medium and compiling apparatus | |
CN113987337A (zh) | 基于组件化动态编排的搜索方法、系统、设备及存储介质 | |
CN110018831B (zh) | 程序处理方法、装置及计算机可读存储介质 | |
CN115328458B (zh) | 一种业务应用开发方法及装置 | |
CN115878163A (zh) | 自动注解方法、终端设备及计算机可读存储介质 | |
CN107817972B (zh) | 缓存代码处理方法、装置、存储介质及电子设备 | |
CN115269040B (zh) | 一种租户业务应用的拓展方法、装置及系统 | |
CN114721647B (zh) | 一种基于无代码应用开发的面向对象编程方法 | |
CN113971019B (zh) | 数据类型创建方法、装置、服务器及介质 | |
CN116578282A (zh) | 代码生成方法、装置、电子设备及介质 | |
CN113504904A (zh) | 用户定义函数实现方法、装置、计算机设备和存储介质 | |
CN114860204A (zh) | 程序处理、运行方法、装置、终端、智能卡及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |