CN116301799A - 一种代码生成方法、装置、计算机设备、存储介质及产品 - Google Patents

一种代码生成方法、装置、计算机设备、存储介质及产品 Download PDF

Info

Publication number
CN116301799A
CN116301799A CN202310150682.3A CN202310150682A CN116301799A CN 116301799 A CN116301799 A CN 116301799A CN 202310150682 A CN202310150682 A CN 202310150682A CN 116301799 A CN116301799 A CN 116301799A
Authority
CN
China
Prior art keywords
code
template
scene
target
code generation
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
Application number
CN202310150682.3A
Other languages
English (en)
Inventor
王立林
杨丹
程冲
朱毅文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202310150682.3A priority Critical patent/CN116301799A/zh
Publication of CN116301799A publication Critical patent/CN116301799A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供一种代码生成方法、装置、计算机设备、存储介质及产品,涉及计算机开发技术领域,运行在低代码平台中,所述低代码平台具有代码生成引擎,包括:接收低代码平台发送的目标应用信息和领域特定语言;若确定所述目标应用信息与所述代码生成引擎匹配,则调用所述代码生成引擎解析所述领域特定语言,生成目标代码;若确定所述目标应用信息与所述代码生成引擎不匹配,则调用预置的代码场景模板解析所述领域特定语言,生成目标代码;其中,所述目标代码用于实现所述目标应用信息对应的应用服务。本申请在领域特定语言对应的服务一旦超出低代码平台预置的服务范畴时,可以调用代码场景模板满足该服务的实现,扩展了低代码平台的服务范围。

Description

