CN116521225A - 一种代码修复方法、装置及计算设备集群 - Google Patents
一种代码修复方法、装置及计算设备集群 Download PDFInfo
- Publication number
- CN116521225A CN116521225A CN202310376365.3A CN202310376365A CN116521225A CN 116521225 A CN116521225 A CN 116521225A CN 202310376365 A CN202310376365 A CN 202310376365A CN 116521225 A CN116521225 A CN 116521225A
- Authority
- CN
- China
- Prior art keywords
- repair
- code
- suggestion
- user
- repairing
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 115
- 230000008439 repair process Effects 0.000 claims abstract description 568
- 230000015654 memory Effects 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 7
- 238000004891 communication Methods 0.000 description 38
- 230000006870 function Effects 0.000 description 30
- 238000012360 testing method Methods 0.000 description 26
- 238000011156 evaluation Methods 0.000 description 21
- 206010047289 Ventricular extrasystoles Diseases 0.000 description 17
- 230000008569 process Effects 0.000 description 17
- 238000005129 volume perturbation calorimetry Methods 0.000 description 17
- 230000003993 interaction Effects 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 230000007547 defect Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 230000009471 action Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 238000010295 mobile communication Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000004807 localization Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供一种代码修复方法、装置及计算设备集群,该方法包括:获取用户提供的第一代码以及第一修复建议,第一修复建议对应于第一代码;根据第一修复建议修复第一代码。由于在对第一代码的修复过程中可以参考用户提供的修复建议,可以提供满足用户修复意愿的代码修复方法,因此可以提高修复准确性。
Description
技术领域
本申请涉及云服务技术领域,尤其涉及一种代码修复方法、装置及计算设备集群。
背景技术
缺陷自动修复技术,是现代软件工程的一个重要研究方向。其旨在自动化地修复程序中的缺陷,使修复后的程序可以正常的运作。准确的缺陷修复技术可以极大的节省开发人员在修复缺陷上消耗的时间,对软件开发、测试等方面均有益处。依托于云服务,缺陷自动修复技术可以应用于在线测评(online judge,OJ)系统,以实现对代码的在线修复。
目前的代码修复技术基于待修复代码的测试缺陷进行代码的自动修复。例如在修复过程中,可以参考正确代码对待修复代码进行修复,获得至少一个修复后的代码,再通过已有的代码集从修复后的代码中筛选修复结果。然而,目前的自动修复方案中,没有充分考量用户对于代码的修复意愿,导致修复结果与用户期望的修复结果不符,导致修复准确性降低。
发明内容
本申请提供一种代码修复方法、装置及计算设备集群,用以提供满足用户修复意愿的代码修复方法,提高修复准确性。
第一方面,提供一种代码修复方法。该方法可由修复装置(或称为代码修复装置)实施。修复装置可以是运行代码修复云服务的云服务设备或运行代码修复应用程序的终端设备,或者可以是云服务设备的组件或终端设备的组件。其中,本申请中的组件例如可包括芯片、芯片系统、处理器、收发器、处理单元、或收发单元中的至少一种。以执行主体是修复装置为例,该方法可以通过以下步骤实现:修复装置获取用户提供的第一代码以及第一修复建议,所述第一修复建议对应于所述第一代码;修复装置根据所述第一修复建议修复第一代码。
基于该方法,修复装置在对第一代码的修复过程中参考用户提供的第一修复建议,可以提供满足用户修复意愿的代码修复方法,因此可以提高修复准确性,并提高代码修复过程中用户的参与感。
在一种可能的实现方式中,第一修复建议可包括修复位置建议和/或修复方式建议。
其中,修复位置建议用于指示待修复位置,修复方式建议可用于指示修复方式。
在一种可能的实现方式中,修复装置可获取参考代码,根据参考代码获取第二修复建议,并根据所述第一修复建议和所述第二修复建议修复所述第一代码。
基于该实现方式,修复装置可根据历史的参考代码对第一代码进行修复,以提高修复准确性。
其中,参考代码包括正确代码和/或错误代码。
在一种可能的实现方式中,所述参考代码包括错误代码,修复装置可根据所述错误代码对应的修复记录确定所述第二修复建议。
基于该实现方式,修复装置可根据历史错误代码所对应的历史修复方案对第一代码进行修复,以提高修复准确性。
在一种可能的实现方式中,修复装置还可根据所述第一修复建议和所述第一代码确定第一修复方案,向用户提供所述第一修复方案,获取用户提供的针对所述第一修复方案的第三修复建议,并根据所述第三修复建议修复所述第一代码。
基于该实现方式,修复装置可以在修复第一代码的过程中,进一步考虑来自于用户的第三修复建议,进一步使得修复结果符合用户意愿,以提高修复准确性,并提高代码修复过程中用户的参与感。
在一种可能的实现方式中,修复装置可以根据所述第一修复建议、参考代码和所述第一代码确定第一修复方案。
在一种可能的实现方式中,修复装置还可根据参考代码和所述第一代码确定第二修复方案,并向用户提供所述第二修复方案,其中,所述第一修复建议是针对所述第二修复方案的修复建议。
基于该实现方式,所述第一修复建议可以是用户针对修复装置提供的第二修复方案所提出的建议。
在一种可能的实现方式中,修复装置还可根据所述第一代码的特征确定所述参考代码,所述特征包括代码语句特征和/或代码执行信息特征。
基于该实现方式,修复装置可以根据第一代码的特征查询确定参考代码,以提高参考代码获取过程的效率和准确性。
在一种可能的实现方式中,修复装置还可向用户展示第一代码的修复结果。
第二方面,提供一种代码修复方法。该方法可由云服务设备(或云服务设备的组件)和终端设备(或终端设备的组件)实施。以执行主体是云服务设备和终端设备为例,该方法可以通过以下步骤实现:云服务设备从终端设备获取用户提供的第一代码以及第一修复建议,所述第一修复建议对应于所述第一代码;所述云服务设备根据所述第一修复建议修复第一代码;所述云服务设备向所述终端设备发送所述第一代码的修复结果;所述终端设备向用户展示所述第一代码的修复结果。
在一种可能的实现方式中,第一修复建议可包括修复位置建议和/或修复方式建议。
在一种可能的实现方式中,所述云服务设备可获取参考代码,并根据参考代码获取第二修复建议。所述云服务设备还可根据所述第一修复建议和所述第二修复建议修复所述第一代码。
其中,参考代码包括正确代码和/或错误代码。
在一种可能的实现方式中,参考代码包括错误代码,则所述云服务设备可根据所述错误代码对应的修复记录确定所述第二修复建议。
在一种可能的实现方式中,所述云服务设备可根据所述第一修复建议和所述第一代码确定第一修复方案,并向所述终端设备发送所述第一修复方案。所述终端设备可以向用户提供所述第一修复方案,并获取用户提供的针对所述第一修复方案的第三修复建议。所述终端设备还可向所述云服务设备发送所述第三修复建议。所述云服务设备还可根据所述第三修复建议修复所述第一代码。
在一种可能的实现方式中,所述云服务设备还可根据所述第一修复建议、参考代码和所述第一代码确定第一修复方案。
在一种可能的实现方式中,所述云服务设备可根据参考代码和所述第一代码确定第二修复方案,并向所述终端设备发送所述第二修复方案,所述第一修复建议是针对所述第二修复方案的修复建议。所述终端设备还可向用户提供所述第二修复方案。
在一种可能的实现方式中,云服务设备还可根据所述第一代码的特征确定所述参考代码,所述特征包括代码语句特征和/或代码执行信息特征。
以上第二方面及其各个可能的实现方式中的效果可以参见第一方面及其各个可能的实现方式的效果的描述,不再赘述。
第三方面,提供一种代码修复装置。所述装置可以实现上述第一方面及其任意可能的设计所述的方法。所述装置具备上述修复装置的功能。
一种可选的实现方式中,该装置可以包括执行第一方面中所描述的方法/操作/步骤/动作所一一对应的模块,该模块可以是硬件电路,也可是软件,也可以是硬件电路结合软件实现。一种可选的实现方式中,所述装置包括处理单元(有时也称为处理模块)和通信单元(有时也称为收发模块、通信模块等)。收发单元能够实现发送功能和接收功能,在收发单元实现发送功能时,可称为发送单元(有时也称为发送模块),在收发单元实现接收功能时,可称为接收单元(有时也称为接收模块)。发送单元和接收单元可以是同一个功能模块,该功能模块称为收发单元,该功能模块能实现发送功能和接收功能;或者,发送单元和接收单元可以是不同的功能模块,收发单元是对这些功能模块的统称。
示例性的,在该装置用于执行第一方面所描述的方法时,该装置可以包括通信单元和处理单元。
第四方面,本申请实施例还提供一种代码修复装置,包括处理器,用于执行存储器中存储的计算机程序(或计算机可执行指令),当计算机程序(或计算机可执行指令)被执行时,使得该装置执行如第一方面及其各个可能的实现中的方法。
在一种可能的实现中,处理器和存储器集成在一起;
在另一种可能的实现中,存储器位于该装置之外。
该装置还包括通信接口,该通信接口用于该装置与其他设备进行通信,例如数据和/或信号的发送或接收。示例性的,通信接口可以是收发器、电路、总线、模块或其它类型的通信接口。
第五方面,提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序或指令,当其被运行时,使得第一方面或第二方面及其任意可能的实现方式所示的方法被实现。
第六方面,提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得第一方面或第二方面及其任意可能的实现方式所示的方法被实现。
第七方面,本申请实施例还提供一种代码修复装置,用于执行上述第一方面或第二方面及其各种可能的实现中的方法。
第八方面,提供一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;所述至少一个计算设备的处理器用于执行上述第一方面或第二方面及其各种可能的实现中的方法。
第九方面,提供一种通信系统,该通信系统可以包括云服务设备和终端设备,使得通信系统实现如第二方面及其各种可能的实现中的方法。
以上第二方面至第九方面所带来的技术效果可参见上述第一方面的描述,此处不再赘述。
附图说明
图1为本申请提供的一种云服务系统的架构示意图;
图2为本申请实施例提供的一种代码修复方法的流程示意图;
图3为本申请实施例提供的一种参考代码的处理过程示意图;
图4为本申请实施例提供的另一种代码修复方法的流程示意图;
图5为本申请实施例提供的另一种代码修复方法的流程示意图;
图6为本申请实施例提供的一种修复装置的部署方式示意图;
图7为本申请实施例提供的另一种修复装置的部署方式示意图;
图8为本申请实施例提供的一种在线测评系统的web界面示意图;
图9为本申请实施例提供的一种IDE界面示意图;
图10为本申请实施例提供的一种修复装置的结构示意图;
图11为本申请实施例提供的一种修复系统的结构示意图;
图12为本申请实施例提供的一种计算设备的结构示意图;
图13为本申请实施例提供的一种计算设备集群的结构示意图;
图14为本申请实施例提供的另一种计算设备集群的结构示意图。
具体实施方式
本申请实施例提供一种通信方法及装置。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。本申请实施例的描述中,“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请中所涉及的至少一个是指一个或多个;多个,是指两个或两个以上。另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
本申请实施例提供的通信方法可以应用于云服务(或称为云计算服务)系统。其中,云服务指可以作为服务提供的云计算产品,包括云主机、云存储、数据库、网络、软件、分析和智能等服务。云服务的服务结果可通过网络提供给用户。
如图1所示,用户可通过终端设备等载体请求和获取云服务。终端设备与云服务所对应的服务器之间通过网络连接。图1中,以终端设备10和服务器20为例进行说明。其中,终端设备10可以为手机、平板电脑、笔记本电脑、或个人计算机等,服务器20可以为任何能够支持相应的云资源分配的服务器设备和软件系统。
需要说明的是,上述网络可以为局域网、也可以是通过中继(relay)设备转接的广域网等。当该网络为局域网时,示例性的,该通信网络可以是无线保真(wirelessfidelity,wifi)热点网络、蓝牙(bluetooth,BT)网络、近距离无线通信技术(near fieldcommunication,NFC)网络等近距离通信网络。当通信网络为广域网时,示例性的,该网络可以是第三代移动通信技术(3rd-generation wireless telephone technology,3G)网络、第四代移动通信技术(the 4th generation mobile communication technology,4G)网络、第五代移动通信技术(5th-generation mobile communication technology,5G)网络、未来演进的公共陆地移动网络(public land mobile network,PLMN)或因特网等,或应用于未来的各种通信系统,例如第六代(6th generation,6G)通信系统等。此外,该网络也可以是远距离无线电(long range radio,LoRa)网络或车联网。本申请实施例提供的方法还可以应用于卫星通信系统。其中,所述卫星通信系统可以与上述通信系统相融合。
本申请可应用于在线测评系统。在线测评系统是指针对用户提供在线测试和评价的一种系统,可以用于对用户提交的程序代码等作业内容进行编译和执行,验证程序代码的准确性以实现测试。在线测评系统还可将测试结果返还给终端设备并通过终端设备向用户展示测试结果。此外,在线测评系统还可用于对程序代码进行修复,例如,采用缺陷自动修复技术对代码进行修复。
本申请中,在线测评系统可部署在云服务的服务器中,即作为云服务向用户提供服务,相应的,终端设备中可通过应用程序或小程序等方式与云服务的服务器进行通信,实现在先测评功能。在线测评系统也可以通过终端设备的应用程序实现。
目前的代码缺陷自动修复技术主要基于待修复代码的测试缺陷进行代码的自动修复。该技术适用于有测试套件(test suite)的代码。测试套件可用于验证代码是否通过测试。测试可以用于指导缺陷修复工具对待修复的代码进行修复,因此经过修复最终得到修复后的代码可以通过所有测试。可以理解,在线测评系统可以对每一个待识别代码(可称为作业题目)进行详尽的测试,因此基于测试的缺陷修复技术可以被应用于此领域,用于通过修复获得能够通过所有测试的修复后的代码。此外,本申请还可以参考已有的其他作业过程提交的代码,来修复当前有缺陷的代码。
然而,目前的自动修复技术一般不需要用户参与,即自动修复技术可以自动根据测试结果对代码进行修复,因此在修复过程中不会考虑用户对于代码的修复意愿,导致修复结果与用户期望的修复结果不符,导致修复准确性降低。例如,在存在多种修复方案的情况下,自动修复技术会自动选择一种修复方案对代码进行修复,而该修复方案可能与用户的代码习惯所不符,因此该修复结果可能不是最佳修复结果,存在修复准确性不高的问题。
为了提高代码自动修复的可靠性,本申请实施例提供一种代码修复方法。其中,该方法可由修复装置执行。其中,修复装置可以是云服务的服务器或其他可以提供云服务的设备(如称为云服务设备)、应用程序所在的终端设备等。修复装置也可以是服务器或终端装置中的组件。本申请中,组件例如可包括芯片、芯片系统、处理器、收发器、处理单元、或收发单元中的至少一种。
如图2所示,本申请实施例提供的一种代码修复方法可包括以下步骤:
S101:修复装置获取用户提供的第一代码以及第一修复建议,第一修复建议对应于第一代码。
可选的,第一修复建议可包括用户对于第一代码的修复位置建议和/或修复方式建议。
其中,修复位置建议可以指示用户认为第一代码中存在错误的位置或者用户认为不存在错误的位置,修复装置可以对用户认为第一代码中存在错误的位置进行修复,或者,不对用户认为不存在错误的位置进行修复,使得修复结果符合用户意愿。本申请中,存在错误的位置也可称为错误位置,可以是第一代码中的至少一行和/或行中的至少一个词语或单词或符号。
例如,当用户完成第一代码的编写后,不确定第一代码中一个或多个位置的是否存在错误,用户可以在终端设备的用户界面中对可能存在错误或者用户认为不存在错误的位置进行标记,相应的,终端设备生成位置修复建议。其中,用户标记第一代码中的位置的方式可以是通过颜色标记文字或文字所在的位置、加粗文字、对文字添加下划线或注释、在表示存在错误的位置的文字框中输入用户认为存在错误的文字、在表示不存在错误的位置的文字框中输入用户认为不存在错误的文字等,本申请不具体限定。
此外,修复方式建议可以指示用户建议的对于第一代码的修复方案。例如,在存在多种修复方案的情况下,修复装置可采用用户建议的修复方案对第一代码进行修复。举例来说,当代码中的单词“if”误写为“uf”,则修复建议可指示将该“uf”修改为“if”。可选的,用户建议的修复方案可以有多个,其中,不同的修复方案可以对应于不同的修复位置。
又如,当在线测评系统向用户提供第一代码的多个修复方案,用户可通过终端设备的用户界面输入用户选择的修复方案,相应的,终端设备生成修复方式建议,用以指导在线测评系统修复第一代码。
可选的,终端设备的用户界面可以是在线测评系统的用户界面,或者可以是用户本地编程的编程软件界面,如集成开发环境(integrated development environment,IDE)界面。
可选的,第一代码以及第一修复建议可以是用户输入至终端设备中的。其中,如果采用云服务实现本申请所示方法,则修复装置可以是云服务的服务器或服务器中的组件,则在S101中,修复装置可从终端设备获取用户输入的第一代码以及第一修复建议。如果采用应用程序对代码进行修改,则修复装置可以是终端设备或终端设备中的组件,因此修复装置可通过终端设备的输入模块或接口获取第一代码以及第一修复建议。
S102:修复装置根据第一修复建议修复第一代码。
基于图2所示方法,修复装置可以根据用户所提供的第一修复建议对第一代码进行修复,因此在对第一代码的修复过程中可以充分考量用户的意愿,使得修复更为精确,也更为贴近用户的意图。
可选的,如果采用云服务实现本申请所示方法,则可以由云服务设备修复第一代码,并将修复结果发送至终端设备。终端设备可以向用户展示修复结果。可选的,终端设备还可获取用户对于修复结果的反馈,该反馈可用于云服务设备更新修复方案或修复结果。
作为S102的一种可能的实现方式,修复装置可以获取参考代码,并根据参考代码和第一修复建议修复第一代码。例如,修复装置可根据参考代码确定第二修复建议,并根据第一修复建议与第二修复建议修复第一代码。可选的,第二修复建议可包括根据参考代码所获得的修复位置建议和/或修复方式建议。
本申请中,参考代码可以包括对第一代码的修复具有参考意义的至少一个代码。具体来说,参考代码可以包括修复装置存储的正确代码和/或错误代码。其中,正确代码可以是不存在错误的程序代码。错误代码可以是存在至少一个错误的程序代码。
可选的,参考代码可以与第一代码具有相同的特征,或者,参考代码可以是根据第一代码的特征确定的。因此,修复装置在修复第一代码时,只需要参考具有与第一代码相同特征的参考代码,可提高修复效率和修复准确性。
本申请中,代码的特征可包括代码语句特征(或称为代码静态特征)和/或代码执行信息特征(或称为代码动态信息)。
其中,代码语句特征包括代码行级别的语句特征和/或函数级别的语句特征。
代码执行信息特征可包括代码在测试套件上运行时测试的通过状况、执行到的代码行、或执行中程序变量的取值中的至少一项。其中,代码在测试套件上运行时测试的通过状况可指示代码是否通过测试套件对应的每一项测试。执行到的代码行可指示根据测试套件对代码进行测试时,测试停止之前所执行的全部代码行。执行中程序变量的取值可指示根据测试套件对代码进行测试时代码所包含的变量的取值。
可选的,修复装置可以根据参考代码的特征对至少一个正确代码和/或至少一个错误代码进行归类存储,因此可将特征作为检索参考代码的检索因子。例如,通过代码语句特征可将具有相同的代码语句特征的正确代码和/或错误代码归为一类,以便于根据第一代码的代码语句特征检索具有相同特征的参考代码。又如,通过代码执行信息特征可将具有相同的代码执行信息特征的正确代码和/或错误代码归为一类,以便于根据第一代码的代码执行信息特征检索参考代码。据此,当修复装置获取第一代码后,可通过分析确定第一代码的特征,再根据第一代码的特征检索具有相同特征的至少一个参考代码,从而只需要参考全部代码中的一部分具有相同特征的参考代码对第一代码进行修复。
下面结合图3,以参考代码是正确代码为例,介绍修复装置收集和处理参考代码的方式。可选的,修复装置可以通过在线和/或离线的方式收集正确代码。其中,正确代码可以是此前用户提交的确认无误的代码。此外,修复装置还可以收集正确代码在提交前的修复过程中实施的修复动作。根据对正确代码的预处理,修复装置可以对正确代码进行格式化处理,例如,可以将复杂写法转化为标准写法,以便于提取正确代码的特征。此外,修复装置可进行正确代码分析,以提取正确代码的特征,并根据特征对正确代码进行归类,和/或,对具有相同特征的正确代码进行编号(或添加索引)等处理。修复装置还可以分析正确代码的修复动作,以获得修复方式信息,从而支持根据修复方式信息进行正确代码的归类和/或检索。修复方式信息可指示错误代码被修复为正确代码时执行的修复动作。例如,修复方式信息可以包括修复方式的索引和/或参数。其中,正确代码特征和/或正确代码的修复方式信息可作为正确代码的原始数据存储。当需要对第一代码进行修复时,修复装置可根据第一代码的特征从原始数据中检索参考代码,和/或用户提供的修复方式建议检索正确代码。可以理解,图3所示的由修复装置执行的动作也可以由云服务或其他装置执行。
作为根据参考代码修复第一代码的一种可能的方式,如果参考代码包括正确代码,在修复第一代码的过程中,修复装置可以比对第一代码与正确代码,第一代码与正确代码的代码内容不同之处为第一代码可能存在的错误,因此该不同之处可作为根据正确代码确定的修复位置,另外,正确代码在该处的内容可作为根据正确代码确定的修复方式建议。也就是说,第二修复建议可建议将第一代码的错误位置修复为与正确代码的相应位置一致。
此外,作为根据参考代码修复第一代码的另一种可能的方式,如果参考代码包括错误代码,修复装置可比对第一代码与错误代码,将第一代码与错误代码的内容相同的位置作为根据正确代码确定的修复位置。此外,修复装置可根据错误代码被修复为正确代码时的修复方式信息(或称为修复记录)确定第二修复建议。例如,第一代码与错误代码存在相同位置的错误,则修复装置可根据该错误代码的修复方式作为建议的修复方式。例如,修复方式信息可以包括修复方式的索引和/或参数。
可选的,如果第一修复建议包括修复位置建议,且第二修复建议包括修复位置建议,则修复装置可根据第一修复建议包括的修复位置建议和第二修复建议包括的修复位置建议取交集以确定最终的修复位置;或者,在第一修复建议和第二修复建议分别包含的修复位置建议对应于不同的修复位置,或者,第二修复建议不包含修复位置建议时,修复装置也可根据第一修复建议所包含的修复位置建议确定最终的修复位置。此外,针对同一个修复位置,如果第一修复建议包括修复方式建议,且第二修复建议包括修复方式建议,则修复装置可根据第一修复建议包括的修复方式建议和第二修复建议包括的修复方式建议取交集以确定最终的修复位置;或者,在第一修复建议和第二修复建议分别包含的修复方式建议不同时,修复装置也可根据第一修复建议所包含的修复方式建议确定最终的修复方式。
作为S102的另一种可能的实现方式,修复装置可根据第一修复建议和第一代码确定第一修复方案,并向用户提供第一修复方案,之后根据用户针对第一修复方案的第三修复建议修复第一代码。
其中,第一修复方案可指示第一代码的至少一个待修复位置的修复方式。可选的,修复装置可根据第一代码、参考代码以及第一修复建议确定第一修复方案,具体可参照前述实施例中修复装置根据参考代码和第一修复建议修复第一代码的描述,区别在于,此处在对第一代码进行修复之前,将修复方案输出并由用户确认是否执行该修复方案。
可选的,第一修复方案可根据第一修复建议、参考代码和第一代码确定。其中,参考代码的确定方式可参照本申请中的说明,这里不再赘述。
在确定第一修复方案的一种可选的实现方式中,修复装置可根据第一修复建议和第一代码确定第一修复方案。例如,在第一修复建议包括修复位置建议时,修复装置可根据修复位置建议确定第一代码中的至少一个错误位置,并根据错误位置确定至少一个修复方式,第一修复方案可指示该修复方式,比如,第一修复方案可询问用户是否按照该至少一个修复方式对第一修复建议所指示的错误位置进行修复。又如,在第一修复建议包括修复方式建议时,修复装置可识别第一代码中的至少一个错误位置(如根据参考代码对第一代码进行匹配),以确定至少一个错误位置,第一修复方案可指示该错误位置,比如,第一修复方案可询问用户是否对该位置进行修复,和/或,询问用户是否按照第一修复建议所指示的修复方式进行修复。
在确定第一修复方案的另一种可选的实现方式中,修复装置可根据参考代码确定第二修复建议,并根据第一修复建议和第二修复建议确定该第一修复方案。如果第一修复建议包括修复位置建议,且第二修复建议包括修复位置建议,则修复装置可根据第一修复建议包括的修复位置建议和第二修复建议包括的修复位置建议取交集以确定第一修复方案所指示的修复位置;或者,在第一修复建议和第二修复建议分别包含的修复位置建议对应于不同的修复位置,或者,第二修复建议不包含修复位置建议时,修复装置也可根据第一修复建议所包含的修复位置建议确定第一修复方案所指示的修复位置。此外,针对同一个修复位置,如果第一修复建议包括修复方式建议,且第二修复建议包括修复方式建议,则修复装置可根据第一修复建议包括的修复方式建议和第二修复建议包括的修复方式建议取交集以确定第一修复方案所指示的修复方式;或者,在第一修复建议和第二修复建议分别包含的修复方式建议不同时,修复装置也可根据第一修复建议所包含的修复方式建议确定第一修复方案所指示的修复方式。
可选的,第三修复建议可以是用户根据第一修复方案确定的。例如,第三修复建议可表示用户同意第一修复方案,则在S102中,修复装置可根据第一修复方案进行第一代码的修复。此外,如果用户不同意第一修复方案,则第三修复建议可包含与第一修复建议不同的修复位置建议和/或修复方式建议,相应的,修复装置可根据这些修复位置建议和/或修复方式建议进行第一代码的修复。例如,第三修复建议包含的修复位置建议不包括第一修复方案所指示的待修复位置,和/或,第三修复建议包含的修复方式建议不包括第一修复方案所指示的修复方式。
进一步可选的,修复装置还可根据第三修复建议修正第一修复方案,并再次向用户展示修正后的第一修复方案。相应的,修复装置还可获取用户针对该修正后的第一修复方案的第四修复建议。该第四修复建议的实现方式可参见第三修复建议,不再赘述。
可以理解,如果通过云服务实现以上实现方式,则可由云服务设备根据第一修复建议和第一代码确定上述第一修复方案。还可以由云服务设备向终端设备发送第一修复方案,并由终端设备向用户提供(或展示)第一修复方案,以便用户通过终端设备输入针对第一修复方案的修复建议,该修复建议即第三修复建议。终端设备还可以将第三修复建议发送至云服务设备,使得云服务设备根据第三修复建议修复第一代码。
可选的,云服务设备在根据第三修复建议修复第一代码的过程中,还可通过终端设备与用户进行一次或多次交互,使得第一代码的修复结果更加符合用户的预期。
作为S102的另一种可能的实现方式,修复装置可根据参考代码和第一代码确定第二修复方案,并向用户提供第二修复方案,之后获取用户针对第二修复方案的第一修复建议,并根据第一修复建议修复第一代码。
其中,第二修复方案可指示第一代码的至少一个待修复位置的修复方式,其中,待修复位置和/或修复方式是根据参考代码确定的。第二修复方案的确定方式可参见本申请中介绍的根据参考代码确定第二修复建议的方式,区别在于这里需要将修复位置和/或修复方式作为第二修复方案提供给用户。例如,第一代码与错误代码的内容相同的位置可作为待修复位置,和/或,第一代码与正确代码的代码内容不同之处为待修复位置。又如,正确代码在待修复位置处的内容可作为修复方式建议,和/或,错误代码的历史修复方式(或正确代码的历史修复方式信息)可作为该待修复位置的修复方式。
在该实现方式中,第一修复建议可以是根据第二修复方案确定的。例如,第二修复方案可指示至少一个待修复位置以及相应的修复方式,第一修复建议可用于指示是否同意按照至少一个待修复位置及其相应的修复方式修复第一代码。此外,在用户不同意根据第二修复方案指示的待修复位置相应的修复方式进行修复时,第一修复建议也可包括至少一个待修复位置的其他修复方式,使得修复装置可以根据用户提供的修复方式建议进行修复。另外,第一修复建议也可以提供丢一修复方案不包括的待修复位置的修复方式建议,本申请不具体限定。
可选的,在本申请的各个实施例中,修复装置还可针对用户的第一修复建议确定第一代码的修复方案。这里的修复方案可包括前述第一修复方案。此外,如果第一修复建议时根据第一修复方案获得的,这里的修复方案也可包括针对第一修复方案的更新的修复方案。
可以理解,如果通过云服务实现以上实现方式,则可由云服务设备根据参考代码和第一代码确定第二修复方案。还可以由云服务设备向终端设备发送第二修复方案,并由终端设备向用户提供(或展示)第二修复方案,以便用户通过终端设备输入针对第二修复方案的修复建议,该修复建议即第一修复建议。终端设备还可以将第一修复建议发送至云服务设备,使得云服务设备根据第一修复建议修复第一代码。
可选的,云服务设备在根据第一修复建议修复第一代码的过程中,还可通过终端设备与用户进行一次或多次交互,使得第一代码的修复结果更加符合用户的预期。
还可以理解,在该实现方式中,修复装置根据对应于第三修复方案的第一修复建议修复第一代码的过程,可以参照本申请中其他实施例的说明。例如,修复装置可根据该第一修复建议和第一代码确定第一修复方案,并向用户提供第一修复方案,之后根据用户针对第一修复方案的第三修复建议修复第一代码。
下面结合图4至图7所示实施例,对本申请提供的代码修复方法的流程进行介绍。
可选的,在图4至图7所示实施例中,修复装置可包含错误定位模块和程序修复模块。
如图4所示,错误定位模块可用于提取待修复的第一代码的特征,根据第一代码的特征、参考代码(例如,图3所示的原始数据)以及用户的修复位置建议(例如,该修复位置建议可以是前述第一修复建议中的一种示例性的内容)中的至少一项进行错误定位,以确定待修复位置。此后,错误定位模块还可向用户展示待修复位置(例如,该待修复位置可以是包含在前述第一修复方案中的一种示例性的内容),并获取表示用户同意该待修复位置的指示(例如,表示同意该待修复位置的信息可以是前述第三修复建议中的一种示例性的内容),或根据表示用户不同意该待修复位置的指示更新待修复的位置(例如,表示用户不同意该待修复位置的指示可以是前述第三修复建议中的一种示例性的内容)。此外,错误定位模块还可将待修复位置发送至程序修复模块。
如图5所示,程序修复模块可用于根据错误定位模块提供的待修复位置确定修复方式。其中,程序修复模块可根据用户提供的修复方式建议(如本申请所述的第一修复建议或第三修复建议所指示的修复方式建议)和/或参考代码对应的修复方式信息确定待修复位置的修复方式。可选的,程序修复模块还可向用户提供待修复位置的修复方式信息(例如,该向用户提供待修复位置的修复方式信息可以是前述第一修复方案或第二修复方案中的一种示例性的内容)。此外,程序修复模块还可获取用户表示同意该修复方式的指示(例如,表示同意该修复方式的信息可以是前述第三修复建议中的一种示例性的内容),或根据表示用户不同意该修复方式的指示更新该修复方式信息(例如,表示用户不同意该修复方式的指示可以是前述第三修复建议中的一种示例性的内容)。
此外,程序修复模块还可用于根据修复方式对待修复位置进行修复。修复方式可参见本申请对于S102的描述,这里不再赘述。程序修复模块还可将修复结果向用户展示。
可选的,修复装置还可包括用户交互模块,用于实现修复装置与用户之间的交互。例如,在图4中,修复装置可通过用户交互模块获得用户的修复位置建议、向用户展示待修复位置、获取表示用户同意该待修复位置的指示,或者获取表示用户不同意该待修复位置的指示。又如,在图5中,程序修复模块可通过用户交互模块获得用户提供的修复方式建议、向用户提供待修复位置的修复方式信息、获取用户表示同意该修复方式的指示,获取表示用户不同意该修复方式的指示,或者向用户展示最终的修复结果。
进一步可选的,用户交互模块可包括输入模块和输出模块。可选的,输入模块可用于获取用户输入的信息,输出模块可用于向用户展示信息。具体的,用户交互模块可通过触控屏或其他人机交互模块实现,本申请不具体限制。
作为一种可能的实现方式,如图6所示,在云服务等场景中,修复装置与用户端设备分离设置。此时用户交互模块可以是与用户所使用的用户端设备进行通信的模块,例如通信接口或通信模块。在该实现方式中,用户端设备与修复装置一般不是同一个物理实体,因此修复装置可通过用户交互模块与用户端设备传输需要与用户进行交互的信息。
作为另一种可能的实现方式,如图7所示,在应用程序等场景中,用户端设备可以与修复装置设置在同一个物理实体。此时用户交互模块可以是用户所使用的用户端设备的人机交互模块,如触控屏、鼠标、键盘、虚拟按键或实体按键等输入输出装置。
基于图4至图7的实施例,本申请中的修复装置支持根据用户的修复建议进行修复,使得修复过程更加贴合用户习惯,能够提高代码修复的准确性。另外,在修复过程中,修复装置可以向用户提供进行一次或多次的修复方案,从而对修复过程进行提示,并通过与用户的交互过程改善错误定位和修复方式确定,进一步提高修复准确性。另外,代码修复的过程可以包含与用户的多次交互过程,因此不会出现用户长时间等待修复结果的问题,可以提高用户体验。
本申请中,用户端设备可通过在线测评系统的服务界面(如网络(web)界面)或集成开发环境(integrated development environment,IDE)的用户界面与用户进行交互。
其中,在线测评系统中,该web界面可用于显示在线评测系统的代码提交界面等测评界面。如图8所示为一种在线测评系统的web界面示意图。图8中,在现有的在线评测代码提交界面基础上,用户端设备可额外显示提示错误位置按钮,用于展示或收起修复装置确定的待修复位置信息。此外,用户端设备还可额外显示修复方式按钮,用于展示或收起修复装置确定的修复方式信息。可选的,用户可通过对上述按钮的点击操作,触发用户端设备展开或收起按钮对应的显示内容,当展开按钮对应的显示内容时,可以在用户编写的代码(即修复前代码和/或修复后代码)的基础上给出按钮对应内容的高亮显示。例如,修复前代码可以是“uf”,修复后的代码例如是“if”,即可以指示将“uf”修改为“if”。用户可以通过在线web页面的交互,触发修复装置给出不同的反馈。可选的,用户端设备可以在web界面中分别显示修复前的代码和根据本申请所示方法修复后的代码。进一步可选的,用户可以通过对修复后代码进行修改,以输入用户建议。
可选的,用户可通过点击修复后的代码,向用户端设备输入表示是否同意相应修复位置和/或修复方式的指示,例如,点击修复后的代码的任意代码位置,可触发该界面中显示同意或不同意该修复位置和/或修复方式的选项。此外,用户还可点击未进行修复的位置,触发用户输入新的修复位置建议,其中,新的修复位置不包括第一代码中已得到修复或已给出修复发送建议的位置。
另外,IDE界面可用于用户进行代码编辑。本申请中,用户端设备可通过IDE插件与云服务的服务器进行通信,或者,与应用程序进行通信,获取需要向用户展示的内容,并向服务器或应用程序提供用户输入的信息。
示例性的,如图9所示,在IDE界面中,可显示用户编写的代码以及显示备选修复列表区域。
其中,备选修复列表区域可包含功能按钮和/或设置按钮。该功能按钮用于实现尝试提交功能、运行测试功能、提示错误功能、提示修复方案功能中的至少一项。例如,当用户点击功能按钮对应的提示错误功能按键,IDE界面可在备选修复列表中向用户展示待修复位置。又如,当用户点击功能按钮对应的提示修复方案功能按键,IDE界面可在备选修复列表中向用户展示待修复位置的修复方式信息。设置按钮可用于展示或收起IDE插件的工具配置或用户偏好等。另外可选的,备选修复列表也可直接显示待修复位置和/或修复方式信息,而不需要通过功能按钮触发显示。
此外,如图9所示,备选修复列表区域还可包含信息显示区域,用于显示待修复位置和/或修复方式信息的区域。可选的,用户可通过点击该区域中的待修复位置,向用户端设备输入表示是否同意相应修复位置和/或修复方式的指示,例如,点击该区域中的任意代码位置,可触发该界面中显示同意或不同意该修复位置和/或修复方式的选项。此外,用户还可点击未进行修复的位置,触发用户输入新的修复位置建议。其中,新的修复位置不包括第一代码中已得到修复或已给出修复发送建议的位置。
基于相同的构思,本申请实施例还提供一种修复装置。该修复装置可包括执行以上方法所示各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的单元及方法步骤,本申请能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。
图10为本申请的实施例提供的可能的代码修复装置的结构示意图。该代码修复装置可以用于实现上述方法实施例中修复装置(包括云服务设备或终端设备)或与云服务设备进行交互的终端设备的功能,因此也能实现上述方法实施例所具备的有益效果。在一种可能的实现中,该通信装置可以是如图1所示的终端设备或服务器。相关细节和效果可以参见前述实施例的描述。
如图10所示,本申请提供的一种代码修复装置可包括获取模块和修复模块。其中,获取模块可用于获取用户提供的第一代码以及第一修复建议。修复模块可用于根据第一修复建议修复第一代码。
其中,获取模块和/或修复模块可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以获取模块为例,介绍获取模块的实现方式。类似的,修复模块的实现方式可以参考获取模块的实现方式。
模块作为软件功能单元的一种举例,获取模块可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,获取模块可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
模块作为硬件功能单元的一种举例,获取模块可以包括至少一个计算设备,如服务器等。或者,获取模块也可以是利用专用集成电路(application-specific integratedcircuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
获取模块包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。获取模块包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,获取模块包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
需要说明的是,在其他实施例中,获取模块可以用于执行前述代码修复方法中的任意步骤,修复模块可以用于执行前述代码修复方法中的任意步骤。获取模块与修复模块分别负责实现的步骤可根据需要指定,通过获取模块与修复模块分别实现前述代码修复方法中不同的步骤来实现代码修复装置的全部功能。
本申请还提供一种代码修复系统,用以实现由云服务实施的本申请所示方法。如图11所示,该系统可包括云服务设备和终端设备。其中,终端设备可用于向云服务设备发送用户提供的第一代码以及第一修复建议;云服务设备可用于从终端设备获取用户提供的第一代码以及第一修复建议,第一修复建议对应于第一代码;云服务设备还可用于根据第一修复建议修复第一代码;云服务设备还可用于向终端设备发送第一代码的修复结果。终端设备可用于向用户展示第一代码的修复结果。
参见本申请中的说明,本申请中的云服务设备也可替换为云服务装置,终端设备也可替换为终端装置。
可选的,云服务设备和终端设备均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来介绍云服务设备的实现方式。类似的,终端设备的实现方式可以参考云服务设备的实现方式。
模块作为软件功能单元的一种举例,云服务设备可以包括运行在计算实例上的代码。其中,计算实例可以是物理主机(计算设备)、虚拟机、容器等计算设备中的至少一种。进一步地,上述计算设备可以是一台或者多台。例如,云服务设备可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该应用程序的多个主机/虚拟机/容器可以分布在相同的region中,也可以分布在不同的region中。用于运行该代码的多个主机/虚拟机/容器可以分布在相同的AZ中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个VPC中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内。同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
模块作为硬件功能单元的一种举例,云服务设备可以包括至少一个计算设备,如服务器等。或者,云服务设备也可以是利用ASIC实现、或PLD实现的设备等。其中,上述PLD可以是CPLD、FPGA、GAL或其任意组合实现。
云服务设备包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。云服务设备包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,云服务设备包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
本申请还提供一种计算设备100,用以实现本申请中的修复装置的动作。如图12所示,计算设备100包括:总线102、处理器104、存储器106和通信接口108。处理器104、存储器106和通信接口108之间通过总线102通信。计算设备100可以是服务器或终端设备。应理解,本申请不限定计算设备100中的处理器、存储器的个数。
总线102可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线104可包括在计算设备100各个部件(例如,存储器106、处理器104、通信接口108)之间传送信息的通路。
处理器104可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器106可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。处理器104还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。
存储器106中存储有可执行的程序代码,处理器104执行该可执行的程序代码以分别实现前述获取模块和/或修复模块的功能,从而实现前述代码修复方法。也即,存储器106上存有用于执行代码修复方法的指令。
或者,存储器106中存储有可执行的代码,处理器104执行该可执行的代码以分别实现前述云服务设备和/或终端设备的功能,从而实现前述代码修复方法。也即,存储器106上存有用于执行前述代码修复方法的指令。
通信接口108使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备100与其他设备或通信网络之间的通信。
本申请实施例还提供了一种计算设备集群。该计算设备集群包括至少一台计算设备。该计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图13所示,所述计算设备集群包括至少一个计算设备100。计算设备集群中的一个或多个计算设备100中的存储器106中可以存有相同的用于执行前述代码修复方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备100的存储器106中也可以分别存有用于执行前述代码修复方法的部分指令。换言之,一个或多个计算设备100的组合可以共同执行用于执行前述代码修复方法的指令。
需要说明的是,计算设备集群中的不同的计算设备100中的存储器106可以存储不同的指令,分别用于执行获取模块和/或修复模块的部分功能。也即,不同的计算设备100中的存储器106存储的指令可以实现云服务设备和终端设备中的一个或多个设备或获取模块与修复模块中的一个或多个模块的功能。
在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图14示出了一种可能的实现方式。如图14所示,两个计算设备100A和100B之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与所述网络进行连接。在这一类可能的实现方式中,计算设备100B中的存储器106中存有执行获取模块的功能的指令。同时,计算设备100B中的存储器106中存有执行修复模块的功能的指令。
图14所示的计算设备集群之间的连接方式可以是考虑到本申请提供的代码修复方法需要大量数据存储和计算,因此考虑将修复模块实现的功能交由计算设备100B执行。
应理解,图14中示出的计算设备100A的功能也可以由多个计算设备100完成。同样,计算设备100B的功能也可以由多个计算设备100完成。
可以理解,计算设备100A可对应于云服务场景下的终端设备,计算设备100B可对应于云服务场景下的云服务设备。
本申请实施例还提供了另一种计算设备集群。该计算设备集群中各计算设备之间的连接关系可以类似的参考图13和图14所述计算设备集群的连接方式。不同的是,该计算设备集群中的一个或多个计算设备100中的存储器106中可以存有相同的用于执行代码修复方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备100的存储器106中也可以分别存有用于执行代码修复方法的部分指令。换言之,一个或多个计算设备100的组合可以共同执行用于执行代码修复方法的指令。
需要说明的是,计算设备集群中的不同的计算设备100中的存储器106可以存储不同的指令,用于执行代码修复系统的部分功能。也即,不同的计算设备100中的存储器106存储的指令可以实现终端设备和云服务设备中的一个或多个装置的功能。
本申请上述方法实施例描述的通信装置所执行的操作和功能中的部分或全部,可以用芯片或集成电路来完成。
本申请实施例提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序包括用于执行上述方法实施例的指令。
本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法实施例。
本申请实施例提供了一种通信系统,其包括云服务场景中的云服务设备和终端设备。该至少一个终端装置可执行本申请中第一终端装置和/或第二终端装置的动作。该网络设备可用于执行图2至图6中任一所示方法中网络设备的动作。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (21)
1.一种代码修复方法,其特征在于,包括:
获取用户提供的第一代码以及第一修复建议,所述第一修复建议对应于所述第一代码;
根据所述第一修复建议修复第一代码。
2.如权利要求1所述的方法,其特征在于,所述第一修复建议包括以下中的至少一项:
修复位置建议;
修复方式建议。
3.如权利要求1所述的方法,其特征在于,所述根据所述第一辅助修复信息修复所述第一代码,包括:
获取参考代码;
根据参考代码获取第二修复建议;
根据所述第一修复建议和所述第二修复建议修复所述第一代码。
4.如权利要求3所述的方法,其特征在于,所述参考代码包括错误代码,所述根据参考代码获取第二修复建议,包括:
根据所述错误代码对应的修复记录确定所述第二修复建议。
5.如权利要求1所述的方法,其特征在于,所述根据所述第一修复建议修复所述第一代码,包括:
根据所述第一修复建议和所述第一代码确定第一修复方案;
向用户提供所述第一修复方案;
获取用户提供的针对所述第一修复方案的第三修复建议;
根据所述第三修复建议修复所述第一代码。
6.如权利要求5所述的方法,其特征在于,所述根据所述第一修复建议和所述第一代码确定第一修复方案,包括:
根据所述第一修复建议、参考代码和所述第一代码确定第一修复方案。
7.如权利要求1-6中任一所述的方法,其特征在于,所述方法还包括:
根据参考代码和所述第一代码确定第二修复方案;
向用户提供所述第二修复方案,所述第一修复建议是针对所述第二修复方案的修复建议。
8.如权利要求3或6-7中任一所述的方法,其特征在于,所述方法还包括:
根据所述第一代码的特征确定所述参考代码,所述特征包括代码语句特征和/或代码执行信息特征。
9.如权利要求3或5-8中任一所述的方法,其特征在于,所述参考代码包括以下中的至少一项:
错误代码;
正确代码。
10.如权利要求1-9中任一所述的方法,其特征在于,所述方法还包括:
向用户展示所述第一代码的修复结果。
11.一种代码修复装置,其特征在于,包括:
获取模块,用于获取用户提供的第一代码以及第一修复建议,所述第一修复建议对应于所述第一代码;
修复模块,用于根据所述第一修复建议修复第一代码。
12.如权利要求11所述的装置,其特征在于,所述修复模块具体用于:
获取参考代码;
根据参考代码获取第二修复建议;
根据所述第一修复建议和所述第二修复建议修复所述第一代码。
13.如权利要求12所述的装置,其特征在于,所述参考代码包括错误代码,所述修复模块具体用于:
根据所述错误代码对应的修复记录确定所述第二修复建议。
14.如权利要求11所述的装置,其特征在于,所述修复模块具体用于:
根据所述第一修复建议和所述第一代码确定第一修复方案;
向用户提供所述第一修复方案;
获取用户提供的针对所述第一修复方案的第三修复建议;
根据所述第三修复建议修复所述第一代码。
15.如权利要求14所述的装置,其特征在于,所述修复模块具体用于:
根据所述第一修复建议、参考代码和所述第一代码确定第一修复方案。
16.如权利要求11-14中任一所述的装置,其特征在于,所述修复模块还用于:
根据参考代码和所述第一代码确定第二修复方案;
向用户提供所述第二修复方案,所述第一修复建议是针对所述第二修复方案的修复建议。
17.如权利要求12或15-16中任一所述的装置,其特征在于,所述修复模块还用于:
根据所述第一代码的特征确定所述参考代码,所述特征包括代码语句特征和/或代码执行信息特征。
18.如权利要求11-17中任一所述的装置,其特征在于,所述修复模块还用于:
向用户展示所述第一代码的修复结果。
19.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;
所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如权利要求1-10中任一所述的方法。
20.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备集群运行时,使得所述计算设备集群执行如权利要求的1-10中任一所述的方法。
21.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如权利要求1-10中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310376365.3A CN116521225A (zh) | 2023-03-30 | 2023-03-30 | 一种代码修复方法、装置及计算设备集群 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310376365.3A CN116521225A (zh) | 2023-03-30 | 2023-03-30 | 一种代码修复方法、装置及计算设备集群 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116521225A true CN116521225A (zh) | 2023-08-01 |
Family
ID=87407435
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310376365.3A Pending CN116521225A (zh) | 2023-03-30 | 2023-03-30 | 一种代码修复方法、装置及计算设备集群 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116521225A (zh) |
-
2023
- 2023-03-30 CN CN202310376365.3A patent/CN116521225A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3563243B1 (en) | Determining application test results using screenshot metadata | |
CN108959059B (zh) | 一种测试方法以及测试平台 | |
CN111506444A (zh) | 表单的审批方法、装置、存储介质及电子设备 | |
CN111026394B (zh) | 一种利用自助对接平台进行流程对接的方法 | |
US20190163499A1 (en) | Simulating human interface interaction resilient to user interface changes | |
CN103984626A (zh) | 一种生成测试用例脚本的方法及装置 | |
CN109614325B (zh) | 一种确定控件属性的方法及装置、电子设备和存储介质 | |
CN107015912A (zh) | 实现远程调试的系统、方法、装置、及电子设备 | |
CN108287648A (zh) | 软件的反馈管理方法、装置、电子设备和计算机存储介质 | |
CN110737548B (zh) | 数据请求方法和服务器 | |
CN116166525A (zh) | 一种测试脚本的生成方法及装置 | |
CN113821433A (zh) | 云手机应用程序的测试方法、装置、设备、介质及产品 | |
CN115713294A (zh) | 签核处理方法及设备 | |
CN112988578A (zh) | 一种自动化测试方法和装置 | |
CN116521225A (zh) | 一种代码修复方法、装置及计算设备集群 | |
CN105447580A (zh) | 基于浮动窗口的挂号预约方法 | |
CN113704114A (zh) | 功能接口的自动化测试方法、装置、设备及介质 | |
CN109410077B (zh) | 定义规则流的方法及装置、计算机存储介质、电子设备 | |
CN112380118A (zh) | 单元测试方法、装置、介质及电子设备 | |
CN111865726A (zh) | 业务消息测试方法、装置、计算机系统和存储介质 | |
CN113656022B (zh) | 软件开发方法、装置、计算机设备和存储介质 | |
CN118132439A (zh) | 测试用例生成方法、装置及可读存储介质 | |
CN116305019A (zh) | 一种权限配置方法、装置、电子设备及存储介质 | |
CN115268880A (zh) | 一种代码生成方法、装置、电子设备及存储介质 | |
CN114756473A (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 |