一种基于声明式的代码生成编译方法技术

技术编号:37153284 阅读:12 留言:0更新日期:2023-04-06 22:11
本发明专利技术公开了一种基于声明式的代码生成编译方法,包括以下步骤:步骤一:在功能应用内添加代码检查模板,然后按项目功能划分功能模块,由不同模块的开发人员进行对应功能的代码生成开发,步骤二:初始化代码生成上下文,步骤三:初始化代码检查,步骤四:异步执行代码生成任务,步骤五:执行代码检查,步骤六:异步输出代码文件;本发明专利技术通过设计的初始化代码检查和执行代码检查,通过代码自检器对初始化和执行的代码进行检查,以避免其出现生成错误,然后造成错误代码的输出,导致代码编译错误失效,提高本发明专利技术的代码编译生成精准性。提高本发明专利技术的代码编译生成精准性。

【技术实现步骤摘要】
一种基于声明式的代码生成编译方法


[0001]本专利技术属于代码生成
,具体涉及一种基于声明式的代码生成编译方法。

技术介绍

[0002]基于声明式的代码生成编译方法不再关注代码生成引擎本身如何执行,显著的优点是提供了一种声明机制,使开发人员能够按照代码生成项目具体的业务将整个工程拆分为不同的代码生成模块独立进行开发,各模块可以共享代码生成元数据但互不影响,同时还提供了代码装饰机制,在不影响原有代码模板逻辑的情况下可以增加新的功能,良好的适应了大型的复杂工程代码生成迭代开发的需求,将代码生成开发创新性的与应用按需求迭代开发充分的结合到了一起,开发人员的代码生成开发过程实际上就是需求变更的过程,模板引擎本身的执行变得几乎透明,但是存在以下缺陷:
[0003](1)在进行代码生成编译过程中,生成的代码没有进行验算自检就进行输出,极易出现编译错误而输出后导致代码编译错误失效,提高本专利技术的代码编译生成精准性的问题,为此我们提出一种基于声明式的代码生成编译方法。

技术实现思路

