CN109947431B - 一种代码生成方法、装置、设备及存储介质 - Google Patents

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

Info

Publication number
CN109947431B
CN109947431B CN201910244212.7A CN201910244212A CN109947431B CN 109947431 B CN109947431 B CN 109947431B CN 201910244212 A CN201910244212 A CN 201910244212A CN 109947431 B CN109947431 B CN 109947431B
Authority
CN
China
Prior art keywords
code
code segment
target code
target
segment
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.)
Active
Application number
CN201910244212.7A
Other languages
English (en)
Other versions
CN109947431A (zh
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.)
Beijing ByteDance Network Technology Co Ltd
Original Assignee
Beijing ByteDance Network Technology Co Ltd
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 Beijing ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN201910244212.7A priority Critical patent/CN109947431B/zh
Publication of CN109947431A publication Critical patent/CN109947431A/zh
Application granted granted Critical
Publication of CN109947431B publication Critical patent/CN109947431B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本公开实施例公开了一种代码生成方法、装置、设备及存储介质,其中,该方法包括:当接收到代码生成指令时,获取当前代码片段;从当前代码片段中确定待完善的目标代码片段,目标代码片段中包含代码属性信息;确定与目标代码片段匹配的转换程序;其中,转换程序包括根据属性信息生成代码片段的转换规则;基于转换规则以及目标代码片段包含的代码属性信息,生成目标代码片段对应的完整代码片段。本公开实施例的方案可以提高编写代码的效率。

Description

