CN112445469B - 一种代码生成方法、***、计算机设备及存储介质 - Google Patents
一种代码生成方法、***、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN112445469B CN112445469B CN201910838604.6A CN201910838604A CN112445469B CN 112445469 B CN112445469 B CN 112445469B CN 201910838604 A CN201910838604 A CN 201910838604A CN 112445469 B CN112445469 B CN 112445469B
- Authority
- CN
- China
- Prior art keywords
- code
- design drawing
- codes
- new design
- translation rule
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种代码生成方法、装置、计算机设备及存储介质,在该方案中,在将新设计图转换成设计代码之前,先确定新设计图的基准设计图以及基准设计图的基准代码,利用基准设计图与基准代码确定基准设计图翻译成基准代码的翻译规则,并利用该规则对新设计图进行翻译,得到设计代码,由于翻译规则是基准设计图与基准代码之间的翻译规则,利用该翻译规则对新设计图中的页面元素进行翻译,得到的设计代码即与基准代码相统一。从而可以避免新的设计代码与已有代码不兼容、不匹配的现象,有效减少了人工开发量。
Description
技术领域
本申请涉及人工智能领域,尤其涉及一种代码生成方法、***、计算机设备及存储介质。
背景技术
随着科技的发展,智能化应用不断出现。目前,在代码开发领域,为了减少人工开发量,已有智能化的工具可以实现将设计图直接转换成代码布局,以减少人工手动编写代码布局,但是此类工具生成的代码布局性能通常不高,得到的代码会出现和已有代码不兼容、不匹配的现象,导致还需要人工手动调整,甚至还需要人工重新编写完整代码,使人工开发量并没有得到有效的减少。
发明内容
有鉴于此,本申请提供了一种代码生成方法、***、计算机设备及存储介质,以有效减少人工代码开发量。
为实现上述目的,一方面,本申请提供了一种代码生成方法,包括:
识别新设计图中的所有页面元素;
确定与所述新设计图对应的基准设计图;
确定所述基准设计图与基准代码之间的翻译规则,所述基准代码为所述基准设计图对应的代码;
利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的设计代码。
又一方面,本申请提供了一种代码生成***,包括:
页面元素识别模块,用于识别新设计图中的所有页面元素;
基准设计图确定模块,用于确定与所述新设计图对应的基准设计图;
翻译规则确定模块,用于确定所述基准设计图与基准代码之间的翻译规则,所述基准代码为所述基准设计图对应的代码;
代码生成模块,用于利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的设计代码。
又一方面,本申请还提供了一种计算机设备,包括:
处理器和存储器;
其中,所述处理器用于执行所述存储器中存储的程序;
所述存储器用于存储程序,所述程序至少用于:
识别新设计图中的所有页面元素;
确定与所述新设计图对应的基准设计图;
确定所述基准设计图与基准代码之间的翻译规则,所述基准代码为所述基准设计图对应的代码;
利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的设计代码。
又一方面,本申请还提供了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现本申请任一实施例的内存分配代码检测方法。
由此可见,本申请在将新设计图转换成设计代码之前,先确定新设计图的基准设计图以及基准设计图的基准代码,利用基准设计图与基准代码确定基准设计图翻译成基准代码的翻译规则,并利用该规则对新设计图进行翻译,得到设计代码,由于翻译规则是基准设计图与基准代码之间的翻译规则,利用该翻译规则对新设计图中的页面元素进行翻译,得到的设计代码即与基准代码相统一。从而可以避免新的设计代码与已有代码不兼容、不匹配的现象,有效减少了人工开发量。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本申请实施例的一种计算机设备的一个实施例的组成结构示意图;
图2示出了本申请实施例的一种代码生成方法的一种流程示意图;
图3示出了本申请实施例的一种代码生成方法的一种流程示意图;
图4示出了本申请实施例的一种代码生成方法的一种流程示意图;
图5示出了本申请实施例的一种代码生成方法的一种流程示意图;
图6示出了本申请实施例的一种代码生成方法的一种流程示意图;
图7示出了本申请实施例的一种应用场景实施例对应的流程示意图;
图8示出了本申请实施例的一种应用场景实施例对应的设计稿示意图;
图9示出了本申请实施例的一种代码生成***的一个实施例的组成结构示框图。
具体实施方式
目前已有工具可以实现将设计图直接转换成代码布局,但是这种代码布局并没有兼顾同一项目的已有代码布局,代码的编写规则、布局方式均可能不同,就会出现新生成的代码和已有代码是完全不同的代码,例如,一个历史的购物车页面,它的实现代码是线性布局,同时它是动态页面,页面很多元素都有响应事件以及动画事件。这时业务需要在购物车界面上添加了一个时钟倒数计时器,在之前设计图上添加了这个时钟倒数计时器的图片。由于当前已有工具在进行转换时,并不知道之前代码里的布局逻辑和动态响应事件,会直接只按照设计图的样式生成一套实现代码,这个实现代码可能是另外一种布局,例如相对布局,同时没有各种响应事件和动画事件。这套转化后的代码并不能直接移植到到现有业务工程中,因为和之前页面的代码实现已经有很大差异了,必须手动将转化页面和之前页面进行融合适配,从而增大了工作量,不利于项目快速迭代和演进。而本方案提供一种代码生成方法、***、计算机设备及存储介质,以有效减少人工代码开发量。
为了便于理解,先对本申请的代码生成方法对应的方案所适用的计算机设备进行介绍。可以参见图1,图1示出了本申请一种代码生成方法所适用的计算机设备示意图。
由图1可知,计算机设备10可以包括:处理器11、存储器12、通信接口13、输入单元14和显示器15和通信总线16。
处理器11、存储器12、通信接口13、输入单元14、显示器15、均通过通信总线16完成相互间的通信。
在本申请实施例中,该处理器11,可以为中央处理器(Central Processing Unit,CPU),特定应用集成电路,数字信号处理器、现成可编程门阵列或者其他可编程逻辑器件等。该处理器可以调用存储器12中存储的程序。具体的,处理器可以执行以下内存分配代码检测方法的实施例中计算机设备侧所执行的操作。
存储器12中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本申请实施例中,该存储器中至少存储有用于实现以上任一代码生成方法的程序。
在一种可能的实现方式中,该存储器12可包括存储程序区和存储数据区,其中,存储程序区可存储操作***、以及至少一个功能(比如用于识别页面元素的功能)所需的应用程序等;存储数据区可存储根据计算机的使用过程中所创建的数据,比如,基准设计图、基准代码等等。
此外,存储器12也可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
该通信接口13可以为通信模块的接口,如GSM模块的接口。
本申请还可以包括显示器15和输入单元14等等。
当然,图1所示的计算机设备的结构并不构成对本申请实施例中计算机设备的限定,在实际应用中计算机设备可以包括比图1所示的更多或更少的部件,或者组合某些部件。
其中,图1中的计算机设备10可以为终端(如PC机),也可以为性能高于普通终端的服务器。
在本申请实施例中,计算机设备10可以根据通信接口13利用网络接收外界其他设备发送的新设计图或其他数据;也可以通过自身的输入单元14(如键盘、触摸屏、语音输入设备等)获取新设计图或其他元素。
相应的,计算机设备10中处理器11可以通过通信总线16从通信接口13或者输入单元14接收待检测应用程序代码,并调用存储器12中存储的程序对待检测应用程序代码进行编译,并对编译得到的中间代码进行检测,以确定内存分配代码的位置信息,从而实现方便的在应用程序代码中检测所有内存分配代码的目的。
结合以上共性,参见图2,其示出了本申请一种代码生成方法一个实施例的流程图,本实施例的方法可以包括:
S101,识别新设计图中的所有页面元素。
需要说明的是,一个页面设计图中包括多个页面元素,如文字元素、图案元素等,在本方案中具体可以利用图像处理算法将新设计图中的页面元素进行切割提取,形成独立的页面元素。
S102,确定与所述新设计图对应的基准设计图。
在本方案中,基准设计图有两种情况,第一种是新设计图的原图,即,新设计图是在基准设计图上做出修改得到的设计图,如,在一个购物车页面添加一个时钟倒数计时器,原有购物车页面对应的设计图为基准设计图,添加时钟倒数计时器的设计图为新设计图;第二种则是在转换代码时需要参考的设计图,需要说明的是,设计图最终需要被转换成设计代码,即便是相同的设计图,转换成的设计代码也会有多种形式,如,有多种语法规则、布局规则等,新设计图虽然与基准设计图完全独立,但是新设计图转换成设计代码的规则需要与基准设计图转换成基准代码的规则相同,例如,需要添加一个购物车页面,当前已有订单页面,两个页面属于同一个项目,如购物网站项目,要求同一项目的页面代码实现规则应统一,此种情况下,购物车页面的设计代码就需要与订单页面的设计代码统一,订单页面对应的设计图即可作为基准设计图,购物车页面作为新设计图。
S103,确定所述基准设计图与基准代码之间的翻译规则,所述基准代码为所述基准设计图对应的代码。
需要说明的是,基准代码是由基准设计图转换得到的设计代码,在本方案中需要确定基准设计图与基准代码之间的翻译规则,例如具体可以确定布局规则、事件处理规则等,布局规则具体包括相对布局、绝对布局、线性布局,事件处理规则包括对应元素的响应事件、动画事件等等,翻译规则的内容可以根据具体需要统一的内容确定,在本方案中不做具体限定。
S104,利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的设计代码。
需要说明的是,翻译规则是基准设计图与基准代码之间的翻译规则,利用该翻译规则对新设计图中的页面元素进行翻译,得到的设计代码与基准代码相统一。例如,翻译规则中包括的布局规则为绝对布局,则利用该翻译规则翻译新设计图得到的新设计代码,也同样会采用绝对布局,从而实现与基准代码的代码规则相统一。
在一种具体的实施方式中,所述利用所述翻译规则翻译所述新设计图中的页面元素之前,还包括:
按照预设层次划分规则划分所述新设计图中的页面元素,得到布局元素表;
利用所述翻译规则按照所述布局元素表对所述新设计图中的页面元素进行翻译。
需要说明的是,在元素具体地,在本方案中可以利用深度学习技术对页面元素进行组合布局,从而得到布局元素表,使页面元素的层次分明。
由此可见,本申请在将新设计图转换成设计代码之前,先确定新设计图的基准设计图以及基准设计图的基准代码,利用基准设计图与基准代码确定基准设计图翻译成基准代码的翻译规则,并利用该规则对新设计图进行翻译,得到设计代码,由于翻译规则是基准设计图与基准代码之间的翻译规则,利用该翻译规则对新设计图中的页面元素进行翻译,得到的设计代码即与基准代码相统一。从而可以避免新的设计代码与已有代码不兼容、不匹配的现象,有效减少了人工开发量。
参见图3,在一个具体的实施方式中,所述确定所述基准设计图与基准代码之间的翻译规则,包括:
S201,获取基准设计图与基准代码。
S202,确定所述基准设计图中的所有页面元素。
与新设计图相似,利用图像处理算法将基准设计图中的页面元素进行切割提取,形成独立的页面元素。
S203,将所述基准设计图中的所有页面元素以及所述基准代码输入至预设翻译规则生成器,所述预设翻译规则生成器为利用历史设计图以及历史设计代码进行训练学习得到的翻译规则生成器。
S204,获取所述预设翻译规则生成器输出的翻译规则。
在本方案中可以利用机器学习算法预先对一定量的历史设计图以及对应的历史设计代码进行训练学习,生成一翻译规则生成器,即,利用历史设计图以及对应的历史设计代码进行训练学习,从而确定如何将设计图与设计代码生成翻译规则,将基准设计图与基准代码输入至翻译规则生成器即可得到对应的翻译规则,由于翻译规则生成器可以被复用,在每次需要生成翻译规则时,输入对应的基准设计图与基准代码即可得到翻译规则,使翻译规则的生成过程更加简单方便。
在一种可能的情况中,新设计图是在基准设计图的基础上做出修改得到的设计图,因此,为了避免代码冗余,在生成新设计图的代码时,可以仅对修改部分生成设计代码,而其他与基准设计图相同的代码复用基准代码即可。参见图4,在本实施例中,所述利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的设计代码,包括:
S301,在所述新设计图中的所有页面元素中确定增量元素,所述增量元素为所述新设计图与原设计图之间的差异元素。
增量元素即新设计图与原设计图之间的差异元素,此处的差异不仅包括元素的不同,还包括元素的位置等属性不同。例如新设计图与基准设计图中均有图片1,但是其位置不同,则该图片1也作为增量元素。此外,增量元素不仅包括新设计图在基准设计图的基础上增加的元素,还包括新设计图在基准设计图的基础上减少的元素,例如,在基准设计图中位置A上有一图片1,在新设计图中位置A上图片1被删除,则图片1也作为增量元素。
S302,利用所述翻译规则翻译所述增量元素,得到增量代码。
在本方案中,仅利用翻译规则对增量元素进行翻译,得到增量代码。
S303,将所述增量代码与所述基准代码进行融合,得到所述新设计图对应的设计代码。
在本方案中,仅需要在基准代码的基础上,将在增量代码进行融合即可得到新设计图对应的设计代码,也就是说,新的设计代码复用了已有的基准代码,从而对于相同内容的代码仅有一份,避免了代码的冗余。
在一种具体的实施方式中,所述将所述增量代码与所述基准代码进行融合,包括:
利用预先训练的代码融合器将所述增量代码与所述基准代码进行融合,所述代码融合器为利用历史增量代码与基准代码之间的融合算法训练得到的融合器。
在本方案中,融合算法是历史增量代码与基准代码之间进行融合时的融合规则,在每次融合时,记录对应的融合算法,通过对一定量的已有融合算法进行训练学习,即可得到对应该基准代码的更准确的融合规则,将该规则作为代码融合器,利用代码融合器对当前的增量代码和基准代码进行融合,即可得到较为准确的融合结果。
在一个设计图中,包括若干页面元素,在UI(User Interface,用户界面)框架中,包括了多种的元素类型,每个页面元素都属于某个元素类型,不同的场景中,元素类型的层级不同,而元素类型的层级不同,对应的设计代码也就不同。
参见图5,在一个具体的实施方式中,为了使生成的设计代码更加准确,在本方案中,对新设计图进行翻译之前还需要对页面元素进行层次划分。具体地,所述利用所述翻译规则翻译所述新设计图中的页面元素之前,还包括:
S401,按照预设层次划分规则划分所述新设计图中的页面元素,得到布局元素表。
需要说明的是,预设层次是根据实际场景设计的层级关系,例如,预设层次包括根元素、根元素的直接子(child)元素、根元素的后代元素、子元素的直接子元素,等等。
在一个具体的实施方式中,首先可以利用确定元素的类别,在一种可能的情况中,元素的类别具体可以如表1所示,以表1中元素类型为例,Application是根元素,其他元素都是它的后代(descendant)元素,Window是Application的直接子(child)元素,Table是Application的直接子元素,Table当然也是Application的后代元素。以此类推,Cell是Table的直接子元素,StaticText是Cell的直接子元素。具体的元素类型以及层次设计需要根据实际情况设定,本方案中不做具体限定。
在本方案中,具体可以利用深度学习算法将各个元素按照预设层次进行划分。
S402,利用所述翻译规则按照所述布局元素表对所述新设计图中的页面元素进行翻译。
在完成层次划分后,即可利用翻译规则按照布局元素表对应的层次规则对新设计图进行翻译,得到新设计图对应的设计代码。
在对新设计图进行翻译之前对页面元素进行层次划分,在翻译时按照实际的层次进行翻译,从而使翻译的设计代码与实际情况更相符,使设计代码更加准确。
对应同一设计图与同一翻译规则,翻译得到的设计代码也可能会有多种版本,如,翻译规则只定义了布局规则,未定义事件响应规则,则可能会针对不同的事件响应规则翻译出不同的设计代码,因此本申请实施例提供下面对本申请实施例提供的一种具体的代码生成方法,在上述实施例的基础上,对所述利用所述翻译规则翻译所述新设计图中的页面元素的步骤进行进一步的限定与说明。
参见图6,所述利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的设计代码,包括:
S501,利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的至少两套设计代码。
S502,获取对应所述两套设计代码的选择结果。
在本方案中,利用翻译规则翻译得到的设计代码至少包括两套,此时由用户对两套代码进行选择,获取选择结果。
S503,利用所述选择结果确定目标设计代码。
利用选择结果确定目标设计代码,将目标设计代码作为最终与新设计图对应的代码。
可见本方案中可以对同一设计图与同一翻译规则生成不同的代码,并为用户提供选择,根据用户的选择结果确定最终的设计代码,使设计代码更符合用户的实际需求,无需手动调整,操作更加方便。
在一种可能的情况中,在上述实施例的基础上,所述利用所述选择结果确定目标设计代码之后,还包括:
利用机器学习算法训练所述目标设计代码,以训练得到代码选择模型,所述代码选择模型用于确定设计代码的选择结果。
在本方案中,利用机器学习算法学习用户的选择结果,也就是说学习用户的选择喜好,不断训练用户的选择喜好,从而可以生成符合用户选择喜好的选择模型,再次需要进行选择时,可以直接利用选择模型确定目标设计代码,无需人工参与即可得出符合用户选择喜好的设计代码。
参见图7,在本方案中,包括元素提取器、差异分析器、翻译规则生成器以及代码融合器,需要说明的是以上工具均可以是集成在一台计算机设备中的一个或多个程序,也可以是部署在不同计算机设备上的多个程序,部署在不同计算机设备上时,可以通过网络进行数据传输。
参见图8,以购物车页面为例,在基准设计图中,包括商品图片1、商品描述1,新设计图在基准设计图的基础上,增加商品图片2、商品描述2与时钟倒数计时器。
首先,新设计图与基准设计图分别输入元素提取器,提取得到对应新设计图的新页面元素与对应基准设计图的基准页面元素。
利用预设层次划分规则将新页面元素与基准页面元素进行层次划分,分别得到新页面布局元素表与基准页面布局元素表。
将新页面布局元素表与基准页面布局元素表输入至差异分析器,得到增量元素。
在本方案中,增量元素具体是商品图片2、商品描述2与时钟倒数计时器。
将基准页面布局元素表与基准代码输入至翻译规则生成器,得到翻译规则。
基准页面布局元素表翻译为基准代码的规则具体有商品图片与商品描述采用相对布局,商品图片、商品描述均对应有响应事件,如,点击图片跳转到商品详情页面。则对应的翻译规则依然包括相对布局以及响应事件。
利用翻译规则翻译增量元素,得到增量代码。
利用翻译规则对上述商品图片2、商品描述2与时钟倒数计时器进行翻译,得到对应的增量代码,增量代码中也同样采用了相对布局、响应时间等。
将增量代码与基准代码输入至代码融合器,生成与新设计图对应的设计代码。
另一方面,本申请还提供了一种代码生成***,参见图9,本申请实施例提供的一种代码生成***,具体包括:
页面元素识别模块601,用于识别新设计图中的所有页面元素;
基准设计图确定模块602,用于确定与所述新设计图对应的基准设计图;
翻译规则确定模块603,用于确定所述基准设计图与基准代码之间的翻译规则,所述基准代码为所述基准设计图对应的代码;
代码生成模块604,用于利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的设计代码。
可选地,代码生成模块604包括:
增量元素确定单元,用于在所述新设计图中的所有页面元素中确定增量元素,所述增量元素为所述新设计图与原设计图之间的差异元素;
增量代码生成单元,用于利用所述翻译规则翻译所述增量元素,得到增量代码;
融合单元,用于将所述增量代码与所述基准代码进行融合,得到所述新设计图对应的设计代码。
可选地,融合单元具体用于利用预先训练的代码融合器将所述增量代码与所述基准代码进行融合,所述代码融合器为利用历史增量代码与基准代码之间的融合算法训练得到的融合器。
可选地,所述***还包括:
层次划分模块,用于按照预设层次划分规则划分所述新设计图中的页面元素,得到布局元素表;
翻译模块,用于利用所述翻译规则按照所述布局元素表对所述新设计图中的页面元素进行翻译。
可选地,翻译规则确定模块603包括:
基准信息获取单元,用于获取基准设计图与基准代码;
基准元素确定单元,用于确定所述基准设计图中的所有页面元素;
输入单元,用于将所述基准设计图中的所有页面元素以及所述基准代码输入至预设翻译规则生成器,所述预设翻译规则生成器为利用历史设计图以及历史设计代码进行训练学习得到的翻译规则生成器;
获取单元,用于获取所述预设翻译规则生成器输出的翻译规则。
可选地,所述代码生成模块604包括:
翻译单元,用于利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的至少两套设计代码;
选择结果获取单元,用于获取对应所述两套设计代码的选择结果;
目标设计代码确定单元,用于利用所述选择结果确定目标设计代码。
可选地,所述***还包括:
选择模型确定模块,用于利用机器学习算法训练所述目标设计代码,以训练得到代码选择模型,所述代码选择模型用于确定设计代码的选择结果。
另一方面,本申请还提供了一种存储介质,该存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,用于实现如上任意一个实施例中所描述的内存分配代码检测方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种代码生成方法,其特征在于,包括:
识别新设计图中的所有页面元素;
确定与所述新设计图对应的基准设计图;
确定所述基准设计图与基准代码之间的翻译规则,所述基准代码为所述基准设计图对应的代码;
利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的设计代码;
其中,所述利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的设计代码,包括:
在所述新设计图中的所有页面元素中确定增量元素,所述增量元素为所述新设计图与原设计图之间的差异元素;
利用所述翻译规则翻译所述增量元素,得到增量代码;
利用预先训练的代码融合器将所述增量代码与所述基准代码进行融合,得到所述新设计图对应的设计代码,所述代码融合器为利用历史增量代码与基准代码之间的融合算法训练得到的融合器。
2.根据权利要求1所述的方法,其特征在于,所述利用所述翻译规则翻译所述新设计图中的页面元素之前,还包括:
按照预设层次划分规则划分所述新设计图中的页面元素,得到布局元素表;
利用所述翻译规则按照所述布局元素表对所述新设计图中的页面元素进行翻译。
3.根据权利要求1所述的方法,其特征在于,所述确定所述基准设计图与基准代码之间的翻译规则,包括:
获取基准设计图与基准代码;
确定所述基准设计图中的所有页面元素;
将所述基准设计图中的所有页面元素以及所述基准代码输入至预设翻译规则生成器,所述预设翻译规则生成器为利用历史设计图以及历史设计代码进行训练学习得到的翻译规则生成器;
获取所述预设翻译规则生成器输出的翻译规则。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的设计代码,包括:
利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的至少两套设计代码;
获取对应所述两套设计代码的选择结果;
利用所述选择结果确定目标设计代码。
5.根据权利要求4所述的方法,其特征在于,所述利用所述选择结果确定目标设计代码之后,还包括:
利用机器学习算法训练所述目标设计代码,以训练得到代码选择模型,所述代码选择模型用于确定设计代码的选择结果。
6.一种代码生成***,其特征在于,包括:
页面元素识别模块,用于识别新设计图中的所有页面元素;
基准设计图确定模块,用于确定与所述新设计图对应的基准设计图;
翻译规则确定模块,用于确定所述基准设计图与基准代码之间的翻译规则,所述基准代码为所述基准设计图对应的代码;
代码生成模块,用于利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的设计代码;
其中,所述代码生成模块具体用于:
在所述新设计图中的所有页面元素中确定增量元素,所述增量元素为所述新设计图与原设计图之间的差异元素;
利用所述翻译规则翻译所述增量元素,得到增量代码;
利用预先训练的代码融合器将所述增量代码与所述基准代码进行融合,得到所述新设计图对应的设计代码,所述代码融合器为利用历史增量代码与基准代码之间的融合算法训练得到的融合器。
7.根据权利要求6所述的***,其特征在于,所述***还包括:
层次划分模块,用于按照预设层次划分规则划分所述新设计图中的页面元素,得到布局元素表;
翻译模块,用于利用所述翻译规则按照所述布局元素表对所述新设计图中的页面元素进行翻译。
8.根据权利要求6所述的***,其特征在于,所述翻译规则确定模块包括:
基准信息获取单元,用于获取基准设计图与基准代码;
基准元素确定单元,用于确定所述基准设计图中的所有页面元素;
输入单元,用于将所述基准设计图中的所有页面元素以及所述基准代码输入至预设翻译规则生成器,所述预设翻译规则生成器为利用历史设计图以及历史设计代码进行训练学习得到的翻译规则生成器;
获取单元,用于获取所述预设翻译规则生成器输出的翻译规则。
9.根据权利要求6至8任一项所述的***,其特征在于,所述代码生成模块包括:
翻译单元,用于利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的至少两套设计代码;
选择结果获取单元,用于获取对应所述两套设计代码的选择结果;
目标设计代码确定单元,用于利用所述选择结果确定目标设计代码。
10.根据权利要求9所述的***,其特征在于,所述***还包括:
选择模型确定模块,用于利用机器学习算法训练所述目标设计代码,以训练得到代码选择模型,所述代码选择模型用于确定设计代码的选择结果。
11.一种计算机设备,其特征在于,包括:
处理器和存储器;
其中,所述处理器用于执行所述存储器中存储的程序;
所述存储器用于存储程序,所述程序至少用于:
识别新设计图中的所有页面元素;
确定与所述新设计图对应的基准设计图;
确定所述基准设计图与基准代码之间的翻译规则,所述基准代码为所述基准设计图对应的代码;
利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的设计代码;
其中,所述利用所述翻译规则翻译所述新设计图中的页面元素,得到与所述新设计图对应的设计代码,包括:
在所述新设计图中的所有页面元素中确定增量元素,所述增量元素为所述新设计图与原设计图之间的差异元素;
利用所述翻译规则翻译所述增量元素,得到增量代码;
利用预先训练的代码融合器将所述增量代码与所述基准代码进行融合,得到所述新设计图对应的设计代码,所述代码融合器为利用历史增量代码与基准代码之间的融合算法训练得到的融合器。
12.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上权利要求1至5任一项所述的代码生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910838604.6A CN112445469B (zh) | 2019-09-05 | 2019-09-05 | 一种代码生成方法、***、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910838604.6A CN112445469B (zh) | 2019-09-05 | 2019-09-05 | 一种代码生成方法、***、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112445469A CN112445469A (zh) | 2021-03-05 |
CN112445469B true CN112445469B (zh) | 2023-10-13 |
Family
ID=74733233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910838604.6A Active CN112445469B (zh) | 2019-09-05 | 2019-09-05 | 一种代码生成方法、***、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112445469B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168969A (zh) * | 2016-03-07 | 2017-09-15 | 北京搜狗科技发展有限公司 | 一种页面元素控制方法、装置及电子设备 |
CN109634598A (zh) * | 2018-12-14 | 2019-04-16 | 北京字节跳动网络技术有限公司 | 一种页面显示方法、装置、设备及存储介质 |
-
2019
- 2019-09-05 CN CN201910838604.6A patent/CN112445469B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168969A (zh) * | 2016-03-07 | 2017-09-15 | 北京搜狗科技发展有限公司 | 一种页面元素控制方法、装置及电子设备 |
CN109634598A (zh) * | 2018-12-14 | 2019-04-16 | 北京字节跳动网络技术有限公司 | 一种页面显示方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112445469A (zh) | 2021-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109299446B (zh) | 报告生成方法及装置 | |
CN106682219B (zh) | 关联文档获取方法及装置 | |
CN111414166B (zh) | 代码的生成方法、装置、设备及存储介质 | |
US9959257B2 (en) | Populating visual designs with web content | |
CN103810152A (zh) | 可视化公式编辑器 | |
CN105843800A (zh) | 一种基于doi的语言信息展示方法及装置 | |
CN110727417B (zh) | 一种数据处理方法和装置 | |
CN111581920A (zh) | 文档转换方法、装置、设备及计算机存储介质 | |
CN104823158A (zh) | 用于简化的知识工程的方法与*** | |
CN113407284A (zh) | 导航界面的生成方法、装置、存储介质及电子设备 | |
CN114594927A (zh) | 低代码开发方法、装置、***、服务器及存储介质 | |
CN116227505A (zh) | 一种国际化文件翻译方法、装置、设备及介质 | |
CN106776779B (zh) | 基于Mac平台的JSON数据生成实体文件的方法 | |
CN103984554A (zh) | 软件设计文档的生成方法及装置 | |
CN113268232B (zh) | 一种页面皮肤生成方法、装置和计算机可读存储介质 | |
CN117971875A (zh) | 数据查询方法、装置、介质及电子设备 | |
CN112445469B (zh) | 一种代码生成方法、***、计算机设备及存储介质 | |
Krosnick et al. | Promises and Pitfalls of Using LLMs for Scraping Web UIs | |
CN115796190B (zh) | 基于vue和webpack的前端国际化多语言转换方法及*** | |
CN112069236A (zh) | 关联文件的展示方法、装置、设备及存储介质 | |
CN114296726A (zh) | 一种代码生成方法、装置、计算机设备和存储介质 | |
CN110928540A (zh) | 一种页面生成方法及装置 | |
CN115525629A (zh) | 数据处理方法、装置、存储介质及电子设备 | |
CN115629763A (zh) | 目标代码的生成方法、npu指令的显示方法及装置 | |
CN104156209A (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 |