[0004]本专利技术的目的在于提供一种基于声明式的代码生成编译方法,以解决上述
技术介绍
中提出的代码编译方法在操作中,容易出现代码未验算而错误,导致其影响生成精准性的问题。
[0005]为实现上述目的,本专利技术提供如下技术方案:一种基于声明式的代码生成编译方法,包括以下步骤:
[0006]步骤一:在功能应用内添加代码检查模板,然后按项目功能划分功能模块,由不同模块的开发人员进行对应功能的代码生成开发;<br/>[0007]步骤二:初始化代码生成上下文;
[0008]步骤三:初始化代码检查;
[0009]步骤四:异步执行代码生成任务;
[0010]步骤五:执行代码检查;
[0011]步骤六:异步输出代码文件。
[0012]优选的,优选的,所述步骤一种用于代码检查的模板内添置有代码自检器。
[0013]优选的,所述步骤三和步骤四中的代码检查,通过内置的代码自检器对生成的代码进行检查,若检查通过则进行下一步输出,若检查未通过,通过代码自检器对生成的初始化代码或执行代码进行回执,通过步骤一从新进行代码生成。
[0014]优选的,所述步骤一中具体方法,编写ftl模板文件和其抽象类实现:通过实现这个freemarker抽象类或使用一个生成此freemarker抽象类的建造器来将编写好的ftl模板和模板参数传递相关联,注入代码生成元数据,添加代码生成任务。
[0015]优选的,所述步骤二中上下文贯穿整个代码生成生命周期,使容器中所有声明的
组件能够衔接到一起,同时此代码生成上下文是被代理的,根据需要对代码生成生命周期中的某个过程添加切面逻辑,实现高级功能;代码生成上下文的初始化过程会扫描所有的元数据注入声明,将开发人员自定义的元数据注入到上下文以在整个代码生成周期中共享这些元数据,所述步骤四中,代码生成上下文初始完成之后,代码生成执行引擎会扫描所有的代码生成任务并执行,所有的任务异步执行,任务之间互不影响,提升了代码生成效率,等待所有任务执行完成后才会返回代码生成结果。代码生成任务的执行主要是产生预执行的模板,这些模板只包含freemarker底层方法进行模板输出需要的最少参数。
[0016]优选的,所述步骤六中,将代码生成任务和输出预置行模板任务均提交为异步任务,依托线程池技术运行这些异步任务,同类型的异步任务会并发执行,直到所有同类型的任务执行完成后返回代码生成结果。
[0017]优选的,所述可装饰抽象freemarker类的执行过程,执行主模板逻辑,可装饰的模板通过两种方式指定以其为主模板的装饰模板,一个装饰的主模板包含多个装饰模板,装饰模板在不与主模板逻辑耦合的情况下,执行其他的附加逻辑,在主模板运行的过程中添加附加逻辑,装饰模板会有一个可供实现的条件匹配接口,接口返回为布尔类型,接口以代码生成上下文为参数,开发人员根据当前系统的实际情况返回,只有结果为true时才会执行附加逻辑,这样可以保证附加逻辑要么全部生效,要么都不生效,达到装饰模板与主模板逻辑解耦的目的,附加逻辑主要包括添加代码片段,添加额外参数,添加额外文件输出。
[0018]与现有技术相比,本专利技术的有益效果是:
[0019](1)通过设计的初始化代码检查和执行代码检查,通过代码自检器对初始化和执行的代码进行检查,以避免其出现生成错误,然后造成错误代码的输出,导致代码编译错误失效,提高本专利技术的代码编译生成精准性。
附图说明
[0020]图1为本专利技术的方法步骤图。
具体实施方式
[0021]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0022]实施例
[0023]请参阅图1,本专利技术提供一种技术方案:一种基于声明式的代码生成编译方法,包括以下步骤:
[0024]步骤一:在功能应用内添加代码检查模板,然后按项目功能划分功能模块,由不同模块的开发人员进行对应功能的代码生成开发;
[0025]步骤二:初始化代码生成上下文;
[0026]步骤三:初始化代码检查;
[0027]步骤四:异步执行代码生成任务;
[0028]步骤五:执行代码检查;
[0029]步骤六:异步输出代码文件,步骤一种用于代码检查的模板内添置有代码自检器,步骤三和步骤四中的代码检查,通过内置的代码自检器对生成的代码进行检查,若检查通过则进行下一步输出,若检查未通过,通过代码自检器对生成的初始化代码或执行代码进行回执,通过步骤一从新进行代码生成,通过设计的初始化代码检查和执行代码检查,通过代码自检器对初始化和执行的代码进行检查,以避免其出现生成错误,然后造成错误代码的输出,导致代码编译错误失效,提高本专利技术的代码编译生成精准性。
[0030]本实施例中,优选的,步骤一中具体方法,编写ftl模板文件和其抽象类实现:通过实现这个freemarker抽象类或使用一个生成此freemarker抽象类的建造器来将编写好的ftl模板和模板参数传递相关联,注入代码生成元数据,添加代码生成任务,步骤二中上下文贯穿整个代码生成生命周期,使容器中所有声明的组件能够衔接到一起,同时此代码生成上下文是被代理的,根据需要对代码生成生命周期中的某个过程添加切面逻辑,实现高级功能;代码生成上下文的初始化过程会扫描所有的元数据注入声明,将开发人员自定义的元数据注入到上下文以在整个代码生成周期中共享这些元数据,步骤四中,代码生成上下文初始完成之后,代码生成执行引擎会扫描所有的代码生成任务并执行,所有的任务异步执行,任务之间互不影响,提升了代码生成效率,等待所有任务执行完成后才会返回代码生成结果。代码生成任务的执行主要是产生预执行的模板,这些模板只包含fre本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于声明式的代码生成编译方法,其特征在于:包括以下步骤:步骤一:在功能应用内添加代码检查模板,然后按项目功能划分功能模块,由不同模块的开发人员进行对应功能的代码生成开发;步骤二:初始化代码生成上下文;步骤三:初始化代码检查;步骤四:异步执行代码生成任务;步骤五:执行代码检查;步骤六:异步输出代码文件。2.根据权利要求1所述的一种基于声明式的代码生成编译方法,其特征在于:所述步骤一种用于代码检查的模板内添置有代码自检器。3.根据权利要求1所述的一种基于声明式的代码生成编译方法,其特征在于:所述步骤三和步骤四中的代码检查,通过内置的代码自检器对生成的代码进行检查,若检查通过则进行下一步输出,若检查未通过,通过代码自检器对生成的初始化代码或执行代码进行回执,通过步骤一从新进行代码生成。4.根据权利要求1所述的一种基于声明式的代码生成编译方法,其特征在于:所述步骤一中具体方法,编写ftl模板文件和其抽象类实现:通过实现这个freemarker抽象类或使用一个生成此freemarker抽象类的建造器来将编写好的ftl模板和模板参数传递相关联,注入代码生成元数据,添加代码生成任务。5.根据权利要求1所述的一种基于声明式的代码生成编译方法,其特征在于:所述步骤二中上下文贯穿整个代码生成生命周期,使容器中所有声明的组件能够衔接到一起,同时此代码生成上下文是被代理的,根据需要对代码生成生命周期中的某个过程添加切面逻辑,实现高级功能;代码生成上下文的初始化过程会扫描所...

【专利技术属性】
技术研发人员:常崇旺
申请(专利权)人:西安良方企业信息咨询有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1