一种代码生成方法、装置、设备及存储介质
技术领域
本公开实施例涉及代码处理技术领域,尤其涉及一种代码生成方法、装置、设备及存储介质。
背景技术
随着软件行业的不断发展,提高代码的编写效率,成为促进软件版本更新和发布的重要因素。
目前,很多代码程序都是由多个代码片段组成,代码片段之间可能存在相似之处,例如,一些代码片段使用相同的代码结构,仅是其中一些变量名称或者赋值发生了改变,在编写这种存在相似性的代码片段时,编程人员往往是通过手动复制粘贴相似的代码片段,再加以修改,得到其他代码片段,或者利用替换规则,对代码片段进行自动修改,得到其他代码片段。
使用人工方式处理存在相似性的代码片段时,代码的编写效率明显不高,且一旦在手动修改时发生错误,还会增加后续代码的调试和测试时间,从而降低整个代码的编写效率。利用替换规则自动修改存在相似性的代码片段时,由于替换规则单一且需要编程人员预先完成大量辅助替换规则的代码,代码的编写效率同样得不到显著的提升。
发明内容
本公开实施例提供了一种代码生成方法、装置、设备及存储介质,可以提高编写代码的效率。
第一方面,本公开实施例提供了一种代码生成方法,包括:
当接收到代码生成指令时,获取当前代码片段;
从所述当前代码片段中确定待完善的目标代码片段,所述目标代码片段中包含代码属性信息;
确定与所述目标代码片段匹配的转换程序;其中,所述转换程序包括根据所述代码属性信息生成代码片段的转换规则;
基于所述转换规则以及所述目标代码片段包含的代码属性信息,生成所述目标代码片段对应的完整代码片段。
第二方面,本公开实施例还提供了一种代码生成装置,包括:
当前代码获取模块,用于当接收到代码生成指令时,获取当前代码片段;
目标代码确定模块,用于从所述当前代码片段中确定待完善的目标代码片段,所述目标代码片段中包含代码属性信息;
转换程序确定模块,用于确定与所述目标代码片段匹配的转换程序;其中,所述转换程序包括根据所述代码属性信息生成代码片段的转换规则;
完整代码生成模块,用于基于所述转换规则以及所述目标代码片段包含的代码属性信息,生成所述目标代码片段对应的完整代码片段。
第三方面,本公开实施例还提供了一种设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本公开实施例提供的代码生成方法。
第四方面,本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开实施例提供的代码生成方法。
本公开实施例提供的技术方案,通过获取当前代码片段,从当前代码片段中确定待完善的,包含代码属性信息的目标代码片段,确定与目标代码片段匹配的转换程序,其中,转换程序包括根据代码属性信息生成代码片段的转换规则,基于转换规则以及目标代码片段包含的代码属性信息,生成目标代码片段对应的完整代码片段,即从当前代码片段中确定待完善的目标代码片段,并确定与目标代码片段匹配的转换程序,基于转换程序中的转换规则以及目标代码片段包含的代码属性信息,得到与目标代码片段对应的完整代码片段,解决了使用现有的方式处理存在相似性的代码片段时,代码的编写效率不高,且一旦在手动修改时发生错误,还会增加后续代码的调试和测试时间的问题,提高了代码的编写效率。
附图说明
图1是本公开实施例提供的一种代码生成方法流程图;
图2是本公开实施例提供的一种代码生成方法流程图;
图3是本公开实施例提供的一种代码生成方法流程图;
图4是本公开实施例提供的一种代码生成装置结构框图;
图5是本公开实施例一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本公开,而非对本公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本公开相关的部分而非全部结构。
图1是本公开实施例提供的一种代码生成方法流程图,所述方法由代码生成装置来执行,所述装置可以由软件和/或硬件来实现。所述装置可以配置在终端中。所述终端可以是智能手机、平板电脑等。
本实施例可适用于对存在相似性的代码片段进行编写的情况;可选的,所述方法可以应用于编写应用程序中功能模块的代码片段的场景中,或者也可以应用于编写其他相似功能模块的代码的场景中。
相关技术中,当代码片段之间存在相似性时,使用的处理方式一般有两种。一种是人工处理的方式,通过手动复制粘贴相似的代码片段,再加以修改,得到其他代码片段,这样处理导致代码的编写效率不高,且一旦在手动修改时发生错误,还会增加后续代码的调试和测试时间,从而降低整个代码的编写效率;另一种是自动修改的方式,利用替换规则,对代码片段进行自动修改,得到其他代码片段,由于替换规则单一且需要编程人员预先完成大量辅助替换规则的代码,代码的编写效率同样得不到显著的提升。本公开实施例提供的方法,通过从当前代码片段中确定待完善的目标代码片段,并确定与目标代码片段匹配的转换程序,基于转换程序中的转换规则以及目标代码片段包含的代码属性信息,得到与目标代码片段对应的完整代码片段,避免了使用现有的方式处理存在相似性的代码片段时,代码的编写效率不高且易发生错误的问题,提高了代码的编写效率。
如图1所示,本公开实施例提供的技术方案包括:
步骤110、当接收到代码生成指令时,获取当前代码片段。
其中,当前代码片段包括至少一个待完善代码片段,当前代码片段可以为用户在当前代码编写界面编写的代码。其中,代码编写界面可以显示用于触发待完善代码片段生成完整代码片段的控件。用户可以根据自己的需要作用该控件。当检测到该控件被作用时,终端可以接收到代码生成指令,获取当前代码片段。
需要说明的是,当终端接收到代码生成指令的方式并不局限于上述检测到上述控件被作用的情形,还可以是其他情况。
步骤120、从当前代码片段中确定待完善的目标代码片段,目标代码片段中包含代码属性信息。
在本公开实施例的一个实施方式中,可选的,从当前代码片段中确定待完善的目标代码片段,包括:扫描当前代码片段;若从当前代码片段中扫描出待完善的代码片段的标识符,将标识符对应的代码片段作为目标代码片段。
其中,待完善的代码片段可以设置特定的标识符。当接收到代码生成指令时,获取当前代码片段,可以通过扫描程序对当前代码片段进行扫描,若从当前代码片段中扫描出待完善的代码片段的标识符,通过语法树分析将与标识符关联的代码片段作为该标识符对应的代码片段,即目标代码片段。例如,标识符为特定的函数名称,当扫描到该函数标识符时,利用语法树分析获取与函数标识符关联的函数内容,作为目标代码片段。其中,标识符可以是用户任意设置的标识符,或者标识符也可以是预设的注解信息。扫描程序可以是扫描工具。由此,通过标识符,使目标代码片段与转换程序对应,可以快速匹配到转换程序,提高转换程序的匹配效率。
其中,目标代码片段包含代码属性信息,目标代码片段可以是至少一个。代码属性信息包括变量名称、变量类型以及注解信息,或者还可以包括其他信息。
由此,通过根据代码生成指令,获取当前代码片段中待完善的目标代码片段,用于后续进行代码完善,无需通过人工查找的方式确定每个待完善的目标代码片段,可以减少人工查找的工作量,提高查找待完善的代码片段的效率。
步骤130、确定与目标代码片段匹配的转换程序;其中,转换程序包括根据代码属性信息生成代码片段的转换规则。
其中,转换程序是由编程人员预先编写的,用于将目标代码片段转换成完整代码片段的程序,转换程序可以有多个,每个转换程序可以与待完善代码片段的标识符对应。
在本公开实施例的一个实施方式中,可选的,确定与目标代码片段匹配的转换程序,包括:查询与目标代码片段的标识符匹配的转换程序,并作为与目标代码片段匹配的转换程序。
其中,当从当前代码片段中扫描出待完善的代码片段的标识符时,不仅可以确定该标识符对应的代码片段为目标代码片段,还可以确定与标识符对应的转换程序,将该转换程序作为与待完善的目标代码片段匹配的转换程序。每个转换程序中包含对应的转换规则。转换规则用于根据目标代码片段中的代码属性信息,将目标代码片段完善为完整代码片段。其中,标识符可以是转换程序中声明的函数名称。
由此,通过目标代码片段中的标识符确定匹配的转换程序,使目标代码片段与转换程序对应,可以快速匹配到转换程序,提高转换程序的匹配效率。
步骤140、基于转换规则以及目标代码片段包含的代码属性信息,生成目标代码片段对应的完整代码片段。
在本公开实施例中,转换程序的转换规则可以是多个,每个转换规则并不相同。其中,代码属性信息包括变量类型、变量名称以及注解信息等,针对变量类型、变量名称和注解信息等可以对应不同的转换规则。在获取与目标代码片段匹配的转换程序后,基于转换程序中的转换规则以及目标代码片段中的代码属性信息生成与目标代码片段对应的完整代码片段。其中,具体生成完整代码片段的方法可以详见下述实施例的介绍。
相关技术中,利用替换规则,对代码片段进行自动修改的方式,主要是指预先确定待完善的代码片段与完善后的代码片段的关联关系,生成替换规则,利用该替换规则对包含待完善的代码片段的代码进行替换,可见,相关技术中的自动修改方式,仅仅是对代码片段中的差异内容的批量填充或者替换,替换规则的形式单一,所适用的代码范围也有限,其中并不包含对代码结构的深层次的调整。然而,在本公开实施例中,转换规则与代码属性信息对应,由于代码属性信息可以包括变量类型、变量名称以及注解信息等,其可以涵盖代码编写中的任意代码属性,形式灵活多样,由此,本公开实施例可以克服相关技术中,在自动修改代码时,修改规则单一造成的代码编写效率不高的问题。进一步的,相关技术中的自动修改方式,可替换的内容有限,为了保证代码的可读性和完整性,必然需要编程人员在编写待完善的代码片段时,写入较多代码信息,而本公开实施例的技术方案,由于转换规则灵活,可以在很大程度上减少编程人员的代码编写量,进一步提高了代码的编写效率。
本公开实施例提供的技术方案,通过获取当前代码片段,从当前代码片段中确定待完善的,包含代码属性信息的目标代码片段,确定与目标代码片段匹配的转换程序,其中,转换程序包括根据代码属性信息生成代码片段的转换规则,基于转换规则以及目标代码片段包含的代码属性信息,生成目标代码片段对应的完整代码片段,即通过从当前代码片段中确定待完善的目标代码片段,并确定与目标代码片段匹配的转换程序,基于转换程序中的转换规则以及目标代码片段包含的代码属性信息,得到与目标代码片段对应的完整代码片段,避免了使用现有的方式处理存在相似性的代码片段时,代码的编写效率不高且易发生错误的问题,提高了代码的编写效率。
图2是本公开实施例提供的一种代码生成方法流程图,在本实施例中,可选的,代码属性信息包括变量名称、变量类型以及注解信息;
基于转换规则以及目标代码片段包含的代码属性信息,生成目标代码片段对应的完整代码片段,包括:
从目标代码片段中提取包含变量名称的代码字段,并将代码字段中的变量名称按照第一转换规则进行改变,得到第一代码字段;
判断目标代码片段中的变量类型是否可为空,若是,增加预设代码字段,并与变量类型对应的代码字段形成第二代码字段;预设代码字段,用于当运行时将包括变量为空的代码字段忽略;若否,将变量类型对应的代码字段作为第二代码字段;
将目标代码片段中的注解信息按照第二转换规则进行转换,得到第三代码字段;
汇总第一代码字段、第二代码字段和第三代码字段,得到目标代码片段对应的完整代码片段。
如图2所示,本公开实施例提供的技术方案包括:
步骤210、当接收到代码生成指令时,获取当前代码片段。
步骤220、扫描当前代码片段。
步骤230、若从当前代码片段中扫描出待完善的代码片段的标识符,将标识符对应的代码片段作为目标代码片段,目标代码片段中包含代码属性信息。
其中,代码属性信息包括变量名称、变量类型以及注解信息。
代码属性信息中的变量名称是指对目标代码片段中变量的名称进行完善的指示信息;代码属性信息中的变量类型是指对目标代码片段中变量的类型进行完善的指示信息;代码属性信息中的注解信息是指对目标代码片段中使用注解标识标注的,用于完善目标代码中其他属性的信息。
步骤240、查询与目标代码片段的标识符匹配的转换程序,并作为与目标代码片段匹配的转换程序;其中,转换程序包括根据代码属性信息生成代码片段的转换规则。
步骤250、从目标代码片段中提取包含变量名称的代码字段,并将代码字段中的变量名称按照第一转换规则进行改变,得到第一代码字段。
其中,第一转换规则是转换程序中与代码属性信息中的变量名称对应的转换规则,第一转换规则可以根据需要进行确定。例如,目标代码片段包含变量名称的代码字段是“stringExample:String”,将该代码字段中的变量名称按照第一转换规则进行改变,可以得到第一代码字段,可以是“stringExample=string_example””。
步骤260、判断目标代码片段中的变量类型是否可为空,若是,执行步骤270,若否,执行步骤280。
步骤270、增加预设代码字段,并与变量类型对应的代码字段形成第二代码字段;预设代码字段,用于当运行时将包括变量为空的代码字段忽略。
其中,当目标代码片段中的变量类型可为空时,第二代码字段在预设代码片段在运行时,将变量为空的代码字段进行忽略。例如,在语句“let intValue:Int?”中,“Int?”为变量类型对应的代码字段,通过特殊符号“?”可以确定,变量类型可为空,则将语句“letintValue:Int?”与预设代码字段结合,使预设代码字段在运行时,将包括变量为空的代码字段忽略。
步骤280、将变量类型对应的代码字段作为第二代码字段。
其中,当目标代码片段中的变量类型不可为空时,第二代码字段是定义目标代码片段中变量的类型的代码字段。例如,在语句“let intValue:Int”中,通过判断变量类型对应的代码字段“Int”可知,变量的类型不可为空,即变量可利用当前变量类型对应的代码字段进行设置,故变量的类型定义为整型(Int)。
步骤290、将目标代码片段中的注解信息按照第二转换规则进行转换,得到第三代码字段。
其中,第二转换规则是转换程序中与代码属性信息中的注解信息对应的转换规则。第二转换规则可以根据需要进行设置。例如,在语句“//Notic:key=”int”;letintValue:Int”中。“//Notic:key=”int””为目标代码片段中的注解信息,其含义是变量intValue的名称不采用通过第一转换规则确定的“int_value”,而是使用指定的名称“int”,而通过第二转换规则将该注解信息转换后,得到第三代码字段可以为“intValue=“int”。
步骤2100、汇总第一代码字段、第二代码字段和第三代码字段,得到目标代码片段对应的完整代码片段。
在本公开实施例中,通过标识符和语法树分析可以确定与标识符关联的代码片段,将这些代码片段作为待完善的目标代码片段,在确定目标代码片段、目标代码片段中的代码属性信息以及对应的转换规则后,根据目标代码片段中的变量名称代码字段,确定转换规则中的第一转换规则,将第一转换规则作用在变量名称代码字段上,得到第一代码字段,其中,变量名称可以是其他业务代码可识别的业务名称,或者可以是与该代码关联的接口名称等。判断目标代码片段中变量类型是否可为空,若变量类型可为空,则将变量类型对应的代码字段与预设代码字段结合,形成第二代码字段,其中,预设代码字段用于当运行时将包括变量为空的代码字段忽略,若变量的类型不可为空,则说明可利用当前变量类型对应的代码字段对变量进行设置,直接将当前变量类型的代码字段作为第二代码字段;解析目标代码片段的注解信息,按照第二转换规则将注解信息转换为第三代码字段;最后根据转换规则中包含的代码结构信息,将第一代码字段、第二代码字段以及第三代码字段汇总,结合标识符中的具体代码结构信息,便可以得到与目标代码片段对应的完整代码片段。
本可选的实施方式中,提供了基于转换规则以及目标代码片段包含的代码属性信息,生成目标代码片段对应的完整代码片段的具体实施步骤,保证了目标代码片段准确转换为完整代码片段,可以使目标代码片段根据需要生成完整的代码片段,也提高了代码的编写效率。
图3是本公开实施例提供的一种代码生成方法流程图,在本实施例中,可选的,若目标代码片段的总数量为设定数量,且与第一转换程序匹配的目标代码片段的数量为第一数量,以及与第二转换程序匹配的目标代码片段的数量为第二数量;其中,第一数量和第二数量之和等于设定数量,第一数量大于1,第二数量大于1;
基于转换规则以及目标代码片段包含的代码属性信息,生成目标代码片段对应的完整代码片段,包括:
第一转换程序和第二转换程序并行处理分别与第一转换程序和第二转换程序匹配的目标代码片段;
第一转换程序串行处理与第一转换程序匹配的目标代码片段;
第二转换程序串行处理与第二转换程序匹配的目标代码片段;
其中,处理匹配的目标代码片段包括:基于转换程序中的转换规则以及目标代码片段包含的代码属性信息,生成与目标代码片段对应的完整代码片段。
如图3所示,本公开实施例提供的技术方案包括:
步骤310、当接收到代码生成指令时,获取当前代码片段。
步骤320、扫描当前代码片段。
步骤330、若从当前代码片段中扫描出待完善的代码片段的标识符,将标识符对应的代码片段作为目标代码片段,目标代码片段中包含代码属性信息。
步骤340、查询与目标代码片段的标识符匹配的转换程序,并作为与目标代码片段匹配的转换程序;其中,转换程序包括根据代码属性信息生成代码片段的转换规则。
步骤350、若目标代码片段的总数量为设定数量,且与第一转换程序匹配的目标代码片段的数量为第一数量,以及与第二转换程序匹配的目标代码片段的数量为第二数量;其中,第一数量和第二数量之和等于设定数量,第一数量大于1,第二数量大于1。
步骤360、第一转换程序和第二转换程序并行处理分别与第一转换程序和第二转换程序匹配的目标代码片段。
步骤370、第一转换程序串行处理与第一转换程序匹配的目标代码片段。
步骤380、第二转换程序串行处理与第二转换程序匹配的目标代码片段。
其中,处理匹配的目标代码片段包括:基于转换程序中的转换规则以及目标代码片段包含的代码属性信息,生成与目标代码片段对应的完整代码片段。
在本公开实施例中,当与至少四个目标代码片段匹配的转换程序为两个,分别为第一转换程序和第二转换程序时,第一转换程序和第二转换程序并行处理分别与第一转换程序和第二转换程序匹配的目标代码片段,在第一转换程序并行处理通道中,第一转换程序串行处理与第一转换程序匹配的目标代码片段,在第二转换程序并行处理通道中,第二转换程序串行处理与第一转换程序匹配的目标代码片段,例如,目标代码片段的总数量为5,与第一转换程序匹配的目标代码片段的数量为2,与第二转换程序匹配的目标代码片段的数量为3,则第一转换程序串行处理与第一转换程序匹配的2个目标代码片段;第二转换程序串行处理与第二转换程序匹配的3个目标代码片段,第一转换程序与第二转换程序并行执行目标代码片段。
本公开实施例中,提供了在至少四个目标代码片段匹配两个转换程序的情况中,处理目标代码片段,获得完整代码片段的执行过程,通过将并行和串行方式结合,处理目标代码片段,保证了处理端在较优的时间内,消耗较少的资源开销,得到与目标代码片段对应的完整代码片段,有利于提高代码的生成效率,进而提高代码的编写效率。
当然,基于本公开实施例,可以推断出,当出现N个目标代码片段匹配M个转换程序,且N>M的任意情况时,均可以使用本可选的实施方式中的处理方法获取与目标代码片段对应的完整代码片段。
在上述实施例的基础上,可选的,若目标代码片段的数量为多个,与多个目标代码片段匹配的转换程序均相同,且数量为1个;
基于转换规则以及目标代码片段包含的代码属性信息,生成目标代码片段对应的完整代码片段,包括:
匹配的转换程序串行处理多个目标代码片段。
在本可选的实施方式中,当从当前代码片段中确定出多个目标代码片段,与多个目标代码片段匹配的转换程序均相同,且数量为1个时,例如,从当前代码片段中确定出3个目标代码片段,3个目标代码片段中对应的标识符均为AutoCodable,则说明3个目标代码片段对应的转换程序为同一转换程序,则由处理器串行处理确定的多个目标代码片段。
由此,当目标代码片段的数量为多个,且与多个目标代码片段匹配的转换程序为同一程序时,匹配的转换程序串行处理多个目标代码片段,可以使处理端的资源开销较小,有利于降低处理端的资源浪费。
在上述实施例的基础上,可选的,若目标代码片段的数量为多个,与多个目标代码片段分别匹配的转换程序均不相同,且数量为多个;
基于转换规则以及目标代码片段包含的代码属性信息,生成目标代码片段对应的完整代码片段,包括:
多个匹配的转换程序分别并行处理目标代码片段;
其中,处理目标代码片段包括:基于匹配的转换程序中的转换规则以及目标代码片段包含的代码属性信息,生成与目标代码片段对应的完整代码片段。
在本公开实施例中,当目标代码片段的数量为多个,与多个目标代码片段分别匹配的转换程序均不相同,且数量为多个时,例如,从当前代码片段中确定出3个目标代码片段,3个目标代码片段中对应的标识符分别为Transform1、transform2以及transform3,则说明3个目标代码片段对应的转换程序为3个不同的转换程序,则由处理器并行处理确定的多个目标代码片段,即多个目标代码片段同时被处理。
由此,通过调用不同的转换程序,并行处理多个目标代码片段,可以减少处理器调用不同转换程序时的时间开销,从而提高代码的生成效率。
图4是本公开实施例提供的一种代码生成装置结构框图,如图4所示,本公开实施例提供的装置包括:当前代码获取模块410、目标代码确定模块420、转换程序确定模块430和完整代码生成模块440。
其中,当前代码获取模块410,用于当接收到代码生成指令时,获取当前代码片段;
目标代码确定模块420,用于从当前代码片段中确定待完善的目标代码片段,目标代码片段中包含代码属性信息;
转换程序确定模块430,用于确定与目标代码片段匹配的转换程序;其中,转换程序包括根据代码属性信息生成代码片段的转换规则;
完整代码生成模块440,用于基于转换规则以及目标代码片段包含的代码属性信息,生成目标代码片段对应的完整代码片段。
本公开实施例提供的技术方案,通过获取当前代码片段,从当前代码片段中确定待完善的,包含代码属性信息的目标代码片段,确定与目标代码片段匹配的转换程序,其中,转换程序包括根据代码属性信息生成代码片段的转换规则,基于转换规则以及目标代码片段包含的代码属性信息,生成目标代码片段对应的完整代码片段,即通过从当前代码片段中确定待完善的目标代码片段,并确定与目标代码片段匹配的转换程序,基于转换程序中的转换规则以及目标代码片段包含的代码属性信息,得到与目标代码片段对应的完整代码片段,避免了使用现有的方式处理存在相似性的代码片段时,代码的编写效率不高且易发生错误的问题,提高了代码的编写效率。
可选的,目标代码确定模块420具体用于:
扫描当前代码片段;
若从当前代码片段中扫描出待完善的代码片段的标识符,将标识符对应的代码片段作为目标代码片段;
相应的,转换程序确定模块430具体用于:
查询与目标代码片段的标识符匹配的转换程序,并作为与目标代码片段匹配的转换程序。
可选的,若目标代码片段的数量为多个,与多个目标代码片段匹配的转换程序均相同,且数量为1个;
完整代码生成模块440具体用于:
匹配的转换程序串行处理多个目标代码片段;或者;
若目标代码片段的数量为多个,与多个目标代码片段分别匹配的转换程序均不相同,且数量为多个;
完整代码生成模块440具体用于:
多个匹配的转换程序分别并行处理目标代码片段;
其中,处理目标代码片段包括:基于匹配的转换程序中的转换规则以及目标代码片段包含的代码属性信息,生成与目标代码片段对应的完整代码片段。
可选的,若目标代码片段的总数量为设定数量,且与第一转换程序匹配的目标代码片段的数量为第一数量,以及与第二转换程序匹配的目标代码片段的数量为第二数量;其中,第一数量和第二数量之和等于设定数量,第一数量大于1,第二数量大于1;
完整代码生成模块440具体用于:
第一转换程序和第二转换程序并行处理分别与第一转换程序和第二转换程序匹配的目标代码片段;
第一转换程序串行处理与第一转换程序匹配的目标代码片段;
第二转换程序串行处理与第二转换程序匹配的目标代码片段;
其中,处理匹配的目标代码片段包括:基于转换程序中的转换规则以及目标代码片段包含的代码属性信息,生成与目标代码片段对应的完整代码片段。
可选的,代码属性信息包括变量名称、变量类型以及注解信息。
可选的,完整代码生成模块440具体用于:
从目标代码片段中提取包含变量名称的代码字段,并将代码字段中的变量名称按照第一转换规则进行改变,得到第一代码字段;
判断目标代码片段中的变量类型是否可为空,若是,增加预设代码字段,并与变量类型对应的代码字段形成第二代码字段;所述预设代码字段,用于当运行时将包括变量为空的代码字段忽略;若否,将变量类型对应的代码字段作为第二代码字段;
将目标代码片段中的注解信息按照第二转换规则进行转换,得到第三代码字段;
汇总第一代码字段、第二代码字段和第三代码字段,得到目标代码片段对应的完整代码片段。
上述装置可执行本公开任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
下面参考图5,其示出了适于用来实现本公开实施例的电子设备(例如终端设备)500的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储装置508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有电子设备500操作所需的各种程序和数据。处理装置501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
通常,以下装置可以连接至I/O接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘等的存储装置508;以及通信装置509。通信装置509可以允许电子设备500与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备500,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置508被安装,或者从ROM 502被安装。在该计算机程序被处理装置501执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:
当接收到代码生成指令时,获取当前代码片段;
从当前代码片段中确定待完善的目标代码片段,目标代码片段中包含代码属性信息;
确定与目标代码片段匹配的转换程序;其中,转换程序包括根据代码属性信息生成代码片段的转换规则;
基于转换规则以及目标代码片段包含的代码属性信息,生成目标代码片段对应的完整代码片段。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。描述于本公开实施例中所涉及到的模块、单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块、单元的名称在某种情况下并不构成对该模块或单元本身的限定。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
注意,上述仅为本公开的较佳实施例及所运用技术原理。本领域技术人员会理解,本公开不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本公开的保护范围。因此,虽然通过以上实施例对本公开进行了较为详细的说明,但是本公开不仅仅限于以上实施例,在不脱离本公开构思的情况下,还可以包括更多其他等效实施例,而本公开的范围由所附的权利要求范围决定。