一种代码生成方法、装置、计算机设备、存储介质及产品
技术领域
本申请涉及计算机开发技术领域,尤其涉及一种代码生成方法、装置、计算机设备、存储介质及产品。
背景技术
低代码开发平台(LCDP)是无需编码或通过少量代码就可以快速生成应用程序的开发平台,其通过可视化界面生成组件模型逻辑信息,并根据组件模型逻辑信息进行应用程序开发的方法(参考可视编程语言),使具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。
当前的低代码平台只能对预置服务下的领域特定语言进行解析获得代码,一旦低代码平台接收到的领域特定语言对应的服务,超过了预置服务的范畴,将会使低代码平台无法生成满足该服务的代码,导致低代码平台的适用范围狭窄。
发明内容
本申请提供一种代码生成方法、装置、计算机设备、存储介质及产品,用以解决当前的低代码平台接收到的领域特定语言对应的服务,超过了预置服务的范畴时,将无法生成满足该服务的代码,导致低代码平台的适用范围狭窄的问题。
第一方面,本申请提供一种代码生成方法,运行在低代码平台中,所述低代码平台具有代码生成引擎,包括:
接收低代码平台发送的目标应用信息和领域特定语言;
若确定所述目标应用信息与所述代码生成引擎匹配,则调用所述代码生成引擎解析所述领域特定语言,生成目标代码;
若确定所述目标应用信息与所述代码生成引擎不匹配,则调用预置的代码场景模板解析所述领域特定语言,生成目标代码;
其中,所述目标代码用于实现所述目标应用信息对应的应用服务。
上述方案中,所述接收低代码平台发送的目标应用信息和领域特定语言之后,所述方法还包括:
获取所述代码生成引擎的应用列表;其中,所述应用列表中至少具有一个引擎应用信息;
若所述目标应用信息与任一所述引擎应用信息一致,则确定所述目标应用信息与所述代码生成引擎匹配;
若所述目标应用信息与所述引擎应用信息不一致,则确定所述目标应用信息与所述代码生成引擎不匹配。
上述方案中,所述调用预置的代码场景模板解析所述领域特定语言,生成目标代码,包括:
将场景应用信息与所述目标应用信息一致的代码场景模板设为目标模板;
调用所述目标模板解析所述领域特定语言得到领域字符;
将所述领域字符录入所述目标模板的占空位,使所述目标模板转为目标代码;其中,所述占空位是用于录入字符和/或字符串,以使所述目标模板转为可运行的应用程序的预留位置。
上述方案中,所述调用所述目标模板解析所述领域特定语言得到领域字符,包括:
识别所述目标模板中的占空位,获取与所述占空位对应的定义代码;其中,所述定义代码是录入所述占空位的字符和/或字符串的名称或属性;
获取所述领域特定语言中与所述定义代码对应的字符和/或字符串,将所述字符和/或字符串设为所述领域字符。
上述方案中,所述接收低代码平台发送的目标应用信息和领域特定语言之前,所述方法还包括:
接收低代码平台发送的抽象对象;其中,所述抽象对象是指代码生成引擎中用于解析领域特定语言的信息和规则;
根据所述抽象对象对所述代码生成引擎进行抽象处理,得到代码生成模板;
接收低代码平台发送的业务场景信息,根据所述业务场景信息对所述代码场景模板进行配置,得到代码场景模板。
上述方案中,所述根据所述抽象对象对所述代码生成引擎进行抽象处理,得到代码生成模板,包括:
识别所述抽象对象在所述代码生成引擎中对应的对象代码;
通过预置的模板引擎对所述对象代码实现抽象,得到所述抽象对象的抽象规则;其中,所述模板引擎是基于模板和抽象对象,生成记载有所述抽象对象的输出文本的通用工具;所述抽象规则是具有占位符及所述对象代码的模板文件;
根据各所述抽象对象之间的关联关系整合各所述抽象规则,得到代码生成模板。
上述方案中,所述根据所述业务场景信息对所述代码场景模板进行配置,得到代码场景模板,包括:
提取所述业务场景信息中的场景应用信息,将应用信息与所述场景应用信息一致的代码生成模板设为待配置模板;其中,所述场景应用信息反映了需要进行修改或配置的应用服务对应的代码生成模板;
提取所述业务场景信息中的场景对象信息,将所述待配置模板中与所述场景对象信息一致的抽象规则设为待配置规则;其中,所述场景对象信息描述了该代码生成模板中需要改变的抽象规则;
提取所述业务场景信息中与所述场景对象信息对应的场景配置信息,根据所述场景配置信息设置所述待配置规则,使所述待配置规则转为场景规则;其中,所述场景配置信息中记载了用于配置所述代码生成模板的参数和文件;
汇总所述待配置模板中的场景规则和/或抽象规则得到代码场景集合,将所述代码场景集合和所述场景应用信息关联得到代码场景模板。
第二方面,本申请提供一种代码生成装置,安装在低代码平台中,所述低代码平台具有代码生成引擎,包括:
输入模块,用于接收低代码平台发送的目标应用信息和领域特定语言;
引擎调用模块,用于在确定所述目标应用信息与所述代码生成引擎匹配时,则调用所述代码生成引擎解析所述领域特定语言,生成目标代码;
模板调用模块,用于在确定所述目标应用信息与所述代码生成引擎不匹配时,则调用预置的代码场景模板解析所述领域特定语言,生成目标代码;
其中,所述目标代码用于实现所述目标应用信息对应的应用服务。
第三方面,本申请提供一种计算机设备,包括:处理器以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求上述的代码生成方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述的代码生成方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述的代码生成方法。
本申请提供的一种代码生成方法、装置、计算机设备、存储介质及产品,通过在确定所述目标应用信息与所述代码生成引擎匹配时,则调用所述代码生成引擎解析所述领域特定语言,或通过在确定所述目标应用信息与所述代码生成引擎不匹配时,则调用预置的代码场景模板解析所述领域特定语言,生成目标代码,以实现所述目标应用信息对应的应用服务的方式,使得领域特定语言对应的服务一旦超出低代码平台预置的服务范畴时,则可以调用代码场景模板满足该服务的实现,扩展了低代码平台的服务范围。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种应用场景示意图;
图2为本申请实施例提供的一种代码生成方法的实施例1的流程图;
图3为本申请实施例提供的一种代码生成方法的实施例2的流程图;
图4为本申请实施例提供的一种代码生成装置的实施例3的模块图;
图5为本发明计算机设备中计算机设备的硬件结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
请参阅图1,本申请具体的应用场景为:代码生成方法运行在低代码平台3中的服务器2中,低代码平台3还具有代码生成引擎31;服务器2接收低代码平台发送的目标应用信息和领域特定语言;服务器2若确定目标应用信息与代码生成引擎匹配,则调用代码生成引擎解析领域特定语言,生成目标代码;服务器2若确定目标应用信息与代码生成引擎不匹配,则调用代码场景模板解析领域特定语言,生成目标代码。
其中,低代码平台3还与开发端5连接,开发端5用于向低代码平台输出组件模型逻辑信息,或开发端5通过访问低代码平台3在低代码平台3中生成组件模型逻辑信息。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决现有技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
实施例1:
请参阅图2,本申请提供一种代码生成方法,运行在低代码平台中,低代码平台具有代码生成引擎,包括:
S101:接收低代码平台发送的目标应用信息和领域特定语言。
本步骤中,目标应用信息表征了发送代码请求信息需要创建的应用服务;领域特定语言是专注于某个应用程序领域的计算机语言,领域特定语言是用于输入到代码场景模板的占空位中。
在一个优选的实施例中,接收低代码平台发送的目标应用信息和领域特定语言之后,方法还包括:
获取代码生成引擎的应用列表;其中,应用列表中至少具有一个引擎应用信息;
若目标应用信息与任一引擎应用信息一致,则确定目标应用信息与代码生成引擎匹配;
若目标应用信息与引擎应用信息不一致,则确定目标应用信息与代码生成引擎不匹配。
本实例中,应用列表中的引擎应用信息,表征了代码生成引擎所生成的代码的适用服务,例如:语音交互服务、安全认证服务、文件传输服务等;如果目标应用信息为“语音交互服务”,则确定目标应用信息与代码生成引擎匹配;如果目标应用信息为“金融汇款服务”,则确定目标应用信息与代码生成引擎不匹配。
S102:若确定目标应用信息与代码生成引擎匹配,则调用代码生成引擎解析领域特定语言,生成目标代码;
本步骤中,采用语言解释器作为代码生成引擎,用以将低代码平台发送的领域特定语言进行解析,并生成实现相应于目标应用信息的应用服务的目标代码。于本实施例中,语言解释器,就是用来将编程语言解释为可被机器或虚拟机识别的语言,从而运行的一种程序,通过语言解释器能够将领域特定语言解析成能够被计算机理解的代码。
S103:若确定目标应用信息与代码生成引擎不匹配,则调用预置的代码服务模板解析领域特定语言,生成目标代码;其中,目标代码用于实现目标应用信息对应的应用服务。
本步骤中,通过在确定目标应用信息与代码生成引擎不匹配时,则调用预置的代码场景模板解析领域特定语言,生成目标代码,以实现目标应用信息对应的应用服务的方式,使得领域特定语言对应的服务一旦超出低代码平台预置的服务范畴时,则可以调用代码场景模板满足该服务的实现,扩展了低代码平台的服务范围。
在一个优选的实施例中,调用预置的代码场景模板解析领域特定语言,生成目标代码,包括:
将场景应用信息与目标应用信息一致的代码服务模板设为目标模板;
调用目标模板解析领域特定语言得到领域字符;
将领域字符录入目标模板的占空位,使目标模板转为目标代码;其中,占空位是用于录入字符和/或字符串,以使目标模板转为可运行的代码的预留位置。
本实例中,模板应用信息是表征代码生成模板能够实现的服务,例如:金融汇款服务、交易账户查询服务、账户交易安全认证服务等。
本实例中,应用列表中的引擎应用信息,表征了代码生成引擎所生成的代码的适用服务,例如:语音交互服务、安全认证服务、文件传输服务等。
如果目标应用信息为金融汇款服务,则调用相应于金融汇款服务的代码生成模板,对表征金融汇款服务的领域特定信息进行解析,将该领域特征信息中的领域字符,录入该代码生成模板的占空位中,得到实现金融汇款服务的目标代码。
在一个优选的实施例中,调用目标模板解析领域特定语言得到领域字符,包括:
识别目标模板中的占空位,获取与占空位对应的定义代码;其中,定义代码是录入占空位的字符和/或字符串的名称或属性;
获取领域特定语言中与定义代码对应的字符和/或字符串,将字符和/或字符串设为领域字符。
本实例中,通过获取定义代码,以识别目标模板中占空位所需的字符和/或字符串的名称或属性;
将定义代码载入预置的正则表达式中,
通过该正则表达式
从领域特定语言中获取与定义代码对应的字符和/或字符串,
例如:目标模板中包括:
……
tempXML[‘A1’]=_______
tempXML[‘A2’]=_______
……
其中,_______为占空位,该占空位的定义代码是:tempXML[‘name’]或name,以及tempXML[‘job’]或job;
通过定义代码tempXML[“name”]或name,从领域特定语言中获取对应的字符和/或字符串,例如:将name对应的M1其表征为“**金融主体”,job对应的N1,其表征为“金融业务”,录入上述占空位中,使目标模板能够输出**金融主体,以及该金融主体的金融业务的目标代码。
tempXML[‘A1’]=M1
tempXML[‘A2’]=N1
上述代码的意思是,名称是:**金融主体,业务范围是:金融业务。
实施例2:
请参阅图3,本申请提供一种代码生成方法,运行在低代码平台中,低代码平台具有代码生成引擎,包括:
S201:接收低代码平台发送的抽象对象;其中,抽象对象是指代码生成引擎中用于解析领域特定语言的信息和规则;
根据抽象对象对代码生成引擎进行抽象处理,得到代码生成模板;
接收低代码平台发送的业务场景信息,根据业务场景信息对代码场景模板进行配置,得到代码场景模板。
本步骤中,领域特定语言(英语:domain-specific language、DSL)指的是专注于某个应用程序领域的计算机语言。又译作领域专用语言。于本实施例中,领域特定语言是由低代码平台输出的,用于描述应用服务流程,及该流程中各节点的任务的信息。低代码平台接收开发端输出的,或开发端在低代码平台上生成的组件模型逻辑信息,该组件模型逻辑信息中包括应用服务流程和应用服务流程中各节点的任务,低代码平台将组件模型逻辑信息转为领域特定语言,以便于代码生成引擎识别,并生成目标代码。
抽象对象是指代码生成引擎中用于解析领域特定语言的信息和规则,如:依赖版本、脚手架、项目分层架构、逻辑生成规则、流程生成规则、数据查询语句、接口生成规则。
代码生成引擎为解析低代码平台接收到的领域特定语言的语言解释器(Interpreter),调用该语言解释器即可通过解析领域特定语言,获得实现领域特定语言对应的应用服务的代码。
因此,通过模板引擎获取代码生成引擎中与抽象对象对应的引擎代码,并引擎对该代码进行抽象处理,得到抽象规则,获取各抽象对象对应的抽象规则得到代码生成模板,通过将领域特定语言录入模板中,得到实现应用服务的目标代码;其中,模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。
在一个优选的实施例中,根据抽象对象对代码生成引擎进行抽象处理,得到代码生成模板,包括:
识别抽象对象在代码生成引擎中对应的对象代码;
通过预置的模板引擎对对象代码实现抽象,得到抽象对象的抽象规则;其中,模板引擎是基于模板和抽象对象,生成记载有抽象对象的输出文本的通用工具;抽象规则是具有占位符及对象代码的模板文件;
根据各抽象对象之间的关联关系整合各抽象规则,得到代码生成模板。
本实例中,应用信息的抽象对象包括:如依赖版本、脚手架、项目分层架构、逻辑生成规则、流程生成规则、数据查询语句、接口生成规则;从代码生成引擎中获取相应于工程依赖版本、脚手架、项目分层架构、逻辑生成规则、流程生成规则、数据查询语句、接口生成规则的,依赖版本引擎代码、脚手架引擎代码、项目分层架构引擎代码、逻辑生成规则引擎代码、流程生成规则引擎代码、数据查询语句引擎代码、接口生成规则引擎代码。
采用FreeMarker是作为模板引擎,通过模板引擎对上述的工程依赖版本引擎代码、脚手架引擎代码、项目分层架构引擎代码、逻辑生成规则引擎代码、流程生成规则引擎代码、数据查询语句引擎代码、接口生成规则引擎代码实现抽象,得到工程依赖版本抽象规则、脚手架抽象规则、项目分层架构抽象规则、逻辑生成抽象规则、流程生成抽象规则、数据查询语句抽象规则、接口生成抽象规则。
汇总工程依赖版本抽象规则、脚手架抽象规则、项目分层架构抽象规则、逻辑生成抽象规则、流程生成抽象规则、数据查询语句抽象规则、接口生成抽象规则得到代码生成模板。
于本实施例中,工程依赖版本包括项目依赖关系和项目版本号。
项目依赖关系也称为任务依赖关系,是代码生成引擎的任务执行顺序。
项目版本号是表征代码生成引擎的版本号。
脚手架是(scaffolding)指的是创建项目时,自动完成的创建初始文件等初始化工作。这些工作往往是每次新建工程都要进行的重复性工作。也就是代码生成引擎每一次在创建新的用于生成领域特定语言的界面时,所完成的初始化工作。
项目分层架构记载了代码生成引擎组织文件夹和文件的策略或规则。
逻辑生成规则是用于代码生成引擎根据开发端录输入的组件,及组件之间的关系,生成描述各组件及其之间的逻辑关系的计算机规则。
流程生成规则是代码生成引擎根据逻辑生成规则生成的应用逻辑,创建用于实现应用逻辑的应用流程的计算机规则。
数据查询语句是代码生成引擎中对组件预定义的,用于从数据库中获取数据的查询指令。
接口生成规则是代码生成引擎用于生成接口的方法。
抽象对象之间的关联关系表征了工程依赖版本、脚手架、项目分层架构、逻辑生成规则、流程生成规则、数据查询语句、接口生成规则之间的逻辑关系,
根据该逻辑关系整合工程依赖版本抽象规则、脚手架抽象规则、项目分层架构抽象规则、逻辑生成抽象规则、流程生成抽象规则、数据查询语句抽象规则、接口生成抽象规则得到代码生成模板,使得该模板能够根据逻辑关系调用各抽象规则生成目标代码。
需要说明的是,FreeMarker是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。
在一个优选的实施例中,根据业务场景信息对代码生成模板进行配置,得到代码场景模板,包括:
提取业务场景信息中的场景应用信息,将应用信息与场景应用信息一致的代码生成模板设为待配置模板;
提取业务场景信息中的场景对象信息,将待配置模板中与场景对象信息一致的抽象规则设为待配置规则;
提取业务场景信息中与场景对象信息对应的场景配置信息,根据场景配置信息设置待配置规则,使待配置规则转为场景规则;
汇总待配置模板中的场景规则和/或抽象规则得到代码场景集合,将代码场景集合和场景应用信息关联得到代码场景模板。
本实例中,业务场景信息包括:场景应用信息、场景对象信息和场景配置信息;其中,场景应用信息反映了需要进行修改或配置的应用服务对应的代码生成模板;场景对象信息描述了该代码生成模板中需要改变的抽象规则,配置信息中记载了用于配置代码生成模板的参数和文件。例如:业务场景信息是:“汇款”应用服务;场景对象信息是:逻辑生成抽象规则;场景配置信息是:在逻辑生成抽象规则中汇款元数据“银行名称、收款人名称、收款人地址、银行帐号”,新增“银行地址”,那么,得到的场景规则中汇款元数据为:“银行名称、银行地址、收款人名称、收款人地址、银行帐号”。
S202:接收低代码平台发送的目标应用信息和领域特定语言。
本步骤与实施例1中的S101一致,故在此不做赘述。
S203:获取代码生成引擎的应用列表;其中,应用列表中至少具有一个引擎应用信息;
若目标应用信息与任一引擎应用信息一致,则确定目标应用信息与代码生成引擎匹配;
若目标应用信息与引擎应用信息不一致,则确定目标应用信息与代码生成引擎不匹配。
本实例中,通过将目标应用信息与应用列表进行比对,以识别开发端的服务开发需求,并根据该需求为应用服务的开发提供代码生成引擎,或代码场景模板,保证为开发端提供应用服务开发的准确性
S204:若确定目标应用信息与代码生成引擎匹配,则调用代码生成引擎解析领域特定语言,生成目标代码;
本步骤与实施例1中的S102一致,故在此不做赘述。
S205:若确定目标应用信息与代码生成引擎不匹配,则调用预置的代码服务模板解析领域特定语言,生成目标代码;其中,目标代码用于实现目标应用信息对应的应用服务。
本步骤与实施例1中的S103一致,故在此不做赘述。
S206:对目标代码进行安全扫描得到扫描结果;
若扫描结果中具有代码缺陷信息,则将安全性信息发送至开发端。
本步骤中,安全扫描用于识别目标代码中的依赖版本存在安全漏洞、代码分支覆盖率不足以及存在对象命名不规范等问题;如果具有上述问题,则生成相应于依赖版本存在安全漏洞、代码分支覆盖率不足以及存在对象命名不规范的缺陷信息的扫描结果。以便于开发端根据该扫描结果新建业务场景信息,以消除业务场景模板中的缺陷。
在一个优选的实施例中,对目标代码进行安全扫描得到扫描结果,包括:
调用预置的安全扫描工具对目标代码进行漏洞扫描;
若目标代码通过漏洞扫描,则生成漏洞安全信息;
若目标代码未通过漏洞扫描,则生成漏洞缺陷信息;
对目标代码进行分支覆盖率扫描;
若目标代码通过分支覆盖率扫描,则生成覆盖率安全信息;
若目标代码未通过分支覆盖率扫描,则生成覆盖率缺陷信息;
对目标代码进行命名规范性扫描;
若目标代码通过命名规范性扫描,则生成命名安全信息;
若目标代码未通过命名规范性扫描,则将未通过命名规范性扫描的代码设为命名缺陷对象,并生成具有命名缺陷对象的命名缺陷信息;
汇总漏洞缺陷信息和/或覆盖率缺陷信息和/或命名缺陷信息得到代码缺陷信息。
于本实施例中,漏洞扫描用于扫描目标代码的代码执行漏洞,代码执行漏洞是由于服务器对危险函数过滤不严导致用户输入的一些字符串可以被转换成代码来执行的情况。其中,漏洞缺陷信息中记载有目标代码中的危险函数,以便于开发人员识别。可选的,采用OpenVAS漏洞扫描工具和/或Tripwire IP360对目标代码进行漏洞扫描;其中,OpenVAS漏洞扫描器是一种漏洞分析工具,由于其全面的特性,IT部门可以使用它来扫描服务器和网络设备,这些扫描器将通过扫描现有设施中的开放端口、错误配置和漏洞来查找IP地址并检查任何开放服务,扫描完成后,将自动生成报告并以电子邮件形式发送,以供进一步研究和更正;OpenVAS也可以从外部服务器进行操作,从黑客的角度出发,从而确定暴露的端口或服务并及时进行处理;如果您已经拥有一个内部事件响应或检测系统,则OpenVAS将帮助您使用网络渗透测试工具和整个警报来改进网络监控。Tripwire IP360是市场上领先的漏洞管理解决方案之一,它使用户能够识别其网络上的所有内容,包括内部部署,云和容器资产;Tripwire将允许IT部门使用代理访问他们的资产,并减少代理扫描。
分支覆盖率扫描用于扫描目标代码的分支覆盖率,有判定语句的地方都会出现2个分支,分支覆盖率(branch coverage)是指,整个程序经过的分支与所有分支的比率是分支覆盖率。可选的,采用JaCoCo对目标代码进行分支覆盖率扫描,JaCoCo是一个免费的Java代码覆盖率库工具,由EclEmma团队根据多年来使用和集成现有库的经验创建的,不论开发和测试都会有针对自己写的单元测试用例,统计覆盖了多少业务代码这样的诉求,另外一个诉求就是统计结果能够自动生成HTML报告。
命名规范性扫描是用于检查目标代码是否符合代码命名规范,于本实施例中,采用代码检测器对目标代码进行命名规范性扫描,可选的,采用Pylint是一个Python的静态代码检测器作为代码检测器,它会分析Python代码中的错误,查找不符合代码风格标准和有潜在问题的代码,除了平常代码分析工具的作用之外,它提供了更多的功能:如检查一行代码的长度,变量名是否符合命名标准,一个声明过的接口是否被真正实现等等。
实施例3:
请参阅图4,本申请提供一种代码生成装置1,安装在低代码平台中,低代码平台具有代码生成引擎,包括:
输入模块12,用于接收低代码平台发送的目标应用信息和领域特定语言;
引擎调用模块14,用于在确定目标应用信息与代码生成引擎匹配时,则调用代码生成引擎解析领域特定语言,生成目标代码;
模板调用模块15,用于在确定目标应用信息与代码生成引擎不匹配时,则调用预置的代码服务模板解析领域特定语言,生成目标代码;
其中,目标代码用于实现目标应用信息对应的应用服务。
可选的,代码生成装置1还包括:
模板创建模块11,用于接收低代码平台发送的抽象对象;其中,抽象对象是指代码生成引擎中用于解析领域特定语言的信息和规则;
根据抽象对象对代码生成引擎进行抽象处理,得到代码生成模板;
接收低代码平台发送的业务场景信息,根据业务场景信息对代码场景模板进行配置,得到代码场景模板。
可选的,代码生成装置1还包括:
引擎匹配模块13,用于获取代码生成引擎的应用列表;其中,应用列表中至少具有一个引擎应用信息;
若目标应用信息与任一引擎应用信息一致,则确定目标应用信息与代码生成引擎匹配;
若目标应用信息与引擎应用信息不一致,则确定目标应用信息与代码生成引擎不匹配。
可选的,代码生成装置1还包括:
安全扫描模块16,用于对目标代码进行安全扫描得到扫描结果;若扫描结果中具有代码缺陷信息,则将安全性信息发送至开发端。
实施例4:
为实现上述目的,本申请还提供一种计算机设备4,包括:处理器以及与处理器通信连接的存储器;存储器存储计算机执行指令;
处理器执行存储器存储的计算机执行指令,以实现上述的代码生成方法,其中,代码生成装置的组成部分可分散于不同的计算机设备中,计算机设备4可以是执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个应用服务器所组成的服务器集群)等。本实施例的计算机设备至少包括但不限于:可通过系统总线相互通信连接的存储器41、处理器42,如图5所示。需要指出的是,图5仅示出了具有组件-的计算机设备,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。本实施例中,存储器41(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器41可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,存储器41也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器41还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,存储器41通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例三的代码生成装置的程序代码等。此外,存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。处理器42在一些实施例中可以是中央处理器(CentralProcessing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制计算机设备的总体操作。本实施例中,处理器42用于运行存储器41中存储的程序代码或者处理数据,例如运行代码生成装置,以实现上述实施例的代码生成方法。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例方法的部分步骤。应理解,上述处理器可以是中央处理单元(Central Processing Unit,简称CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
为实现上述目的,本申请还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机执行指令,程序被处理器42执行时实现相应功能。本实施例的计算机可读存储介质用于存储实现代码生成方法的计算机执行指令,被处理器42执行时实现上述实施例的代码生成方法。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
本申请提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述的代码生成方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

Claims (11)

1.一种代码生成方法,运行在低代码平台中,所述低代码平台具有代码生成引擎,其特征在于,包括:
接收低代码平台发送的目标应用信息和领域特定语言;
若确定所述目标应用信息与所述代码生成引擎匹配,则调用所述代码生成引擎解析所述领域特定语言,生成目标代码;
若确定所述目标应用信息与所述代码生成引擎不匹配,则调用预置的代码场景模板解析所述领域特定语言,生成目标代码;
其中,所述目标代码用于实现所述目标应用信息对应的应用服务。
2.根据权利要求1中任一所述的代码生成方法,其特征在于,所述接收低代码平台发送的目标应用信息和领域特定语言之后,所述方法还包括:
获取所述代码生成引擎的应用列表;其中,所述应用列表中至少具有一个引擎应用信息;
若所述目标应用信息与任一所述引擎应用信息一致,则确定所述目标应用信息与所述代码生成引擎匹配;
若所述目标应用信息与所述引擎应用信息不一致,则确定所述目标应用信息与所述代码生成引擎不匹配。
3.根据权利要求1所述的代码生成方法,其特征在于,所述调用预置的代码场景模板解析所述领域特定语言,生成目标代码,包括:
将场景应用信息与所述目标应用信息一致的代码场景模板设为目标模板;
调用所述目标模板解析所述领域特定语言得到领域字符;
将所述领域字符录入所述目标模板的占空位,使所述目标模板转为目标代码;其中,所述占空位是用于录入字符和/或字符串,以使所述目标模板转为可运行的应用程序的预留位置。
4.根据权利要求3所述的代码生成方法,其特征在于,所述调用所述目标模板解析所述领域特定语言得到领域字符,包括:
识别所述目标模板中的占空位,获取与所述占空位对应的定义代码;其中,所述定义代码是录入所述占空位的字符和/或字符串的名称或属性;
获取所述领域特定语言中与所述定义代码对应的字符和/或字符串,将所述字符和/或字符串设为所述领域字符。
5.根据权利要求1-4中任一所述的代码生成方法,其特征在于,所述接收低代码平台发送的目标应用信息和领域特定语言之前,所述方法还包括:
接收低代码平台发送的抽象对象;其中,所述抽象对象是指代码生成引擎中用于解析领域特定语言的信息和规则;
根据所述抽象对象对所述代码生成引擎进行抽象处理,得到代码生成模板;
接收低代码平台发送的业务场景信息,根据所述业务场景信息对所述代码场景模板进行配置,得到代码场景模板。
6.根据权利要求5所述的代码生成方法,其特征在于,所述根据所述抽象对象对所述代码生成引擎进行抽象处理,得到代码生成模板,包括:
识别所述抽象对象在所述代码生成引擎中对应的对象代码;
通过预置的模板引擎对所述对象代码实现抽象,得到所述抽象对象的抽象规则;其中,所述模板引擎是基于模板和抽象对象,生成记载有所述抽象对象的输出文本的通用工具;所述抽象规则是具有占位符及所述对象代码的模板文件;
根据各所述抽象对象之间的关联关系整合各所述抽象规则,得到代码生成模板。
7.根据权利要求5所述的代码生成方法,其特征在于,所述根据所述业务场景信息对所述代码场景模板进行配置,得到代码场景模板,包括:
提取所述业务场景信息中的场景应用信息,将应用信息与所述场景应用信息一致的代码生成模板设为待配置模板;其中,所述场景应用信息反映了需要进行修改或配置的应用服务对应的代码生成模板;
提取所述业务场景信息中的场景对象信息,将所述待配置模板中与所述场景对象信息一致的抽象规则设为待配置规则;其中,所述场景对象信息描述了该代码生成模板中需要改变的抽象规则;
提取所述业务场景信息中与所述场景对象信息对应的场景配置信息,根据所述场景配置信息设置所述待配置规则,使所述待配置规则转为场景规则;其中,所述场景配置信息中记载了用于配置所述代码生成模板的参数和文件;
汇总所述待配置模板中的场景规则和/或抽象规则得到代码场景集合,将所述代码场景集合和所述场景应用信息关联得到代码场景模板。
8.一种代码生成装置,安装在低代码平台中,所述低代码平台具有代码生成引擎,其特征在于,包括:
输入模块,用于接收低代码平台发送的目标应用信息和领域特定语言;
引擎调用模块,用于在确定所述目标应用信息与所述代码生成引擎匹配时,则调用所述代码生成引擎解析所述领域特定语言,生成目标代码;
模板调用模块,用于在确定所述目标应用信息与所述代码生成引擎不匹配时,则调用预置的代码场景模板解析所述领域特定语言,生成目标代码;
其中,所述目标代码用于实现所述目标应用信息对应的应用服务。
9.一种计算机设备,其特征在于,包括:处理器以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至7任一项所述的代码生成方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至7任一项所述的代码生成方法。
11.一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-7中任一项所述的代码生成方法。
CN202310150682.3A 2023-02-13 2023-02-13 一种代码生成方法、装置、计算机设备、存储介质及产品 Pending CN116301799A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310150682.3A CN116301799A (zh) 2023-02-13 2023-02-13 一种代码生成方法、装置、计算机设备、存储介质及产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310150682.3A CN116301799A (zh) 2023-02-13 2023-02-13 一种代码生成方法、装置、计算机设备、存储介质及产品

Publications (1)

Publication Number Publication Date
CN116301799A true CN116301799A (zh) 2023-06-23

Family

ID=86823264

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310150682.3A Pending CN116301799A (zh) 2023-02-13 2023-02-13 一种代码生成方法、装置、计算机设备、存储介质及产品

Country Status (1)

Country Link
CN (1) CN116301799A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117289905A (zh) * 2023-11-24 2023-12-26 浙江口碑网络技术有限公司 一种应用软件开发方法和装置、存储介质和电子设备
CN118300906A (zh) * 2024-06-06 2024-07-05 国网湖北省电力有限公司武汉供电公司 规范化攻击路径自动生成与验证方法、装置及系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117289905A (zh) * 2023-11-24 2023-12-26 浙江口碑网络技术有限公司 一种应用软件开发方法和装置、存储介质和电子设备
CN117289905B (zh) * 2023-11-24 2024-03-19 浙江口碑网络技术有限公司 一种应用软件开发方法和装置、存储介质和电子设备
CN118300906A (zh) * 2024-06-06 2024-07-05 国网湖北省电力有限公司武汉供电公司 规范化攻击路径自动生成与验证方法、装置及系统

Similar Documents

Publication Publication Date Title
CN116301799A (zh) 一种代码生成方法、装置、计算机设备、存储介质及产品
WO2020015190A1 (zh) 业务规则的生成方法、电子装置及可读存储介质
US7130862B2 (en) Methods, systems and computer program prodcuts for validation of XML instance documents using Java classloaders
CA2680306A1 (en) Identification of concepts in software
CN115080406A (zh) 代码日志生成方法、装置、设备和存储介质
US11188712B2 (en) Systems and methods for wholesale client onboarding
US11256557B1 (en) Efficient processing of rule-based computing workflows
CN107015794B (zh) 软件即服务参考流程扩展验证框架
US20160124795A1 (en) Evaluation method and apparatus
CN112861059A (zh) 可视化组件生成方法、装置、计算机设备及可读存储介质
US20100318964A1 (en) Software extension analysis
CN113296854B (zh) 一种数据加载方法、系统、电子设备及存储介质
CN112925523B (zh) 对象比较方法、装置、设备及计算机可读介质
CN108074074B (zh) 整合装置及其整合方法
US11593511B2 (en) Dynamically identifying and redacting data from diagnostic operations via runtime monitoring of data sources
US12067377B2 (en) System and a method for automatic generation of smart contracts across blockchain platforms
CN117032634A (zh) 组件处理方法及系统
CN111722881A (zh) 一种容器云平台的资源扩展方法、系统及装置
CN117407893A (zh) 基于api配置的数据权限管理方法、装置、设备和介质
WO2017072872A1 (ja) 業務プログラム生成支援システムおよび業務プログラム生成支援方法
US7437714B1 (en) Category partitioning markup language and tools
CN112380142A (zh) 接口文档管理方法、装置和测试设备
CN112445499A (zh) 衍生变量确定方法、装置、设备和存储介质
US20150324333A1 (en) Systems and methods for automatically generating hyperlinks
JP2020101898A (ja) 設計図作成支援方法、設計図作成支援装置、及び設計図作成支援プログラム

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