CN113805861B - 基于机器学习的代码生成方法、代码编辑***及存储介质 - Google Patents
基于机器学习的代码生成方法、代码编辑***及存储介质 Download PDFInfo
- Publication number
- CN113805861B CN113805861B CN202111091494.5A CN202111091494A CN113805861B CN 113805861 B CN113805861 B CN 113805861B CN 202111091494 A CN202111091494 A CN 202111091494A CN 113805861 B CN113805861 B CN 113805861B
- Authority
- CN
- China
- Prior art keywords
- code
- prediction
- interface
- codes
- training
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本申请适用于人工智能技术领域,提供了一种基于机器学习的代码生成方法、代码编辑***及存储介质。上述代码生成方法通过代码编辑***获取新建接口的接口类型,并获取与接口类型对应的索引关系,以及通过上述索引关系预测与当前输入代码通常进行搭配使用的预测代码,并可以在指定位置***预测代码,实现高相关性的代码预测和自动输入,从而减少开发人员在不同测试案例中编写相同代码的工作量,提高测试案例的编写效率,进而提高代码测试效率。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种基于机器学习的代码生成方法、代码编辑***及存储介质。
背景技术
在开发人员完成源代码的编写后,需要对源代码进行代码测试(Code Test),代码测试按照先后顺序需要分别进行检查(Review)、排除故障(Debug)及运行测试案例(TestCase)三种测试,其中检查测试和排除故障测试通常可以通过代码编辑***或开发环境自带的测试组件完成,运行测试案例则要求开发人员根据源代码的实际运用场景搭建测试案例。
源代码可以在多种运用场景工作时,开发人员需要根据不同运用场景搭建对应的多种测试案例,而搭建多种测试案例的代码数量多,且多种测试案例之间存在一定数量的相同代码,导致编写测试案例耗费的时间过多且反复编写相同代码,因此,如何解决测试案例编写效率差成为当前亟需解决的问题。
发明内容
有鉴于此,本申请实施例提供了一种基于机器学习的代码生成方法、代码编辑***及存储介质,以解决搭建多种测试案例的代码数量多,且多种测试案例之间存在一定数量的相同代码,导致编写测试案例耗费的时间过多且反复编写相同代码,测试案例编写效率差的问题。
本申请实施例的第一方面提供了一种基于机器学习的代码生成方法,应用于代码编辑***,所述方法包括:
根据新建接口的标识,获取新建接口的接口类型,所述接口类型包括场景类型、功能类型及步骤类型;
获取所述新建接口的当前输入代码的属性,所述属性包括封装、对象、函数、变量及数值;
获取所述接口类型对应的索引关系,所述索引关系包括多段预测代码,所述多段预测代码中的任意一段第一预测代码具有对应的至少一段第二预测代码,所述第一预测代码和所述第二预测代码的属性不同;
在所述当前输入代码的字符与所述第一预测代码的字符相同,且所述当前输入代码的属性与所述第一预测代码的属性相同时,显示所述第一预测代码对应的至少一段第二预测代码;
在选中所述第二预测代码时,将所述第二预测代码***所述代码编辑***的指定位置。
本申请实施例的第一方面提供一种代码生成方法,通过代码编辑***获取新建接口的接口类型,并获取与接口类型对应的索引关系,以及通过上述索引关系预测与当前输入代码通常搭配使用的预测代码,并可以在指定位置***预测代码,实现高相关性的代码预测和自动输入,从而减少开发人员在不同测试案例中编写相同代码的工作量,提高测试案例的编写效率,进而提高代码测试效率。
本申请实施例的第二方面提供了一种基于机器学习的代码编辑***,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本申请实施例第一方面提供的所述代码生成方法的步骤。
在一个实施例中,所述处理器包括代码提示组件;
所述代码提示组件用于检测当前输入代码;
所述代码提示组件还用于在所述当前输入代码的字符与第一预测代码的字符相同,且所述当前输入代码的属性与第一预测代码的属性相同时,显示所述第一预测代码对应的至少一段第二预测代码;
所述代码提示组件还用于在所述当前输入代码的字符,与第一预测代码中连续的预设数量的字符相同时,显示所述第一预测代码。
在一个实施例中,所述处理器包括代码自动输入组件;
所述代码自动输入组件与代码提示组件连接;
所述代码自动输入组件用于在选中第二预测代码时,将所述第二预测代码***所述代码编辑***的指定位置;
所述代码自动输入组件还用于在选中第一预测代码时,将当前输入代码替换为所述第一预测代码。
本申请实施例的第二方面提供一种代码编辑***,通过检测当前输入代码,可以判断用户试图输入的完整代码,并显示第一预测代码,还可以判断与当前输入代码经常搭配使用的预测代码,并显示第二预测代码,以及通过将当前输入代码替换为第一预测代码,或者在指定位置输入第二预测代码,可以实现代码预测,和预测代码的自动输入,大幅提高代码编辑***的智能性,从而提高开发人员的编码效率。
本申请实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现本申请实施例第一方面提供的代码生成方法的步骤。
可以理解的是,上述第三方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的代码编辑***的架构示意图;
图2是本申请实施例提供的代码生成方法的第一种流程示意图;
图3是本申请实施例提供的一种接口类型的包含关系图;
图4是本申请实施例提供的一种预设接口类型库的对应关系表;
图5是本申请实施例提供的代码生成方法的第二种流程示意图;
图6是本申请实施例提供的代码生成方法的第三种流程示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在应用中,在源代码可以在多种运用场景工作时,测试案例的种类也同步增加,使开发人员在编写测试案例上耗费的时间过多,影响代码测试效率。
针对上述技术问题,本申请实施例提供一种基于机器学习的代码生成方法,通过获取新建接口的接口类型,进一步获取与接口类型对应的索引关系,从而预测与当前输入代码通常进行搭配使用的预测代码,并可以在指定位置***预测代码,实现高相关性的代码预测和自动输入,提高测试案例的开发速度,进而提高代码测试效率。
本申请实施例提供的代码生成方法可以应用于能够对代码进行数据处理的任意终端设备。终端设备可以是手机、平板电脑、可穿戴设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本等,本申请实施例对终端设备的具体类型不作任何限制。
在应用中,本申请实施例提供的代码测试方法适用于能够对代码编辑***进行数据处理的任意电子设备。电子设备可以是手机、平板电脑、可穿戴设备、车载设备、增强现实/虚拟现实设备、笔记本电脑等,本申请实施例对电子设备的具体类型不作任何限制。
其中,上述代码编辑***需要具备自定义组件的安装功能或者为开源(OpenSource)环境,自定义组件具体可以是代码编辑辅助(提示)组件,上述代码编辑***可以集成在集成开发环境中(Integrated Development Environment,IDE),集成开发环境具体可以包括Visual Studio(一款微软公司开发的IDE)、NetBeans(一款用于JAVA语言的IDE)、Eclipse(一款用于JAVA语言的IDE)等,本申请实施例对集成开发环境的具体类型不作任何限制。
图1示例性的示出了代码编辑***100的架构示意图,代码编辑***100包括存储器101、处理器102以及存储在存储器101中并可在处理器102上运行的计算机程序103;
其中,处理器101还包括代码提示组件104,代码提示组件104用于检测当前输入代码,并根据当前输入代码的字符和(或)属性,显示预测代码。输入代码可以通过键盘、鼠标等输入设备105实现,预测代码可以在显示屏等输出设备106上显示,存储器101,处理器102,输入设备105,输出设备106两两之间对应连接,并基于通信线路107进行通信。
在应用中,代码编辑***存储有每种接口类型对应的索引关系,代码提示组件可以根据新建接口的接口类型,获取对应的索引关系。索引关系包括多段预测代码,具体可以包括预测封装代码、预测对象代码、预测函数代码、预测变量代码或预测数值代码等多种属性的预测代码,每段预测代码包含的具体字符各不相同。需要说明的是,多段预测代码之间具有对应关系,具体的,任意一段第一预测代码具有对应的至少一段第二预测代码,第一预测代码和第二预测代码的属性不同,其中,第一预测代码可以是多段预测代码中的任意一段预测代码。
在应用中,代码提示组件用于在检测到当前输入代码与第一检测代码相同,且当前输入代码的属性与第一预测代码的属性相同时,可以根据索引关系获取第一预测代码对应的至少一段第二预测代码,并在代码编辑***的编辑页面显示对应的至少一段第二预测代码,以提示用户在当前接口类型下,与第一预测代码经常搭配使用的第二预测代码。
在应用中,代码提示组件还用于在检测到当前输入代码的字符,与第一预测代码中连续的预设数量的字符相同时,可以在代码编辑***的编辑页面显示对应的至少一段第一预测代码,以在当前接口类型下,根据用户输入代码的部分字符,判断用户试图输入的完整代码。
在一个实施例中,处理器101还包括代码自动输入组件108;
代码自动输入组件108与代码提示组件104连接;
代码自动输入组件108用于在选中第二预测代码时,将第二预测代码***代码编辑***100的指定位置;
代码自动输入组件108还用于在选中第一预测代码时,将当前输入代码替换为第一预测代码。
在应用中,代码自动输入组件用于,在开发人员通过点击操作或按键操作选中第二预测代码,将第二预测代码***代码编辑***的指定位置,指定位置具体可以是当前输入代码的后一位,指定位置可以根据开发人员的实际需要进行选择。
在应用中,代码自动输入组件还用于,在开发人员通过点击操作或按键操作选中第一预测代码,将当前输入代码替换为第一预测代码,减少开发人员对于相同代码进行重复编写的工作量,提高测试案例的开发效率。
在应用中,处理器在执行计算机程序时可以实现下述图2、图5及图6所示的代码生成方法。
在应用中,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在应用中,存储器在一些实施例中可以是终端设备的内部存储单元,例如终端设备的硬盘或内存。存储器在另一些实施例中也可以是终端设备的外部存储设备,例如终端设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器还可以既包括终端设备的内部存储单元也包括外部存储设备。存储器用于存储操作***、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如计算机程序的程序代码等。存储器还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例提供的代码编辑***,通过检测当前输入代码,可以判断用户试图输入的完整代码,并显示第一预测代码,还可以判断与当前输入代码经常搭配使用的预测代码,并显示第二预测代码,以及通过将当前输入代码替换为第一预测代码,或者在指定位置输入第二预测代码,可以实现代码预测,和预测代码的自动输入,大幅提高代码编辑***的智能性,从而提高开发人员的编码效率。
可以理解的是,本申请实施例示意的结构并不构成对代码编辑***100的具体限定。在本申请另一些实施例中,代码编辑***100可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括网络接入设备等。图示的部件可以以硬件,软件或软件和硬件的组合实现。
如图2所示,本申请实施例提供的基于机器学习的代码生成方法,应用于代码编辑***,包括如下步骤S201至步骤S205:
步骤S201、根据新建接口的标识,获取新建接口的接口类型,接口类型包括场景类型、功能类型及步骤类型。
在应用中,接口类型可以按照树形结构(Tree Structure)进行划分,根据树形结构的包含关系,接口类型从根结构到子结构可以划分为场景类型、功能类型及步骤类型等,场景类型具体可以包括储蓄场景、贷款场景或投资场景等,功能类型具体可以包括转账功能或存款功能等,步骤类型具体可以包括身份认证步骤、转账结果获取步骤等。
在应用中,上述三种接口类型的接口的包含关系具体可以是:一个场景类型的接口包括多个功能类型的接口,一个功能类型的接口包括多个步骤类型的接口;上述三种接口类型的接口的作用具体可以是:一个场景类型的接口可以设置测试案例的至少一个使用场景,一个功能类型的接口可以设置测试案例在一个使用场景中的至少一个功能,一个步骤类型的接口可以设置测试案例在一个功能中的至少一个测试步骤。例如(如图3所示),储蓄场景接口包括转账功能接口和存款功能接口,其中转账功能接口包括身份认证步骤接口、确认转账对象步骤接口、获取转账金额步骤接口、发送转账指令步骤接口及获取转账结果步骤接口。接口类型的划分可以根据实际需要进行设置,本申请实施例对接口类型的具体划分规则或具体结构不作任何限制。
图3示例性的示出了一种接口类型的包含关系图。
在应用中,根据代码的编写规则,开发人员在编写测试案例时需要对接口进行定义,代码编辑***可以读取用于定义新建接口的标识,获取新建结构的接口类型。通过对接口类型进行划分和识别,可以快速判断每个接口在测试案例中的作用。
在一个实施例中,新建接口的标识可以包括新建接口的名称或新建接口的注释,步骤S201包括:
获取新建接口的名称,基于预设接口类型库进行名称检索,获取新建接口的接口类型;
或者,获取新建接口的注释,基于预设接口类型库进行注释检索,获取新建接口的接口类型。
在应用中,代码编辑***存储有预设接口类型库,预设接口类型库包括预设接口类型、预设名称及预设注释,且每个预设接口类型具有对应的至少一个预设名称和至少一个预设注释(具体对应关系可以参照图4)。需要说明的是,由于代码的编写规则限制,预设名称采用英文编写,预设注释可以采用任意一种语言编写,具体可以采用中文或英文编写。
图4示例性的示出了一种预设接口类型库的对应关系表。
在应用中,代码编辑***可以基于预设接口类型库进行检索,以获取新建接口的接口类型。检索步骤具体可以是:先读取新建接口的名称,根据预设接口类型库进行名称检索,如果存在与新建接口的名称相同的预设名称,判定名称检索成功,获取与新建接口的名称对应的预设接口类型,并作为新建接口的接口类型;如果不存在与新建接口的名称相同的预设名称,判定名称检索失败,开始读取新建接口的注释,根据预设接口类型库进行注释检索,如果存在与新建接口的注释相同的预设注释,判定注释检索成功,获取与新建接口的注释对应的预设接口类型,并作为新建接口的接口类型;如果不存在与新建接口的注释相同的预设注释,判定注释检索失败,输出接口类型选择信号,向用户提供多种预设接口类型并提示用户进行手动选择。
在应用中,可以先进行名称检索,再进行注释检索;也可以先进行注释检索,再进行名称检索,本申请实施例对名称检索和注释检索的执行顺序不作任何限制。
步骤S202、获取新建接口的当前输入代码的属性,属性包括封装、对象、函数、变量及数值。
在应用中,代码编辑***可以实时获取编辑中的新建接口的当前输入代码,并判断当前输入代码的属性,输入代码的属性可以包括封装(Encapsulation)、对象(Class,又称为类)、函数(Function)、变量(Variable)或数值(Value)等多种属性;具体的,在预设判断节点代码编辑***可以读取当前编写的测试案例的完整代码逻辑,以判断输入代码的属性。其中,预设判断节点可以是当用户完成一个单词的编写时,也可以是当用户完成一行代码(1-Line-Code)的编写切换到下一行时,还可以是用户完成一个代码块的编写时。本申请实施例对预设判断节点的设置不作任何限制。
步骤S203、获取接口类型对应的索引关系,索引关系包括多段预测代码,多段预测代码中的任意一段第一预测代码具有对应的至少一段第二预测代码,第一预测代码和第二预测代码的属性不同。
在应用中,代码编辑***存储有每种接口类型对应的索引关系,根据新建接口的接口类型,可以获取对应的索引关系。索引关系包括多段预测代码,具体可以包括预测封装代码、预测对象代码、预测函数代码、预测变量代码或预测数值代码等多种属性的预测代码,每段预测代码包含的具体字符各不相同。需要说明的是,多段预测代码之间具有对应关系,具体的,任意一段第一预测代码具有对应的至少一段第二预测代码,第一预测代码和第二预测代码的属性不同,其中,第一预测代码可以是多段预测代码中的任意一段预测代码,以下进行举例说明:
例如,假设新建接口的接口类型为身份认证步骤,上述身份认证步骤包括人脸认证和语音认证,将身份认证步骤作为第一预测代码代入索引关系中,可以得到7段的预测代码,具体包括2段预测封装代码和5段预测对象代码,其中,第1段预测封装代码与第1段和第2段预测对象代码对应,第2段预测封装代码与第3段、第4段及第5段预测对象代码对应;
第1段预测封装代码具体可以用于实现人脸认证功能,与其对应的第1段预测对象代码具体可以用于人脸采集数据的定义;与其对应的第2段预测对象代码具体可以用于人脸认证结果的定义;
第2段预测封装代码具体可以用于实现语音认证功能,与其对应的第3段预测对象代码具体可以用于语音采集数据的定义;与其对应的第4段预测对象代码具体内容可以用于语音采集分析的定义;与其对应的第5段预测对象代码具体可以用于语音认证结果的定义。
需要说明的是,上述接口类型为身份认证步骤对应的索引关系仅是示例性的,本申请实施例对不同接口类型的索引关系不作任何限制。
步骤S204、在当前输入代码的字符与第一预测代码的字符相同,且当前输入代码的属性与第一预测代码的属性相同时,显示第一预测代码对应的至少一段第二预测代码。
在应用中,代码编辑***在检测到当前输入代码与第一检测代码相同,且当前输入代码的属性与第一预测代码的属性相同时,可以根据索引关系获取第一预测代码对应的至少一段第二预测代码,并在代码编辑***的编辑页面显示对应的至少一段第二预测代码,以提示用户在当前接口类型下,与第一预测代码经常搭配使用的第二预测代码。
步骤S205、在选中第二预测代码时,将第二预测代码***代码编辑***的指定位置。
在应用中,开发人员可以通过点击操作或按键操作选中第二预测代码,将第二预测代码***代码编辑***的指定位置,指定位置具体可以是当前输入代码的后一位,指定位置可以根据开发人员的实际需要进行选择。
在应用中,通过代码编辑***获取新建接口的接口类型,并获取与接口类型对应的索引关系,以及通过上述索引关系预测与当前输入代码通常进行搭配使用的预测代码,并可以在指定位置***预测代码,实现高相关性的代码预测和自动输入,从而降低开发人员在不同测试案例中编写相同代码的工作量,提高测试案例的开发速度,进而提高代码测试效率。
如图5所示,在一个实施例中,基于图2所对应的实施例,包括如下步骤S501至步骤S507:
步骤S501、根据新建接口的标识,获取新建接口的接口类型,接口类型包括场景类型、功能类型及步骤类型;
步骤S502、获取新建接口的当前输入代码的属性,属性包括封装、对象、函数、变量及数值;
步骤S503、获取接口类型对应的索引关系,索引关系包括多段预测代码,多段预测代码中的任意一段第一预测代码具有对应的至少一段第二预测代码,第一预测代码和第二预测代码的属性不同;
步骤S504、在当前输入代码的字符与第一预测代码的字符相同,且当前输入代码的属性与第一预测代码的属性相同时,显示第一预测代码对应的至少一段第二预测代码;
步骤S505、在选中第二预测代码时,将第二预测代码***代码编辑***的指定位置;
步骤S506、在当前输入代码的字符,与第一预测代码中连续的预设数量的字符相同时,显示第一预测代码;
步骤S507、在选中第一预测代码时,将当前输入代码替换为第一预测代码。
在应用中,步骤S501至步骤S507与上述步骤S201至步骤S205提供的代码生成方法一致,在此不再赘述。区别在于,步骤S503之后还包括步骤S506和步骤S507,下面对步骤S506和步骤S507进行说明。
在应用中,代码编辑***在检测到当前输入代码的字符,与第一预测代码中连续的预设数量的字符相同时,可以在代码编辑***的编辑页面显示对应的至少一段第一预测代码,以在当前接口类型下,根据用户输入代码的部分字符,可以判断用户试图输入的完整代码。
在应用中,开发人员可以通过点击操作或按键操作选中第一预测代码,将当前输入代码替换为第一预测代码,减少开发人员对于相同代码进行重复编写的工作量,提高测试案例的开发效率。
如图6所示,在一个实施例中,基于图5所对应的实施例,在步骤S503之前,需要先建立每种接口类型对应的索引关系,建立方法包括如下步骤S601至步骤S604:
步骤S601、采集符合任意一个提取条件的训练代码,训练代码包括多个训练接口,提取条件包括训练代码的编译次数大于预设编译次数,编译后的训练代码的执行次数大于预设执行次数。
在应用中,可以根据本地的代码编辑***的日志文件或工程文件等代码储存载体获取训练代码,也可以通过网络爬虫(Web Crawler)的方式从服务器的代码库或日志文件等代码储存载体获取训练代码。训练代码需要符合任意一个提取条件,提取条件可以包括训练代码的编辑次数大于预设编译次数,编译后的训练代码的执行次数大于预设执行次数。其中,预设编译次数可以是1次、2次、3次或4次等,预设执行次数可以是1次、2次、3次或4次等,本申请实施例对预设编译次数和预设执行次数的具体次数不作任何限制。
在应用中,通过设置提取条件,可以过滤本地的代码编辑***和服务器中存储的未进行编译或未执行等提取条件的低质量代码,从而提升采集到的训练代码的质量并保证训练代码不存在语法错误。
步骤S602、根据每个训练接口的标识,获取每个训练接口的接口类型。
在应用中,获取每个训练接口的接口类型的方法和上述步骤S201中获取新建接口的接口类型的方法一致,在此不再赘述。
步骤S603、通过预测模块对每种接口类型的训练接口进行分析,得到每种接口类型的索引关系,任意一种接口类型的索引关系用于记录对应接口类型的训练代码,以及训练代码之间的对应关系。
在应用中,在通过预测模块对每种接口类型的训练接口进行分析之前,可以对采集到的多个训练接口根据接口类型进行分类。预测模块的输入是任意一种接口类型的训练接口包括的全部代码,输出是对应接口类型的索引关系,预测模块可以并行处理多种接口类型的训练接口,并一一对应输出上述多种接口类型的索引关系。下面对预测模块的内部处理机制和生成的索引关系进行详细说明:
预测模块在获取到一种接口类型的训练接口后,可以读取上述一种接口类型的训练接口包括的所有代码,并根据代码逻辑确定每段训练代码的属性,具体可以包括训练封装代码、训练对象代码、训练函数代码、训练变量代码、训练数值代码等多种属性的训练代码。预测模块还可以根据上述多种属性的训练代码之间的包含关系,建立上述多种属性的训练代码之间的对应关系。
具体的,预测模块可以识别一段训练封装代码包括的多段训练对象代码,从而得到上述一段训练封装代码对应的多段训练对象代码,同理可以得到上述一段封装对应的多段训练函数代码、上述一段封装对应的多段训练变量代码、上述一段封装对应的多段训练数值代码;
还可以识别一段训练对象代码包括的多段训练函数代码,从而得到上述一段训练对象代码对应的多段训练函数代码,同理可以得到上述一段训练对象代码对应的多段训练变量代码、上述一段训练对象代码对应的多段训练数值代码;
还可以识别一段训练函数代码包括的多段训练变量代码,从而得到上述一段训练函数代码对应的多段训练变量代码,同理可以得到上述一段训练函数代码对应的多段训练数值代码;
还可以识别一段训练变量代码包括的多段训练数值代码,从而得到上述一段训练变量代码对应的多段训练数值代码;
通过上述训练代码之间的对应关系的获取方法,对每种接口类型的训练接口包括的所有代码进行分析,可以一一对应得到每种接口类型的索引关系。
在一个实施例中,步骤S603包括:
通过预测模块对每种接口类型的训练接口进行分析,得到每种接口类型的索引关系,任意一种接口类型的索引关系用于记录对应接口类型的训练封装代码、训练对象代码、训练函数代码和训练变量代码之间的两两对应关系。
在应用中,训练代码之间的对应关系的获取方法与上述步骤S603一致,在此不再赘述。区别在于,得到的任意一种接口类型的索引关系,用于记录对应接口类型的训练封装代码、训练对象代码、训练函数代码和训练变量代码之间的两两对应关系。
步骤S604、将索引关系安装至代码编辑***。
在应用中,在代码编辑***具备自定义组件的安装功能时,可以将每种接口类型的索引关系进行封装,生成一个自定义组件并安装至代码编辑***;在代码编辑***为开源环境时,可以将索引关系写入代码编辑***的底层代码,实现在进行测试案例的编写时,代码编辑***可以运行索引关系,以在用户编写测试案例的过程中,根据当前输入代码提示高相关性的第二预测代码,提升测试案例的编写效率。
在应用中,本申请实施例提供的基于机器学习的代码生成方法,通过代码编辑***获取新建接口的接口类型,并获取与接口类型对应的索引关系,以及通过上述索引关系预测与当前输入代码通常进行搭配使用的预测代码,并可以在指定位置***预测代码,实现高相关性的代码预测和自动输入,从而减少开发人员在不同测试案例中编写相同代码的工作量,提高测试案例的编写效率,进而提高代码测试效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中,上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的终端设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或模块的间接耦合或通讯连接,可以是电性,机械或其它的形式。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (8)
1.一种基于机器学习的代码生成方法,其特征在于,所述代码生成方法应用于代码编辑***,所述方法包括:
根据新建接口的标识,获取新建接口的接口类型;
获取所述新建接口的当前输入代码的属性;
获取所述接口类型对应的索引关系,所述索引关系包括多段预测代码,所述多段预测代码中的任意一段第一预测代码具有对应的至少一段第二预测代码,所述第一预测代码和所述第二预测代码的属性不同,所述第一预测代码包含的字符和所述第二预测代码包含的字符不同;
在所述当前输入代码的字符与所述第一预测代码的字符相同,且所述当前输入代码的属性与所述第一预测代码的属性相同时,显示所述第一预测代码对应的至少一段第二预测代码;
在选中所述第二预测代码时,将所述第二预测代码***所述代码编辑***的指定位置;
所述获取所述接口类型对应的索引关系之前,所述方法还包括:
采集符合任意一个提取条件的训练代码,所述训练代码包括多个训练接口,所述提取条件包括所述训练代码的编译次数大于预设编译次数,编译后的训练代码的执行次数大于预设执行次数;
根据每个所述训练接口的标识,获取每个所述训练接口的接口类型;
通过预测模块对每种接口类型的训练接口进行分析,得到所述每种接口类型的索引关系,任意一种接口类型的索引关系用于记录对应接口类型的训练代码,以及所述训练代码之间的对应关系;
将所述索引关系安装至所述代码编辑***;
所述通过预测模块对每种接口类型的训练接口进行分析,得到所述每种接口类型的索引关系,包括:
通过预测模块对每种接口类型的训练接口进行分析,得到所述每种接口类型的索引关系,任意一种接口类型的索引关系用于记录对应接口类型的训练封装代码、训练对象代码、训练函数代码和训练变量代码之间的两两对应关系。
2.如权利要求1所述的代码生成方法,其特征在于,所述新建接口的标识包括新建接口的名称或新建接口的注释;
所述根据新建接口的标识,获取新建接口的接口类型,包括:
获取新建接口的名称,基于预设接口类型库进行名称检索,获取新建接口的接口类型;
或者,获取新建接口的注释,基于预设接口类型库进行注释检索,获取新建接口的接口类型。
3.如权利要求1或2所述的代码生成方法,其特征在于,所述获取所述接口类型对应的索引关系之后,所述方法还包括:
在所述当前输入代码的字符,与所述第一预测代码中连续的预设数量的字符相同时,显示所述第一预测代码。
4.如权利要求3所述的代码生成方法,其特征在于,所述在所述当前输入代码的字符,与所述第一预测代码中连续的预设数量的字符相同时,显示所述第一预测代码之后,所述方法还包括:
在选中所述第一预测代码时,将所述当前输入代码替换为所述第一预测代码。
5.一种基于机器学习的代码编辑***,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至4任一项所述的代码生成方法的步骤。
6.如权利要求5所述的代码编辑***,其特征在于,所述处理器包括代码提示组件;
所述代码提示组件用于检测当前输入代码;
所述代码提示组件还用于在所述当前输入代码的字符与第一预测代码的字符相同,且所述当前输入代码的属性与第一预测代码的属性相同时,显示所述第一预测代码对应的至少一段第二预测代码;
所述代码提示组件还用于在所述当前输入代码的字符,与第一预测代码中连续的预设数量的字符相同时,显示所述第一预测代码。
7.如权利要求5或6所述的代码编辑***,其特征在于,所述处理器包括代码自动输入组件;
所述代码自动输入组件与代码提示组件连接;
所述代码自动输入组件用于在选中第二预测代码时,将所述第二预测代码***所述代码编辑***的指定位置;
所述代码自动输入组件还用于在选中第一预测代码时,将当前输入代码替换为所述第一预测代码。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的代码生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111091494.5A CN113805861B (zh) | 2021-09-17 | 2021-09-17 | 基于机器学习的代码生成方法、代码编辑***及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111091494.5A CN113805861B (zh) | 2021-09-17 | 2021-09-17 | 基于机器学习的代码生成方法、代码编辑***及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113805861A CN113805861A (zh) | 2021-12-17 |
CN113805861B true CN113805861B (zh) | 2023-08-11 |
Family
ID=78895696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111091494.5A Active CN113805861B (zh) | 2021-09-17 | 2021-09-17 | 基于机器学习的代码生成方法、代码编辑***及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113805861B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116560631B (zh) * | 2023-07-12 | 2023-10-17 | 百融云创科技股份有限公司 | 一种机器学习模型代码的生成方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654954B1 (en) * | 1998-02-17 | 2003-11-25 | International Business Machines Corporation | Computer system, program product and method utilizing executable file with alternate program code attached as a file attribute |
CN110083340A (zh) * | 2019-03-19 | 2019-08-02 | 深圳壹账通智能科技有限公司 | 代码生成方法、装置、计算机设备及存储介质 |
CN111782181A (zh) * | 2020-06-28 | 2020-10-16 | 北京百度网讯科技有限公司 | 代码生成方法、装置、电子设备以及存储介质 |
CN112527273A (zh) * | 2020-12-18 | 2021-03-19 | 平安科技(深圳)有限公司 | 一种代码补全方法、装置以及相关设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628129B2 (en) * | 2017-08-08 | 2020-04-21 | Accenture Global Solutions Limited | Intellectual automated security, performance and code generation framework |
US10459695B2 (en) * | 2017-10-05 | 2019-10-29 | Sap Se | Correction of code errors using machine learning |
US10963226B2 (en) * | 2017-10-25 | 2021-03-30 | Aspiring Minds Assessment Private Limited | Generating compilable code from uncompilable code |
-
2021
- 2021-09-17 CN CN202111091494.5A patent/CN113805861B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654954B1 (en) * | 1998-02-17 | 2003-11-25 | International Business Machines Corporation | Computer system, program product and method utilizing executable file with alternate program code attached as a file attribute |
CN110083340A (zh) * | 2019-03-19 | 2019-08-02 | 深圳壹账通智能科技有限公司 | 代码生成方法、装置、计算机设备及存储介质 |
CN111782181A (zh) * | 2020-06-28 | 2020-10-16 | 北京百度网讯科技有限公司 | 代码生成方法、装置、电子设备以及存储介质 |
CN112527273A (zh) * | 2020-12-18 | 2021-03-19 | 平安科技(深圳)有限公司 | 一种代码补全方法、装置以及相关设备 |
Non-Patent Citations (1)
Title |
---|
张晶 ; 黄小锋 ; .基于业务模型和界面模型的代码生成工具.电脑与信息技术.2016,(第02期),第5-9、19页. * |
Also Published As
Publication number | Publication date |
---|---|
CN113805861A (zh) | 2021-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8539475B2 (en) | API backward compatibility checking | |
CN106294134B (zh) | 代码的崩溃定位方法及装置 | |
US7493596B2 (en) | Method, system and program product for determining java software code plagiarism and infringement | |
US10592211B2 (en) | Generation of application behaviors | |
CN111176996A (zh) | 测试用例生成方法、装置、计算机设备及存储介质 | |
CN111124479B (zh) | 配置文件的解析方法、***及电子设备 | |
CN113296786B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN108845839A (zh) | 应用页面加载方法、装置及计算机可读存储介质 | |
CN103631573A (zh) | 可迁移函数执行时间的获得方法及*** | |
CN115686631B (zh) | 一种基于知识基的随机指令生成方法、装置及存储介质 | |
CN108664471A (zh) | 文字识别纠错方法、装置、设备及计算机可读存储介质 | |
CN113805861B (zh) | 基于机器学习的代码生成方法、代码编辑***及存储介质 | |
JPH08212106A (ja) | システム試験支援装置及びシステム試験支援方法 | |
CN107562423B (zh) | Ui页面开发方法及装置 | |
CN115481025A (zh) | 自动化测试的脚本录制方法、装置、计算机设备及介质 | |
CN115033434A (zh) | 一种内核性能理论值计算方法、装置及存储介质 | |
CN113900956A (zh) | 测试用例的生成方法、装置、计算机设备及存储介质 | |
JP2007213487A (ja) | アスペクト生成方法及び装置 | |
CN111124423A (zh) | 一种基于多平台的编译检测方法、装置、服务器及介质 | |
CN113139190A (zh) | 程序文件检测方法、装置、电子设备及存储介质 | |
CN112148581A (zh) | 代码规范检查方法、装置、***及存储介质 | |
CN112445391B (zh) | 一种服务数据生成方法、装置和计算机可读存储介质 | |
CN113946347B (zh) | 函数调用的检测方法、装置、电子设备及可读介质 | |
CN116541305B (zh) | 一种异常检测的方法、装置、电子设备及存储介质 | |
CN109002287B (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 |