Claims (8)

1.一种代码生成方法,其特征在于,包括:
当接收到代码生成指令时,获取当前代码片段;
从所述当前代码片段中确定待完善的目标代码片段,所述目标代码片段中包含代码属性信息;
确定与所述目标代码片段匹配的转换程序;其中,所述转换程序包括根据所述代码属性信息生成代码片段的转换规则;
基于所述转换规则以及所述目标代码片段包含的代码属性信息,生成所述目标代码片段对应的完整代码片段;
所述从所述当前代码片段中确定待完善的目标代码片段,包括:
扫描所述当前代码片段;
若从所述当前代码片段中扫描出待完善的代码片段的标识符,将所述标识符对应的代码片段作为所述目标代码片段;
相应的,所述确定与所述目标代码片段匹配的转换程序,包括:
查询与所述目标代码片段的标识符匹配的转换程序,并作为与所述目标代码片段匹配的转换程序。
2.根据权利要求1所述的方法,其特征在于,
若所述目标代码片段的数量为多个,与多个所述目标代码片段匹配的转换程序均相同,且数量为1个;
所述基于所述转换规则以及所述目标代码片段包含的代码属性信息,生成所述目标代码片段对应的完整代码片段,包括:
所述匹配的转换程序串行处理多个所述目标代码片段;
或者,若所述目标代码片段的数量为多个,与多个所述目标代码片段分别匹配的转换程序均不相同,且数量为多个;
所述基于所述转换规则以及所述目标代码片段包含的代码属性信息,生成所述目标代码片段对应的完整代码片段,包括:
多个所述匹配的转换程序分别并行处理所述目标代码片段;
其中,处理所述目标代码片段包括:基于所述匹配的转换程序中的转换规则以及所述目标代码片段包含的代码属性信息,生成与所述目标代码片段对应的完整代码片段。
3.根据权利要求1所述的方法,其特征在于,若所述目标代码片段的总数量为设定数量,且与第一转换程序匹配的目标代码片段的数量为第一数量,以及与第二转换程序匹配的目标代码片段的数量为第二数量;其中,所述第一数量和所述第二数量之和等于所述设定数量,所述第一数量大于1,所述第二数量大于1;
所述基于所述转换规则以及所述目标代码片段包含的代码属性信息,生成所述目标代码片段对应的完整代码片段,包括:
所述第一转换程序和所述第二转换程序并行处理分别与所述第一转换程序和所述第二转换程序匹配的目标代码片段;
所述第一转换程序串行处理与所述第一转换程序匹配的目标代码片段;
所述第二转换程序串行处理与所述第二转换程序匹配的目标代码片段;
其中,处理所述匹配的目标代码片段包括:基于所述转换程序中的转换规则以及所述目标代码片段包含的代码属性信息,生成与所述目标代码片段对应的完整代码片段。
4.根据权利要求1所述的方法,其特征在于,所述代码属性信息包括变量名称、变量类型以及注解信息。
5.根据权利要求1所述的方法,其特征在于,所述基于所述转换规则以及所述目标代码片段包含的代码属性信息,生成所述目标代码片段对应的完整代码片段,包括:
从所述目标代码片段中提取包含变量名称的代码字段,并将所述代码字段中的变量名称按照第一转换规则进行改变,得到第一代码字段;
判断所述目标代码片段中的变量类型是否可为空,若是,增加预设代码字段,并与所述变量类型对应的代码字段形成第二代码字段;所述预设代码字段,用于当运行时将包括变量为空的代码字段忽略;若否,将所述变量类型对应的代码字段作为第二代码字段;
将所述目标代码片段中的注解信息按照第二转换规则进行转换,得到第三代码字段;
汇总所述第一代码字段、所述第二代码字段和所述第三代码字段,得到所述目标代码片段对应的完整代码片段。
6.一种代码生成装置,其特征在于,包括:
当前代码获取模块,用于当接收到代码生成指令时,获取当前代码片段;
目标代码确定模块,用于从所述当前代码片段中确定待完善的目标代码片段,所述目标代码片段中包含代码属性信息;
转换程序确定模块,用于确定与所述目标代码片段匹配的转换程序;其中,所述转换程序包括根据所述代码属性信息生成代码片段的转换规则;
完整代码生成模块,用于基于所述转换规则以及所述目标代码片段包含的代码属性信息,生成所述目标代码片段对应的完整代码片段;
所述目标代码确定模块具体用于:
扫描所述当前代码片段;
若从所述当前代码片段中扫描出待完善的代码片段的标识符,将所述标识符对应的代码片段作为所述目标代码片段;
相应的,所述转换程序确定模块具体用于:
查询与所述目标代码片段的标识符匹配的转换程序,并作为与所述目标代码片段匹配的转换程序。
7.一种用于代码生成的设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5任一项所述的代码生成方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5任一项所述的代码生成方法。
CN201910244212.7A 2019-03-28 2019-03-28 一种代码生成方法、装置、设备及存储介质 Active CN109947431B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910244212.7A CN109947431B (zh) 2019-03-28 2019-03-28 一种代码生成方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910244212.7A CN109947431B (zh) 2019-03-28 2019-03-28 一种代码生成方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN109947431A CN109947431A (zh) 2019-06-28
CN109947431B true CN109947431B (zh) 2022-09-16

Family

ID=67012284

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910244212.7A Active CN109947431B (zh) 2019-03-28 2019-03-28 一种代码生成方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN109947431B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110737436A (zh) * 2019-09-05 2020-01-31 深圳平安通信科技有限公司 转码方法、装置及计算机可读存储介质
CN111367527B (zh) * 2020-02-18 2023-03-28 北京字节跳动网络技术有限公司 一种语言处理的方法、装置、介质和电子设备
CN111638907A (zh) * 2020-04-20 2020-09-08 北京达佳互联信息技术有限公司 第三方代码片段的替换方法、装置、终端及存储介质
CN112000577B (zh) * 2020-08-25 2023-12-26 得到(天津)文化传播有限公司 一种代码检查方法、装置、电子设备和存储介质
CN113760247A (zh) * 2021-09-18 2021-12-07 中国银行股份有限公司 前端代码的生成方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109086046A (zh) * 2018-08-02 2018-12-25 中国建设银行股份有限公司 一种基于接口规范文档的前端代码自动生成方法及系统
CN109491649A (zh) * 2018-11-20 2019-03-19 北京千丁互联科技有限公司 Dao代码生成方法及计算机终端
CN109509467A (zh) * 2018-11-01 2019-03-22 北京车和家信息技术有限公司 代码生成方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0997183A (ja) * 1995-09-29 1997-04-08 Fujitsu Ltd プログラム変換検査装置及びプログラム変換方法
CN104360861A (zh) * 2014-11-19 2015-02-18 成都实景信息技术有限公司 一种软件代码编写系统
KR101731629B1 (ko) * 2015-12-24 2017-05-02 고려대학교 산학협력단 Circus로부터 go 코드를 자동으로 생성하는 방법 및 장치
KR101734306B1 (ko) * 2016-02-24 2017-05-18 주식회사 핀인사이트 멀티 프로그램 코드 자동 개발 시스템
CN107643984B (zh) * 2017-10-18 2021-04-30 百度在线网络技术(北京)有限公司 用于输出信息的方法和装置
CN109032662B (zh) * 2018-06-19 2021-03-23 未鲲(上海)科技服务有限公司 代码文件生成方法、装置、计算机设备和存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109086046A (zh) * 2018-08-02 2018-12-25 中国建设银行股份有限公司 一种基于接口规范文档的前端代码自动生成方法及系统
CN109509467A (zh) * 2018-11-01 2019-03-22 北京车和家信息技术有限公司 代码生成方法及装置
CN109491649A (zh) * 2018-11-20 2019-03-19 北京千丁互联科技有限公司 Dao代码生成方法及计算机终端

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
SCV2: A model-based validation and verification approach to system-of-systems engineering;R. Baddour 等;《2015 10th System of Systems Engineering Conference (SoSE)》;20150520;422-427 *
基于FreeMarker的企业Web应用代码生成器研究;林钰杰等;《信息技术》;20160925(第09期);103-106+110 *
基于模式的业务构件代码生成方法;冯锦丹 等;《电子学报》;20081215;第36卷(第S1期);19-24 *
支持模型驱动开发的体系结构形式化语义与转换一致性研究;侯金奎;《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》;20090515(第05期);I138-30 *

Also Published As

Publication number Publication date
CN109947431A (zh) 2019-06-28

Similar Documents

Publication Publication Date Title
CN109947431B (zh) 一种代码生成方法、装置、设备及存储介质
CN111367516B (zh) 应用界面生成方法、装置及电子设备
CN109739524B (zh) 一种软件安装包的生成方法、装置、电子设备及存储介质
CN111736840A (zh) 小程序应用的编译方法、运行方法、存储介质及电子设备
CN112395253B (zh) 索引文件生成方法、终端设备、电子设备及介质
CN110960855B (zh) 一种通信协议代码更新方法、装置、电子设备及存储介质
CN110781658A (zh) 简历解析方法、装置、电子设备和存储介质
CN110659210A (zh) 一种信息获取方法、装置、电子设备及存储介质
CN111338944B (zh) 远程过程调用rpc接口测试方法、装置、介质及设备
CN111124541B (zh) 一种配置文件的生成方法、装置、设备及介质
CN112527302B (zh) 错误检测的方法及装置、终端和存储介质
CN113238739A (zh) 一种插件开发和数据获取方法、装置、电子设备及介质
CN109815455B (zh) 项目文件处理方法和装置
CN113821486B (zh) pod库之间依赖关系的确定方法及其装置、电子设备
CN113448585B (zh) 一种线程池的编译方法、装置、电子设备和存储介质
CN111796865B (zh) 一种字节码文件修改方法、装置、终端设备及介质
CN114625373A (zh) 应用转换方法、装置、电子设备和存储介质
CN109725932B (zh) 一种应用组件的说明文档生成方法和装置
CN111367791A (zh) 一种生成测试用例的方法、装置、介质和电子设备
CN111399902B (zh) 客户端源文件处理方法、装置、可读介质与电子设备
CN111625243B (zh) 跨语言任务处理方法、装置及电子设备
CN113553040B (zh) 可见即可说识别功能的注册实现方法、装置、设备及介质
CN114968260A (zh) 混合预编译方法、装置、电子设备及存储介质
CN114116517A (zh) 前端项目分析方法、装置、介质及电子设备
CN117763112A (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
GR01 Patent grant
GR01 Patent grant