CN117555720B - 代码修复方法、装置、设备及介质 - Google Patents
代码修复方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117555720B CN117555720B CN202410041476.3A CN202410041476A CN117555720B CN 117555720 B CN117555720 B CN 117555720B CN 202410041476 A CN202410041476 A CN 202410041476A CN 117555720 B CN117555720 B CN 117555720B
- Authority
- CN
- China
- Prior art keywords
- error
- code
- program
- repair
- source code
- 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
- 238000000034 method Methods 0.000 title claims abstract description 117
- 230000008439 repair process Effects 0.000 claims abstract description 208
- 230000002159 abnormal effect Effects 0.000 claims abstract description 115
- 238000004458 analytical method Methods 0.000 claims abstract description 59
- 230000008569 process Effects 0.000 claims abstract description 37
- 230000006870 function Effects 0.000 claims description 48
- 238000012545 processing Methods 0.000 claims description 21
- 238000003860 storage Methods 0.000 claims description 17
- 238000012549 training Methods 0.000 claims description 10
- 238000004806 packaging method and process Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 description 15
- 238000011084 recovery Methods 0.000 description 15
- 238000013507 mapping Methods 0.000 description 14
- 230000005856 abnormality Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 238000013473 artificial intelligence Methods 0.000 description 9
- 230000001960 triggered effect Effects 0.000 description 9
- 230000015556 catabolic process Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000007373 indentation Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/079—Root cause analysis, i.e. error or fault diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种代码修复方法、装置、设备及介质,涉及计算机技术领域。该方法包括:获取第一程序的异常信息;对异常信息进行源码追溯,在第一程序对应的代码文件中确定异常信息对应的第一源代码和异常代码位置;基于异常信息、第一源代码和异常代码位置确定修复提示文本;通过代码修复模型对修复提示文本进行语义分析,基于语义分析结果对第一源代码进行修复,得到第二源代码;基于第二源代码对第一程序对应的代码文件进行更新。结合源码追溯和代码修复模型实现了从确定异常源代码到修复源代码的自动化流程,提高了对程序代码的修复效率。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种代码修复方法、装置、设备及介质。
背景技术
在软件开发领域,软件项目开发通常被划分为多个阶段,其中,项目后期维护是较为关键的阶段。开发人员需要在项目后期维护阶段持续监测项目运行状态以保证项目的正常运行。
相关技术中,项目运行出现问题导致项目崩溃(即项目无法运行)的时候,需要先找到对应项目的开发人员,开发人员会根据项目具体的线上运行表象来推断原因,然后根据推断的原因对项目源代码进行分析和源码修复,最后根据修复好的源码重新上线项目。
然而,相关技术中开发人员手动修复源码的过程非常耗时,项目代码的修复效率较低。
发明内容
本申请实施例提供了一种代码修复方法、装置、设备及介质,能够提高代码的修复效率,所述技术方案如下:
一方面,提供了一种代码修复方法,所述方法包括:
获取第一程序的异常信息,所述异常信息用于指示所述第一程序在运行过程中出现的错误事件的事件信息;
对所述异常信息进行源码追溯,在所述第一程序对应的代码文件中确定所述异常信息对应的第一源代码和异常代码位置,所述第一源代码是指出现所述错误事件的代码文件,所述异常代码位置是指所述第一源代码中出现所述错误事件的代码片段的位置;
基于所述异常信息、所述第一源代码和所述异常代码位置确定修复提示文本,所述修复提示文本用于引导代码修复模型对所述第一源代码进行修复,所述代码修复模型是预先训练得到的包括代码修复功能的模型;
通过所述代码修复模型对所述修复提示文本进行语义分析,基于语义分析结果对所述第一源代码进行修复,得到第二源代码;
基于所述第二源代码对所述第一程序对应的代码文件进行更新。
另一方面,提供了一种代码修复装置,所述装置包括:
获取模块,用于获取第一程序的异常信息,所述异常信息用于指示所述第一程序在运行过程中出现的错误事件的事件信息;
确定模块,用于对所述异常信息进行源码追溯,在所述第一程序对应的代码文件中确定所述异常信息对应的第一源代码和异常代码位置,所述第一源代码是指出现所述错误事件的代码文件,所述异常代码位置是指所述第一源代码中出现所述错误事件的代码片段的位置;
所述确定模块,还用于基于所述异常信息、所述第一源代码和所述异常代码位置确定修复提示文本,所述修复提示文本用于引导代码修复模型对所述第一源代码进行修复,所述代码修复模型是预先训练得到的包括代码修复功能的模型;
修复模块,用于通过所述代码修复模型对所述修复提示文本进行语义分析,基于语义分析结果对所述第一源代码进行修复,得到第二源代码;
更新模块,用于基于所述第二源代码对所述第一程序对应的代码文件进行更新。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述任一所述代码修复方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述任一所述的代码修复方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一所述的代码修复方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
在第一程序运行产生错误时,能够获取第一程序的异常信息并对其进行源码追溯,确定出现异常的源代码和源代码中异常代码位置,并根据异常信息、异常源代码和异常代码位置确定修复提示文本,从而具有代码修复功能的代码修复模型能够基于该修复提示文本对异常源代码进行修复。一方面,结合源码追溯和代码修复模型实现了从确定异常源代码到修复源代码的自动化流程,提高了对程序代码的修复效率;另一方面,缩短了从发现程序异常到解决程序异常的时间,加快了对异常程序的修复流程,避免通过人工修复异常程序导致的长时间***故障,提高了***的稳定性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例提供的实施环境示意图;
图2是本申请一个示例性实施例提供的代码修复方法的流程图;
图3是本申请另一个示例性实施例提供的代码修复方法的流程图;
图4是本申请又一个示例性实施例提供的代码修复方法的流程图;
图5是本申请一个示例性实施例提供的在项目中对获取到的错误事件的分析流程示意图;
图6是本申请一个示例性实施例提供的错误栈解析和源码追溯的流程示意图;
图7是本申请一个示例性实施例提供的基于LLM进行智能修复并进行自动化重新上线的流程示意图;
图8是本申请一个示例性实施例提供的模拟触发线上项目崩溃的界面示意图;
图9是本申请一个示例性实施例提供的触发LLM智能修复与智能容灾的界面示意图;
图10是本申请一个示例性实施例提供的代码修复装置的结构框图;
图11是本申请另一个示例性实施例提供的代码修复装置的结构框图;
图12是本申请一个示例性实施例提供的计算机设备的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中术语“第一”、“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
首先,对本申请实施例中涉及的名词进行简单介绍。
人工智能(Artificial Intelligence,简称AI):人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
大语言模型(Large Language Model,LLM):大语言模型是一种超大规模的语言模型,其参数规模高达数百亿甚至千亿,通常需要消耗大量的数据和计算资源。一般具有更强的泛化能力,利用其“少样本学习(few-shot learning)”或“零样本学习(zero-shotlearning)”的能力可以实现在许多自然语言处理任务中的高效表现。其中,大语言模型LLM可被称为生成式语言模型。
提示词(Prompt):提示词是指在输入一段文字之前加入一个关键词或短语,以帮助模型更好地理解输入并生成合适的输出。Prompt在特定任务和领域中起到关键作用。例如:在本申请中生成的修复提示文本能够帮助代码修复模型明确需要完成的任务是进行代码修复,并且提供有关代码修复的上下文提示,以帮助代码修复模型更好地理解和生成输出。
相关技术中,项目运行出现问题导致项目崩溃(即项目停止运行)的时候,需要先找到对应项目的开发人员,开发人员会根据项目具体的线上运行表象来推断原因,然后根据推断的原因对项目源代码进行分析和源码修复,最后根据修复好的源码重新上线项目。然而,相关技术中开发人员手动修复源码的过程非常耗时,项目代码的修复效率较低。
本申请提供了一种代码修复方法,结合源码追溯和代码修复模型实现了从确定异常源代码到修复源代码的自动化流程,提高了对程序代码的修复效率,缩短了从发现程序异常到解决程序异常的时间,加快了对异常程序的修复流程,避免通过人工修复异常程序导致的长时间***故障,提高了***的稳定性。
示意性的,以程序代码实现为线上项目的运行代码为例对本申请提供的代码修复方法进行说明。本申请提供的方法能够实现线上项目的智能修复和智能容灾,通过实时关注项目运行状态,识别并快速应对项目崩溃问题,然后让LLM帮针对项目崩溃问题快速修复,在修复后即触发线上自动化部署,从而实现线上项目快速恢复,期间不需要人工参与。其中,线上项目的智能修复和智能容灾的过程包括以下过程。
1.自动识别和定位线上项目崩溃原因。
即实时关注线上项目运行状态,一旦发现项目崩溃,快速识别并定位错误事件,将错误事件的错误信息收集并上报,并触发智能修复和智能容灾流程。
2.LLM智能分析。
通过收集项目崩溃时的具体报错信息(包括源码位置、源码中报错代码行号、报错描述信息和报错原因等),将这些信息发送给LLM进行智能分析,以找出问题解决方案和生成修复代码片段。
3.自动化修复和重新上线。
将LLM生成的修复代码片段重新注入项目代码中,并触发项目编译、自动化部署和上线流程,使线上项目尽快恢复正常运行。
通过本申请提供的线上项目的智能修复和智能容灾方案,能够在面临线上项目崩溃时快速应对和快速恢复,提高项目的稳定性,减少人力成本。
其次,对本申请实施例中涉及的实施环境进行说明,本申请实施例提供的代码修复方法可以由终端单独执行实现,也可以由服务器执行实现,或者由终端和服务器通过数据交互实现,本申请实施例对此不加以限定。可选地,以终端和服务器交互执行代码修复方法为例进行说明。
示意性的,请参考图1,该实施环境中涉及终端110、服务器120,终端110和服务器120之间通过通信网络130连接。其中,通信网络130可实现为有线网络,也可实现为无线网络,本申请实施例对此不加以限定。
在一些实施例中,终端110中运行有第一程序。示意性的,第一程序在运行时,会产生一些异常信息,终端110会将该异常信息上传至服务器120。
服务器120接收到该异常信息后,对异常信息进行源码追溯,即在服务器120存储的第一程序的代码文件中确定异常信息对应的第一源代码和异常代码位置;然后基于异常信息、第一源代码和异常代码位置确定修复提示文本;接下来,通过服务器120存储的代码修复模型对修复提示文本进行语义分析,并基于语义分析结果对第一源代码进行修复,得到第二源代码;最后,基于第二源代码对第一程序对应的代码文件进行更新。
可选地,服务器120在对第一程序对应的代码文件更新后,还可以对更新后的代码文件进行编译,得到可执行文件,并且将打包后的可执行文件发送至终端110,终端110接收到该可执行文件后,基于可执行文件重新运行第一程序。
在一些实施例中,上述服务器120中执行的对异常信息的源码追溯到对代码文件的更新过程还可以实现为终端110中,即终端110中部署有第一程序的代码文件和代码修复模型,终端110可独立对其运行的第一程序进行异常排查和修复。在另一些实施例中,上述异常信息是指服务器120本身运行的第一程序的异常信息,即在服务器120上直接获取异常信息,并针对该异常信息对第一程序进行异常排查和修复。本申请实施例对此不进行限定。
值得注意的是,上述终端110是智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。服务器120能够是独立的物理服务器,也能够是多个物理服务器构成的服务器集群或者分布式***,还能够是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模型应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络***的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台***进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的***后盾支撑,只能通过云计算来实现。可选地,服务器120还可以实现为区块链***中的节点。
需要进行说明的是,本申请在收集用户的相关数据之前以及在收集用户的相关数据的过程中,都可以显示提示界面、弹窗或输出语音提示信息,该提示界面、弹窗或语音提示信息用于提示用户当前正在搜集其相关数据,使得本申请仅仅在获取到用户对该提示界面或者弹窗发出的确认操作后,才开始执行获取用户相关数据的相关步骤,否则(即未获取到用户对该提示界面或者弹窗发出的确认操作时),结束获取用户相关数据的相关步骤,即不获取用户的相关数据。换句话说,本申请所采集的所有用户数据都是在用户同意并授权的情况下进行采集的,且相关用户数据的收集、使用和处理需要遵守相关法律法规和标准。
结合上述介绍,图2是本申请实施例提供的一种代码修复方法的流程图,以该方法应用于如图1所示的服务器中为例进行说明,该方法如下步骤210至步骤250。
步骤210,获取第一程序的异常信息。
可选的,第一程序是指第一项目对应的运行程序,该第一程序包括软件应用程序、操作***等。示意性的,软件应用程序可以是各种类型的软件,包括网站应用程序(例如:在线论坛、搜索引擎等)、移动应用程序(例如:游戏应用、即时通讯应用、新闻应用、地图应用等)、服务程序(例如:Web服务器、数据库服务器等)等;操作***包括Windows操作***、Linux操作***等。本申请实施例对此不进行限定。
其中,异常信息用于指示第一程序在运行过程中出现的错误事件的事件信息。可选地,第一程序在运行过程中出现错误事件后,会产生与错误事件对应的事件信息,即异常信息。示意性的,该异常信息包括错误类型、错误描述、错误位置信息等。
其中,错误类型即为错误事件的错误类型;错误描述即为对发生的错误事件的详细描述,例如:ReferenceError类型的错误事件对应的一个错误描述可实现为“变量a未定义”;错误位置信息用于指示发生错误的代码位置,例如:发生错误的代码文件路径以及该代码文件中发生错误的代码的行列号。
可选地,第一程序是指通过目标编程语言编写的程序,其中,目标编程语言包括但不限于C、C++、Python、JavaScript等。
示意性的,不同编程语言编写的程序在运行时出现的错误事件是不同的,下面以目标编程语言实现为JavaScript为例进行说明,JavaScript是一种高级编程语言,用于实现交互式网页、动态网页、网站前端开发、游戏开发等。它通过嵌入在HTML中,可以直接在网页中执行,减少了浏览器和服务器之间的交互,提高了用户体验。
可选地,第一程序在运行过程中出现的错误事件的错误类型包括以下情况中的至少一种。
1、引用错误(ReferenceError):当尝试使用一个未定义的变量或者函数时,会抛出ReferenceError。例如:若调用一个没有声明的变量,则会产生ReferenceError事件。
2、范围错误(RangeError):当数值超出预期的范围时,会抛出RangeError。例如:若尝试访问数组的负索引或超出其长度的索引,或者尝试创建长度超过最大限制的数组时,则会产生RangeError事件。
3、类型错误(TypeError):当变量或参数的类型不正确时,会抛出TypeError。例如:若尝试调用一个非函数对象,或者将一个对象赋值给一个函数,则会产生TypeError事件。
4、语法错误(SyntaxError):当JavaScript解析器遇到无法解析的代码时,会抛出SyntaxError。例如:JavaScript解析器遇到拼写错误、缺少分号、括号不匹配等情况,则会产生SyntaxError事件。
5、URI错误(URIError):当全局URI对象的方法被使用不当的时候,会抛出URIError。例如:若尝试使用不正确的URL或参数来调用encodeURIComponent或decodeURIComponent等函数,则会产生URIError事件。
6、评估错误(EvalError):当eval()函数的使用不当时,会抛出EvalError。例如:当尝试解析代码时发生错误,则会产生EvalError事件。
7、内部错误(InternalError):当JavaScript解析器内部出现意外事件时,会抛出InternalError。例如:当函数调用包含过多的递归导致JavaScript解析器无法处理时,则会产生InternalError事件。
需要进行说明的是,上述对第一程序在运行过程中出现的错误事件的错误类型的举例仅为示意性的说明,本申请实施例对此不进行限定。
在一些实施例中,在第一程序停止运行(崩溃)后,自动获取第一程序的异常信息。示意性的,该异常信息可以是当前时刻第一程序产生的所有异常信息。
在另一些实施例中,在第一程序停止运行前,自动获取第一程序的异常信息。示意性的,该异常信息可以是当前时间段内第一程序产生的所有异常信息。
步骤220,对异常信息进行源码追溯,在第一程序对应的代码文件中确定异常信息对应的第一源代码和异常代码位置。
示意性的,第一程序对应的代码文件是指第一程序的代码仓库中的源代码文件。
可选地,对异常信息进行源码追溯,根据异常信息中包含的错误位置信息在第一程序对应的代码文件中确定异常信息对应的第一源代码和异常代码位置。
其中,第一源代码是指出现错误事件的代码文件,异常代码位置是指第一源代码中出现错误事件的代码片段的位置。
示意性的,错误位置信息可实现为发生错误的代码文件路径以及该代码文件中发生错误的代码的行列号,根据发生错误的代码文件路径即可从第一程序对应的代码文件中确定发生错误的源代码所在的代码文件,即第一源代码;发生错误的代码的行列号即为上述异常代码位置,也即异常代码位置是指第一源代码中出现错误事件的代码片段的行列号。
步骤230,基于异常信息、第一源代码和异常代码位置确定修复提示文本。
可选地,按照预设提示文本拼接规则对错误事件的错误类型、错误事件的错误描述、第一源代码和异常代码位置进行文本拼接,得到修复提示文本。
示意性的,异常信息中包含错误类型和错误描述,按照预设提示文本拼接规则对错误类型、错误描述、第一源代码和异常代码位置进行文本拼接,得到修复提示文本。其中,预设提示文本拼接规则可实现如下形式:“下面这段代码的第{具体报错代码行列号}行报了{报错信息}这个错误,帮我修复一下,并直接用代码回答我:{具体代码}”。
其中,具体报错代码行列号即为异常代码位置;具体报错信息即为异常信息中包含的错误类型和错误描述;具体代码即为待修复的第一源代码。
需要进行说明的是,上述对预设提示文本拼接规则的举例仅为示意性的说明,本申请实施例对此不进行限定。
其中,修复提示文本用于引导代码修复模型对第一源代码进行修复,代码修复模型是预先训练得到的包括代码修复功能的模型。
在一些实施例中,预设提示文本拼接规则包括修复提示词,修复提示词包括命名提示词、缩进提示词等中的至少一种。
可选地,命名提示词用于指示针对变量、函数、类中至少一个的命名方式,命名提示词用于引导代码修复模型生成符合命名方式的代码。
示意性的,针对变量、函数、类等的命名方式可以是第一程序中针对变量、函数、类等的命名方式。可以在修复提示文本中添加命名提示词,例如:规定代码修复模型生成的代码使用驼峰命名法(如firstName、lastName等)。通过在修复提示文本中添加命名提示词使得生成的修复代码在命名方式上与第一程序匹配,且提高了生成的修复代码的易读性、易理解性。
可选地,缩进提示词用于指示通过空格或制表符对代码块进行排版的排版方式,缩进提示词用于引导代码修复模型生成符合排版方式的代码。
示意性的,排版方式可以是第一程序中的排版方式。可以在修复提示文本中添加缩进提示词,例如:规定代码修复模型生成的代码在函数体内部使用两个空格的缩进对代码进行排版。通过在修复提示文本中添加缩进提示词使得生成的修复代码在排版方式上与第一程序匹配,且提高了生成的修复代码的易读性和可维护性。
示意性的,代码修复模型可实现为基于LLM的模型,下面对代码修复模型的训练过程进行介绍。
首先,获取预训练好的LLM,该LLM通常已经在大量无标签数据上进行过预训练,具备了语言理解的基础能力。
其次,获取用于进行训练的样本数据集,该样本数据集中包括第一样本源代码和对应的异常信息,其中,第一样本源代码是指出现目标错误事件的源代码,异常信息包括目标错误事件的错误类型和错误描述;第一样本源代码还标注有参考修复结果,参考修复结果是指预先标注的对第一样本源代码中的目标错误事件进行修复后得到的代码。然后,将第一样本源代码、错误类型和错误描述输入到预训练好的LLM中,通过LLM对第一样本源代码、错误类型和错误描述进行语义分析,得到对第一样本源代码的预测修复结果。最后,根据预测修复结果和参考修复结果之间的差异对预训练好的LLM进行训练得到代码修复模型。训练好的代码修复模型具有代码修复功能。
可选地,在第一程序属于第一项目的运行程序的情况下,第一样本源代码可以是第一项目对应的项目代码。示意性的,考虑到在不同的项目开发中程序的编写风格存在较大差异,因此为了提高模型对代码修复的准确性,则使用当前项目中的代码数据作为训练数据,训练得到的模型能够针对该项目的运行程序进行较为准确的代码修复。
可选地,上述样本数据集还包括异常位置信息,即第一样本源代码中产生的目标错误事件的具体代码片段的位置,例如:代码片段所在的行列号等。则将第一样本源代码、异常代码位置、错误类型和错误描述输入到预训练好的LLM中,通过LLM对第一样本源代码、异常代码位置、错误类型和错误描述进行语义分析,得到对第一样本源代码的预测修复结果。示意性的,通过异常代码位置的引导,模型能够从第一样本源代码中快读确定出现异常的代码从而对其进行修复,提高了对模型的训练效率。
步骤240,通过代码修复模型对修复提示文本进行语义分析,基于语义分析结果对第一源代码进行修复,得到第二源代码。
可选地,通过代码修复模型对修复提示文本进行特征提取,得到上下文特征表示,上下文特征表示用于指示修复提示文本的整体语义;对上下文特征表示进行解码处理,得到第二源代码。
示意性的,将修复提示文本输入代码修复模型中,对修复提示文本进行编码处理,得到代码修复模型能够处理的文本特征表示;根据输入的修复提示文本的语境和语义,基于文本特征表示构建一个上下文特征表示,用于表示修复提示文本的整体语义;基于上下文特征表示对第一源代码进行代码修复,得到第二源代码。
在上述实施例中,采用基于LLM模型训练得到的代码修复模型对修复提示文本对应的上下文特征表示进行解码,得到第二源代码,其中,修复提示文本能够引导模型进行生成符合上下文的第二源代码,也即提高了对第一源代码的修复准确度、且通过修复提示文本的提示模型能够很快的定位到第一源代码中出现错误的位置和具体类型,提高了模型对第一源代码的修复效率。
其中,代码修复模型基于上下文特征表示对第一源代码进行代码修复,得到第二源代码的过程可实现为对上下文特征表示的解码过程,可选地,对上下文特征表示进行解码处理,得到第二源代码的方法包括:对上下文特征表示进行解码处理;在第i个解码时刻,确定目标词典中各个词汇属于第i个解码时刻输出词汇的概率值,i为正整数,标词典中包括第一程序的编程语言对应的词汇,上下文特征表示对应有n个解码时刻,n≥i且n为正整数;将n个解码时刻输出的n个词汇按照解码顺序进行拼接,得到第二源代码。
示意性的,不同编程语言具有不同的关键字、方法、语法规则等,故可以将目标词典设置为第一程序的编程语言专有的词典,从而提高对上下文特征表示的解码效率以及提高解码得到的第二源代码的准确率。
步骤250,基于第二源代码对第一程序对应的代码文件进行更新。
示意性的,获取第二源代码后,服务器会根据原先异常信息中指示的第一源代码的代码文件路径,将第二源代码写入代码文件中,从而替换第一源代码。
可选地,基于第二源代码对第一程序对应的代码文件进行更新之后,还包括:对更新后的第一程序对应的代码文件进行编译,得到可执行文件;对可执行文件进行打包处理,将打包后的可执行文件部署在目标设备中,目标设备是指运行第一程序的设备。
示意性的,对第一程序对应的代码文件进行代码规范的静态检测和合规检查,然后用脚本来进行自动化提交,提交后触发钩子函数,从而触发自动化程序上线流程,即对第一程序对应的代码文件进行编译得到可执行文件,对可执行文件进行打包,规范化,资源提取处理后上传内容分发网络,通过内容分发网络将处理得到的可执行文件部署到目标设备上。
综上所述,本申请实施例提供的代码修复方法,在第一程序运行产生错误时,能够获取第一程序的异常信息并对其进行源码追溯,确定出现异常的源代码和源代码中异常代码位置,并根据异常信息、异常源代码和异常代码位置确定修复提示文本,从而具有代码修复功能的代码修复模型能够基于该修复提示文本对异常源代码进行修复。一方面,结合源码追溯和代码修复模型实现了从确定异常源代码到修复源代码的自动化流程,提高了对程序代码的修复效率;另一方面,缩短了从发现程序异常到解决程序异常的时间,加快了对异常程序的修复流程,避免通过人工修复异常程序导致的长时间***故障,提高了***的稳定性。
本申请提供的方法,按照预设提示文本拼接规则对错误类型、错误描述、第一源代码和异常代码位置进行文本拼接,得到修复提示文本,从而模型能够在预先了解错误类型、错误描述和错误位置的情况下,对第一源代码进行较为精确的修复,提高了对于第一源代码的修复效率和修复准确度。
本申请提供的方法,在对第一源代码进行修复后,会将修复后的第一源代码(即第二源代码)反写会第一程序的代码文件,从而对第一程序的代码文件进行更新,并针对更新后的第一程序的代码文件进行自动化部署,从而使得相关设备上运行的第一程序能够快速恢复正常运行,有效减少第一程序的故障持续时间。
在一些实施例中,上述异常信息是指通过第一错误栈获取的信息,第一错误栈是指第一程序在运行过程中出现错误事件时生成的栈,在第一错误栈中包含错误类型、错误描述、未解析错误位置信息,未解析错误位置信息是机器无法理解的信息,需要经过解析后,才能得到具体能被机器理解的错误位置。示意性的,如图3所示,上述图2所示出的实施例还可实现为步骤311至步骤350,其中,步骤210还可实现为步骤311和步骤312。
步骤311,获取第一程序的第一错误栈。
其中,第一错误栈是指第一程序在运行过程中出现错误事件时生成的栈。第一错误栈中包括错误事件的错误类型、错误事件的错误描述以及未解析错误位置信息,未解析错误位置信息用于指示未解析的第一程序的程序文件中出现错误事件的代码位置。
示意性的,在第一程序实现为JavaScript编写的程序的情况下,获取第一程序的第一错误栈的方法包括以下方法中的至少一种。
方法一:通过第一程序中的全局错误处理函数获取第一程序的第一错误栈。
可选地,全局错误处理函数用于获取第一程序中的全局错误事件对应的第一错误栈。其中,全局错误事件指的是发生在JavaScript代码任何地方的错误事件,只要是JavaScript代码的错误事件都会被全局错误处理函数捕获。
可选地,全局错误处理函数可实现为JavaScript的window.onerror方法。示意性的,当在浏览器窗口范围内的第一程序的代码发生全局错误事件时,会被window.onerror方法捕获,从而生成第一错误栈。
其中,浏览器窗口范围的代码是指在浏览器环境下运行的JavaScript代码,包括:在网页中执行的JavaScript代码,在浏览器扩展、浏览器插件等中执行的JavaScript代码等。
在一些实施例中,全局错误事件还可以通过触发window对象的error事件进行捕获。示意性的,当在浏览器窗口范围内的代码发生错误时,会触发window对象的error事件,从而生成第一错误栈。
需要进行说明的是,上述window.onerror方法和window对象的error事件都是用来捕获JavaScript运行时出现的错误。它们的区别在于事件可以通过“addEventListener”来添加,而方法则需要在全局作用域下直接定义。另外,事件的回调函数可以使用“removeEventListener”来取消,而方法则不能取消。
方法二:通过第一程序中的局部错误处理函数获取第一程序的第一错误栈。
可选地,局部错误处理函数用于获取第一程序中的局部错误事件对应的第一错误栈。局部错误事件是指发生在函数体内部的错误,只有在函数执行时才能被捕获到。
可选地,局部错误处理函数为实现为JavaScript的try catch语句。示意性的,当第一程序的代码发生全局错误事件时,会被try catch语句捕获,从而生成第一错误栈。
方法三:通过触发请求拒绝事件获取第一程序的第一错误栈。
可选地,请求拒绝事件在JavaScript中未处理的请求被拒绝时触发的事件。
可选地,请求拒绝事件可实现为window对象的unhandlerejection事件。示意性的,第一程序运行过程中,若异步操作(发送请求、异步代码)期间发生异步错误,会触发window对象的unhandlerejection事件,从而生成第一错误栈。
需要进行说明的是,上述获取第一程序的第一错误栈的举例仅为示意性的说明,本申请实施例对此不进行限定。
步骤312,对第一错误栈进行解析处理,得到异常信息。
可选地,对第一错误栈中的未解析错误位置信息进行解析,得到错误位置信息,错误位置信息包括代码文件路径和异常代码位置,代码文件路径用于指示出现错误事件的第一源代码的文件路径,异常代码位置是指第一源代码中出现错误事件的代码片段的位置;将错误事件的错误类型、错误事件的错误描述、代码文件路径和异常代码位置作为异常信息。
示意性的,未解析错误位置信息中包含未解析的报错文件路径、未解析的代码行号、未解析的代码列号。通过在未解析的报错文件路径后面拼接上“.map”,得到源码映射文件,通过第一映射函数获取源码映射文件对应的源码映射内容(即SourceMapContent)。其中,第一映射函数可实现为fetch函数(例如:fetchSourceMapContent函数),源码映射文件包含了编译后的代码与原始源代码之间的映射关系,例如:每个编译后的代码段的行号和列号、文件名等信息。当程序出现错误时,可以使用源码映射文件将错误定位到原始源代码中的位置,以便于排查和修复问题。
得到源码映射内容后,可将源码映射内容导入SourceMap库中,得到一个消费对象(即consumer)。其中,SourceMap库是一种专门用于处理和操作SourceMap数据的库,消费对象代表一个使用SourceMap数据的对象或工具,用于查询和操作源码映射信息。通过consumer对象,可以在原始源代码中找到编译后代码中发生错误的位置。
示意性的,消费对象提供了originalPositionFor服务,将未解析的代码行号、未解析的代码列号输入进去,就可以得到解析后的具体代码文件路径和解析后的具体报错代码行号和列号,即为解析得到的错误位置信息。
步骤320,对异常信息进行源码追溯,在第一程序对应的代码文件中确定异常信息对应的第一源代码和异常代码位置。
示意性的,错误位置信息包括代码文件路径和异常代码位置,根据发代码文件路径即可从第一程序对应的代码文件中确定发生错误的源代码所在的代码文件,即第一源代码;异常代码位置是指第一源代码中出现错误事件的代码片段的行列号。
步骤330,基于异常信息、第一源代码和异常代码位置确定修复提示文本。
其中,修复提示文本用于引导代码修复模型对第一源代码进行修复,代码修复模型是预先训练得到的包括代码修复功能的模型。
示意性的,异常信息中包含错误类型和错误描述,按照预设提示文本拼接规则对错误类型、错误描述、第一源代码和异常代码位置进行文本拼接,得到修复提示文本。
步骤340,通过代码修复模型对修复提示文本进行语义分析,基于语义分析结果对第一源代码进行修复,得到第二源代码。
示意性的,将修复提示文本输入代码修复模型中,对修复提示文本进行编码处理,得到代码修复模型能够处理的文本向量表示;根据输入的修复提示文本的语境和语义,基于文本向量表示构建一个上下文向量,用于表示修复提示文本的整体意义;基于上下文向量对第一源代码进行代码修复,得到第二源代码。
步骤350,基于第二源代码对第一程序对应的代码文件进行更新。
示意性的,获取第二源代码后,服务器会根据原先异常信息中指示的第一源代码的代码文件路径,将第二源代码写入代码文件中,从而替换第一源代码。
综上所述,本申请实施例提供的代码修复方法,在第一程序运行产生错误时,能够获取第一程序的异常信息并对其进行源码追溯,确定出现异常的源代码和源代码中异常代码位置,并根据异常信息、异常源代码和异常代码位置确定修复提示文本,从而具有代码修复功能的代码修复模型能够基于该修复提示文本对异常源代码进行修复。一方面,结合源码追溯和代码修复模型实现了从确定异常源代码到修复源代码的自动化流程,提高了对程序代码的修复效率;另一方面,缩短了从发现程序异常到解决程序异常的时间,加快了对异常程序的修复流程,避免通过人工修复异常程序导致的长时间***故障,提高了***的稳定性。
本申请实施例提供的方法,通过解析错误栈获取异常信息,从而快速确定出现错误事件的异常代码的代码位置,提高了对于异常信息的获取效率。
在一些实施例,需要对第一程序进行趋势分析,当趋势分析结果符合程序修复条件的情况下,触发源码追溯和修复。示意性的,如图4所示,上述图3或者图2所示出的实施例还可实现为步骤411至步骤450。
步骤411,获取m个错误栈。
其中,m个错误栈中包括第一错误栈,m为正整数。
其中,错误栈是指第一程序在运行过程中出现错误事件时生成的栈。错误栈中包括错误事件的错误类型、错误事件的错误描述以及未解析错误位置信息,未解析错误位置信息用于指示未解析的第一程序的程序文件中出现错误事件的代码位置。
示意性的,以第一程序实现为JavaScript项目运行程序为例进行说明,请参考图5,其示出了一种项目中对获取到的错误事件的分析流程示意图,如图5所示,当项目中错误发生时,捕获项目中的报错信息,捕获方法可实现为如下方法中的至少一种。
(1)错误(onerror)方法和错误(error)事件。
即可通过JavaScript的window.onerror方法、window对象的error事件,获取常规JavaScript代码运行报错并进行一个全局错误信息的捕获。
(2)未处理的拒绝(unhandlerejection)事件。
即通过window对象的unhandlerejection事件,捕获项目运行当中异步操作(发送请求、异步代码等)期间所发生的异步错误。
(3)捕获(catch)语句。
即在项目中的顶层代码入口包一层try catch语句进行一个综合错误捕获。
通过上述捕获方法,可以基本上把所有项目中所有类型的错误事件都能捕获住。当捕获到错误了以后,即可生成stack错误栈501,其中包含:具体错误信息error info(包括错误类型和错误描述)、未解析的报错文件路径file path、未解析的报错代码位置loction(包括未解析的代码行号、未解析的代码列号)。将stack错误栈501传给后台进行解析与源码追溯。
步骤412,基于m个错误栈分别对应的错误事件的错误类型,对第一程序进行崩溃趋势分析,得到趋势分析结果。
其中,趋势分析结果用于指示m个错误栈分别对应的错误事件导致第一程序停止运行的可能性。
示意性的,在基于第一错误栈进行解析与源码追溯之前,需要对捕获到的m个错误栈中包含的错误类型进行统计分析,判断当前第一程序是否有崩溃的趋势。请参考图5,收集m个错误栈,将m个错误栈中的各个错误栈进行一个换行分隔,得到一个数组,数组第一项就是错误类型和错误描述,然后后台对错误类型进行错误统计。
在对错误类型进行错误统计后,根据错误类型对m个错误栈进行错误分类,其中,JavaScript的错误类型有七大错误类型:ReferenceError、RangeError、TypeError、SyntaxError、URIError、EvalError、InternalError。
可选地,获取趋势分析结果的方法还包括:获取m个错误栈对应的多个错误类型分别对应的类型数量;获取多个错误类型分别对应的类型权重,类型权重用于指示错误类型与第一程序的停止运行事件之间的关联程度;基于多个错误类型分别对应的类型权重对多个错误类型分别对应的类型数量进行加权求和,得到程序崩溃分数作为趋势分析结果。
上述通过错误类型的对应的类型权重对类型数量进行加权处理得到程序崩溃分数作为趋势分析结果,在计算程序崩溃分数是考虑到了不同错误类型对程序崩溃事件的差异化影响,提高了最终确定的趋势分析结果的准确性,从而能够更为准确的判断程序是否存在崩溃的趋势,减少了判断失误造成对计算机算力资源的浪费。
示意性的,请参考图5,进行错误类型分类后进行等级判断,即判断每种错误类型的级别和严重程度等级,即类型权重。在JavaScript中,ReferenceError是最常见和最容易导致项目崩溃不可用的类型,它的权重更高。
判断错误类型的等级后即可进行趋势分析,对这些m个错误栈的错误类型的数量进行统计,将指定错误类型的数量乘以指定错误类型对应的类型权重,得到类型崩溃分数,如URIError为10(m个错误栈中错误类型为URIError的数量)×0.3(URIError的类型权重)=3,将所有的类型崩溃分数相加,即得到程序崩溃分数。
步骤413,在趋势分析结果符合程序修复条件的情况下,对m个错误栈分别进行解析,得到m个错误栈分别对应的异常信息。
可选地,对m个错误栈分别对应的未解析错误位置信息进行解析,得到m个错误栈分别对应的错误位置信息,错误位置信息包括代码文件路径和异常代码位置;将错误事件的错误类型、错误事件的错误描述、代码文件路径和异常代码位置作为异常信息。
示意性的,在程序崩溃分数小于或者等于预设分数的情况下,确定趋势分析结果符合程序修复条件,对m个错误栈分别进行解析。
请参考图6,其示出了一种错误栈解析和源码追溯的流程示意图。前面说的,把stack错误栈进行一个换行分隔,得到一个数组,数组第一项是错误类型和错误描述;数组第二项是即为未解析报错文件路径和未解析的报错行号和列号。下面,介绍对未解析报错文件路径和未解析的报错行号和列号的解析过程。
如图6所示,通过在未解析报错文件路径后面拼接上“map”,得到源码映射文件601,通过fetch函数获取源码映射文件601对应的映射内容(即SMContent),将SMContent导入SourceMap库中,得到一个consumer消费对象,消费对象提供了原始位置(originalPos)服务,将stack错误栈中未解析的报错行号和列号输入进去,就可以得到解析后的具体信息,包括:具体代码文件路径(即源码路径)、解析后的具体报错代码行号和列号(即报错位置)、报错信息(包括错误描述和错误类型)。
步骤420,对m个错误栈分别对应的异常信息进行源码追溯,在第一程序对应的代码文件中确定m个错误栈分别对应的第一源代码和异常代码位置。
其中,第一源代码是指出现错误事件的代码文件,异常代码位置是指第一源代码中出现错误事件的代码片段的位置。
示意性的,请参考图6,可通过具体代码文件路径,追溯到代码仓库得到具体的代码文件,即上述图6中的源代码。至此得到了源代码、具体报错代码行号和列号、报错信息(即错误类型和错误描述)。
在一些实施例中,触发对错误栈进行解析的方法还包括:在m个错误栈的数量达到预设数量的情况下,对m个错误栈分别对应的未解析错误位置信息进行解析;或者,在m个错误栈对应的获取时长达到预设时长的情况下,对m个错误栈分别对应的未解析错误位置信息进行解析。
示意性的,若当前服务器累计接收到的错误栈数据大于或者等于预设数量,表示第一程序出现的错误事件较多,对开始对m个错误栈中的各个错误栈中的未解析错误位置信息进行解析,从而触发对第一程序的修复流程。通过达到累计次数触发对第一程序的修复流程,将第一程序中出现的错误事件的数量限制在一个合理的区间,防止第一程序因错误累积而导致崩溃或性能下降,提高了第一程序的运行稳定性和可靠性。
或者,每隔半天对服务器在此期间(即半天内)接收到的m个错误栈中的各个错误栈中的未解析错误位置信息进行解析,从而触发对第一程序的修复流程。通过达到时长触发对第一程序的修复流程,能够及时对第一程序中出现的错误事件进行修复和解决,提高了第一程序的运行稳定性。
步骤430,基于m个错误栈分别对应的异常信息、m个错误栈分别对应的第一源代码和m个错误栈分别对应的异常代码位置,确定m个错误栈分别对应的修复提示文本。
其中,修复提示文本用于引导代码修复模型对第一源代码进行修复,代码修复模型是预先训练得到的包括代码修复功能的模型。
示意性的,得到了第一源代码、具体报错代码行号和列号、具体报错信息,开始调用LLM(即代码修复模型),这个时候要配置好LLM的prompts提示词,告诉LLM应该怎么修复这个线上问题。
可选地,LLM的prompts提示词拼接规则如下所示:“下面这段代码的第{具体报错代码行号和列号}行报了{报错信息}这个错误,帮我修复一下,直接用代码回答我:{源代码}”。
步骤440,通过代码修复模型对m个错误栈分别对应的修复提示文本进行语义分析,基于语义分析结果对m个错误栈分别对应的第一源代码进行修复,得到m个错误栈分别对应的第二源代码。
示意性的,请参考图7,其示出了基于LLM进行智能修复并进行自动化重新上线的流程示意图。如图7所示,按照上面的prompts提示词拼接规则对信息进行数据拼接后,然后输入LLM模型701。其中信息包括:prompts(提示词)、源码(即上述解析得到的源代码)、error info(即上述报错信息)、报错位置(即具体报错代码行号和列号)。
LLM模型701经过分析后,会根据拼接得到的提示文本提示词,对代码进行修复,然后将修复好的代码返回回来。
步骤450,基于m个错误栈分别对应的第二源代码对第一程序对应的代码文件进行更新。
示意性的,如图7所示,基于LLM模型701进行开发运维(devops)的过程为:获取到修复好的代码信息后,根据源码具体路径位置,将代码反写(answer)回项目代码文件并进行代码检查:包括代码规范的静态检测和合规检查,然后用脚本来进行自动化提交,提交后触发项目代码钩子(hooks),关联触发自动化上线流程,自动化执行上线流水线,对项目代码进行编译,打包,规范化,资源提取并上传CDN,然后将代码部署上线到服务器上,然后进行监测覆盖,完成线上自动化部署。
这样整个智能修复、智能容灾的流程就完成了,从问题的发现到统计,然后进行分析并解析出源码和信息,然后输入LLM,让LLM修复问题,修复好问题后然后重新部署上线,线上问题被修复,实现了真正意义上的智能修复和智能容灾,全程智能化,无需开发人员参与,解放了开发人员实时对线上情况的关注,减少了人力,提高生产力和工作效率。
综上所述,本申请实施例提供的方法,能够在正式进行源码追溯和修复之前,针对当前第一程序存在的错误事件进行分析,判断第一程序是否存在崩溃的趋势,在分析结果指示第一程序可能崩溃的情况下,才会进行针对错误事件进行源码追溯和代码修复,避免了频繁对第一程序进行源码追溯和代码修复造成对计算机算力资源的浪费。同时若频繁进行代码修复,则第一程序需要多次进行更新,从而造成了第一程序的运行间歇较多,不利于第一程序的运行稳定性,通过在进行代码修复之前,进行程序崩溃事件判断,最大化的维护了程序的稳定性。
示意性的,本申请中的代码修复方法还可称为基于LLM实现的线上项目智能修复与智能容灾方法,其中,智能修复与智能容灾的核心特性就是能识别出线上项目发生了崩溃,然后根据具体问题原因通过LLM进行分析并生成代码精准的修复具体问题,然后通过机器自动化重新上线,实现自我修复,恢复线上项目从而达到智能容灾。下面通过模拟界面对基于LLM实现的线上项目智能修复与智能容灾方法进行介绍。
一、模拟线上正常运行的项目。
示意性的,请参考图8,针对正常的线上运行的项目,预设了一个有问题的 “触发崩溃”按钮801,点击它会触发一个线上bug,强制导致项目崩溃。用来模拟真实线上项目崩溃的场景。
二、模拟触发线上项目崩溃。
示意性的,点击“触发崩溃”按钮801,触发一个真实的线上问题,导致线上项目崩溃,如图8所示,在界面810中,由于项目发生运行时错误,项目没法解析正常数据,直接导致项目崩溃,不可运行,整个项目和涉及的其他功能直接处于不可用状态。
三、触发LLM智能修复与智能容灾。
示意性的,如图9所示,在界面900中,项目发生崩溃,***成功捕获到具体错误,通过源码追溯机制定位和解析出错误信息(包含报错文件路径、具体报错代码行号、错误描述和错误类型等),将这些信息发送给LLM,并配合上prompts提示词,LLM通过提供的信息进行智能问题分析,分析完毕后然后得出问题解决方案和修复好的代码片段,即智能修复完成。
四、恢复线上项目。
将LLM生成的代码片段重新注入项目代码,触发项目编译,进行自动化部署和上线,让线上项目重新恢复运行,实现了线上项目的自我修复,从而达到了线上项目的智能容灾。
综上,上述智能修复和智能容灾技术方案包括以下有益效果。
1.提高***稳定性:通过实时关注线上项目,智能容灾和自我修复技术能够在项目崩溃时立即发现问题,通过源码追溯技术,快速定位到问题,然后通过LLM来帮助修复并重新部署,快速将线上项目恢复。避免了开发人员人工定位问题导致的长时间***故障,从而提高了整个***的稳定性。
2.提高问题解决效率:通过源码追溯定位技术搭配LLM进行智能分析和生成修复代码,能够在短时间内找到问题根源并提供解决方案,大大缩短了从问题发现到解决的时间,提高了问题解决效率。
3.减轻维护人员负担:通过自动化的方式进行代码修复和重新上线,减轻了维护人员的工作压力,不需要开发人员实时关注项目信息,使他们可以将更多精力投入到项目的优化和迭代中。
4.提高用户体验:能够尽快恢复线上项目的正常运行,有效减少线上项目故障持续时间,减少因为项目崩溃导致的用户体验下降,提高用户和满意度。
需要进行说明的是,上述智能修复和智能容灾技术方案可以运用在自动化测试中,实现智能测试,在项目上线前,进行一次项目自动化测试,发现问题,触发智能修复,能够及时发现***潜在的问题隐患,降低了***线上崩溃的风险和频率。
图10是本申请一个示例性实施例提供的代码修复装置的结构框图,如图10所示,该装置包括如下部分:
获取模块1010,用于获取第一程序的异常信息,所述异常信息用于指示所述第一程序在运行过程中出现的错误事件的事件信息;
确定模块1020,用于对所述异常信息进行源码追溯,在所述第一程序对应的代码文件中确定所述异常信息对应的第一源代码和异常代码位置,所述第一源代码是指出现所述错误事件的代码文件,所述异常代码位置是指所述第一源代码中出现所述错误事件的代码片段的位置;
所述确定模块1020,还用于基于所述异常信息、所述第一源代码和所述异常代码位置确定修复提示文本,所述修复提示文本用于引导代码修复模型对所述第一源代码进行修复,所述代码修复模型是预先训练得到的包括代码修复功能的模型;
修复模块1030,用于通过所述代码修复模型对所述修复提示文本进行语义分析,基于语义分析结果对所述第一源代码进行修复,得到第二源代码;
更新模块1040,用于基于所述第二源代码对所述第一程序对应的代码文件进行更新。
在一些实施例中,请参考图11,所述异常信息中包括所述错误事件的错误类型和所述错误事件的错误描述;所述确定模块1020,还包括:
拼接单元1021,用于按照预设提示文本拼接规则对所述错误事件的错误类型、所述错误事件的错误描述、所述第一源代码和所述异常代码位置进行文本拼接,得到所述修复提示文本。
在一些实施例中,所述预设提示文本拼接规则包括修复提示词,所述修复提示词包括以下提示词中的至少一种:
命名提示词,所述命名提示词用于指示针对变量、函数、类中至少一个的命名方式,所述命名提示词用于引导所述代码修复模型生成符合所述命名方式的代码;
缩进提示词,所述缩进提示词用于指示通过空格或制表符对代码块进行排版的排版方式,所述缩进提示词用于引导所述代码修复模型生成符合所述排版方式的代码。
在一些实施例中,所述修复模块1030,还包括:
提取单元1031,用于通过所述代码修复模型对所述修复提示文本进行特征提取,得到上下文特征表示,所述上下文特征表示用于指示所述修复提示文本的整体语义;
解码单元1032,用于对所述上下文特征表示进行解码处理,得到所述第二源代码。
在一些实施例中,所述解码单元1032,用于对所述上下文特征表示进行解码处理;在第i个解码时刻,确定目标词典中各个词汇属于所述第i个解码时刻输出词汇的概率值,i为正整数,所述目标词典中包括所述第一程序的编程语言对应的词汇,所述上下文特征表示对应有n个解码时刻,n≥i且n为正整数;将所述n个解码时刻输出的n个词汇按照解码顺序进行拼接,得到所述第二源代码。
在一些实施例中,所述获取模块1010,用于获取所述第一程序的第一错误栈,所述第一错误栈是指所述第一程序在运行过程中出现所述错误事件时生成的栈,所述第一错误栈中包括所述错误事件的错误类型、所述错误事件的错误描述以及未解析错误位置信息,所述未解析错误位置信息用于指示未解析的所述第一程序的程序文件中出现所述错误事件的代码位置;所述获取模块1010,还包括:
解析单元1011,用于对所述第一错误栈中的未解析错误位置信息进行解析,得到错误位置信息,所述错误位置信息包括代码文件路径和所述异常代码位置,所述代码文件路径用于指示出现所述错误事件的所述第一源代码的文件路径,异常代码位置是指所述第一源代码中出现所述错误事件的代码片段的位置;
确定单元1012,用于将所述错误事件的错误类型、所述错误事件的错误描述、所述代码文件路径和所述异常代码位置作为所述异常信息。
在一些实施例中,所述获取模块1010,用于获取m个错误栈,所述m个错误栈中包括所述第一错误栈,m为正整数;所述解析单元1011,用于基于所述m个错误栈分别对应的错误事件的错误类型,对所述第一程序进行崩溃趋势分析,得到趋势分析结果,所述趋势分析结果用于指示所述m个错误栈分别对应的错误事件导致所述第一程序停止运行的可能性;在所述趋势分析结果符合程序修复条件的情况下,对所述m个错误栈分别对应的未解析错误位置信息进行解析。
在一些实施例中,所述解析单元1011,用于获取所述m个错误栈对应的多个错误类型分别对应的类型数量;获取所述多个错误类型分别对应的类型权重,所述类型权重用于指示所述错误类型与所述第一程序的停止运行事件之间的关联程度;基于所述多个错误类型分别对应的类型权重对所述多个错误类型分别对应的类型数量进行加权求和,得到程序崩溃分数作为所述趋势分析结果;在所述程序崩溃分数小于或者等于预设分数的情况下,对所述m个错误栈分别对应的未解析错误位置信息进行解析。
在一些实施例中,所述解析单元1011,用于在所述m个错误栈的数量达到预设数量的情况下,对所述m个错误栈分别对应的未解析错误位置信息进行解析;或者,在所述m个错误栈对应的获取时长达到预设时长的情况下,对所述m个错误栈分别对应的未解析错误位置信息进行解析。
在一些实施例中,所述装置还包括:
部署模块1050,用于对更新后的所述第一程序对应的代码文件进行自动编译,得到可执行文件;对所述可执行文件进行打包处理,将打包后的所述可执行文件部署在目标设备中,所述目标设备是指运行所述第一程序的设备。
综上所述,本申请实施例提供的代码修复装置,在第一程序运行产生错误时,能够获取第一程序的异常信息并对其进行源码追溯,确定出现异常的源代码和源代码中异常代码位置,并根据异常信息、异常源代码和异常代码位置确定修复提示文本,从而具有代码修复功能的代码修复模型能够基于该修复提示文本对异常源代码进行修复。一方面,结合源码追溯和代码修复模型实现了从确定异常源代码到修复源代码的自动化流程,提高了对程序代码的修复效率;另一方面,缩短了从发现程序异常到解决程序异常的时间,加快了对异常程序的修复流程,避免通过人工修复异常程序导致的长时间***故障,提高了***的稳定性。
需要说明的是:上述实施例提供的代码修复装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的代码修复装置与代码修复方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图12示出了本申请一个示例性实施例提供的电子设备1200的结构框图。该计算机设备1200可以是便携式移动终端,比如:智能手机、车载终端、平板电脑、MP3播放器(MovingPicture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。计算机设备1200还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,计算机设备1200包括有:处理器1201和存储器1202。
处理器1201可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1201可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1201也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1201可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1201还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1202可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1202还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1202中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1201所执行以实现本申请中方法实施例提供的代码修复方法。
在一些实施例中,计算机设备1200还包括有一个或多个传感器。该一个或多个传感器包括但不限于:接近传感器、陀螺仪传感器、压力传感器。
接近传感器,也称距离传感器,通常设置在计算机设备1200的前面板。接近传感器用于采集用户与计算机设备1200的正面之间的距离。
陀螺仪传感器可以检测计算机设备1200的机体方向及转动角度,陀螺仪传感器可以与加速度传感器协同采集用户对计算机设备1200的3D动作。处理器1201根据陀螺仪传感器采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器可以设置在计算机设备1200的侧边框和/或显示屏的下层。当压力传感器设置在计算机设备1200的侧边框时,可以检测用户对计算机设备1200的握持信号,由处理器1201根据压力传感器采集的握持信号进行左右手识别或快捷操作。当压力传感器设置在显示屏的下层时,由处理器1201根据用户对显示屏的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
在一些实施例中,计算机设备1200还包括其他组件部分,本领域技术人员可以理解,图12中示出的结构并不构成对计算机设备1200的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请的实施例还提供了一种计算机设备,该计算机设备可以实现为如图1所示的终端或者服务器。该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述各方法实施例提供的代码修复方法。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行,以实现上述各方法实施例提供的代码修复方法。
本申请的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中任一所述的代码修复方法。
可选地,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、固态硬盘(SSD,Solid State Drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种代码修复方法,其特征在于,所述方法包括:
获取m个错误栈,所述m个错误栈中包括第一错误栈,m为正整数;所述m个错误栈是指第一程序在运行过程中出现错误事件时生成的栈,所述m个错误栈中分别包括错误事件的错误类型、错误事件的错误描述以及未解析错误位置信息,所述未解析错误位置信息用于指示未解析的所述第一程序的程序文件中出现错误事件的代码位置;
获取所述m个错误栈对应的多个错误类型分别对应的类型数量;
获取所述多个错误类型分别对应的类型权重,所述类型权重用于指示所述错误类型与所述第一程序的停止运行事件之间的关联程度;
基于所述多个错误类型分别对应的类型权重对所述多个错误类型分别对应的类型数量进行加权求和,得到程序崩溃分数作为趋势分析结果,所述趋势分析结果用于指示所述m个错误栈分别对应的错误事件导致所述第一程序停止运行的可能性;
在所述趋势分析结果符合程序修复条件的情况下,对所述m个错误栈分别对应的未解析错误位置信息进行解析,得到错误位置信息,所述错误位置信息包括代码文件路径和异常代码位置,所述代码文件路径是指出现错误事件的第一源代码的文件路径,所述异常代码位置是指所述第一源代码中出现错误事件的代码片段的位置;
将所述错误事件的错误类型、所述错误事件的错误描述、所述代码文件路径和所述异常代码位置作为异常信息;
对所述第一错误栈对应的异常信息进行源码追溯,在所述第一程序对应的代码文件中确定所述第一错误栈对应的第一源代码;
基于所述第一错误栈对应的异常信息和第一源代码确定修复提示文本,所述修复提示文本用于引导代码修复模型对所述第一源代码进行修复,所述代码修复模型是预先训练得到的包括代码修复功能的模型;
通过所述代码修复模型对所述修复提示文本进行语义分析,基于语义分析结果对所述第一错误栈对应的第一源代码进行修复,得到第二源代码;
基于所述第二源代码对所述第一程序对应的代码文件进行更新。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第一错误栈对应的异常信息和第一源代码确定修复提示文本,包括:
按照预设提示文本拼接规则对所述第一错误栈对应的错误事件的错误类型、错误事件的错误描述、第一源代码和异常代码位置进行文本拼接,得到所述修复提示文本。
3.根据权利要求2所述的方法,其特征在于,所述预设提示文本拼接规则包括修复提示词,所述修复提示词包括以下提示词中的至少一种:
命名提示词,所述命名提示词用于指示针对变量、函数、类中至少一个的命名方式,所述命名提示词用于引导所述代码修复模型生成符合所述命名方式的代码;
缩进提示词,所述缩进提示词用于指示通过空格或制表符对代码块进行排版的排版方式,所述缩进提示词用于引导所述代码修复模型生成符合所述排版方式的代码。
4.根据权利要求1所述的方法,其特征在于,所述通过所述代码修复模型对所述修复提示文本进行语义分析,基于语义分析结果对所述第一错误栈对应的第一源代码进行修复,得到第二源代码,包括:
通过所述代码修复模型对所述修复提示文本进行特征提取,得到上下文特征表示,所述上下文特征表示用于指示所述修复提示文本的整体语义;
对所述上下文特征表示进行解码处理,得到所述第二源代码。
5.根据权利要求4所述的方法,其特征在于,所述对所述上下文特征表示进行解码处理,得到所述第二源代码,包括:
对所述上下文特征表示进行解码处理;
在第i个解码时刻,确定目标词典中各个词汇属于所述第i个解码时刻输出词汇的概率值,i为正整数,所述目标词典中包括所述第一程序的编程语言对应的词汇,所述上下文特征表示对应有n个解码时刻,n≥i且n为正整数;
将所述n个解码时刻输出的n个词汇按照解码顺序进行拼接,得到所述第二源代码。
6.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
在所述m个错误栈的数量达到预设数量的情况下,对所述m个错误栈分别对应的未解析错误位置信息进行解析;
或者,
在所述m个错误栈对应的获取时长达到预设时长的情况下,对所述m个错误栈分别对应的未解析错误位置信息进行解析。
7.根据权利要求1至5任一所述的方法,其特征在于,所述基于所述第二源代码对所述第一程序对应的代码文件进行更新之后,还包括:
对更新后的所述第一程序对应的代码文件进行自动编译,得到可执行文件;
对所述可执行文件进行打包处理,将打包后的所述可执行文件部署在目标设备中,所述目标设备是指运行所述第一程序的设备。
8.一种代码修复装置,其特征在于,所述装置包括:
获取模块,用于获取m个错误栈,所述m个错误栈中包括第一错误栈,m为正整数;所述m个错误栈是指第一程序在运行过程中出现错误事件时生成的栈,所述m个错误栈中分别包括错误事件的错误类型、错误事件的错误描述以及未解析错误位置信息,所述未解析错误位置信息用于指示未解析的所述第一程序的程序文件中出现错误事件的代码位置;获取所述m个错误栈对应的多个错误类型分别对应的类型数量;获取所述多个错误类型分别对应的类型权重,所述类型权重用于指示所述错误类型与所述第一程序的停止运行事件之间的关联程度;基于所述多个错误类型分别对应的类型权重对所述多个错误类型分别对应的类型数量进行加权求和,得到程序崩溃分数作为趋势分析结果,所述趋势分析结果用于指示所述m个错误栈分别对应的错误事件导致所述第一程序停止运行的可能性;在所述趋势分析结果符合程序修复条件的情况下,对所述m个错误栈分别对应的未解析错误位置信息进行解析,得到错误位置信息,所述错误位置信息包括代码文件路径和异常代码位置,所述代码文件路径是指出现错误事件的第一源代码的文件路径,所述异常代码位置是指所述第一源代码中出现错误事件的代码片段的位置;将所述错误事件的错误类型、所述错误事件的错误描述、所述代码文件路径和所述异常代码位置作为异常信息;
确定模块,用于对所述第一错误栈对应的异常信息进行源码追溯,在所述第一程序对应的代码文件中确定所述第一错误栈对应的第一源代码;
所述确定模块,还用于基于所述第一错误栈对应的异常信息和第一源代码确定修复提示文本,所述修复提示文本用于引导代码修复模型对所述第一源代码进行修复,所述代码修复模型是预先训练得到的包括代码修复功能的模型;
修复模块,用于通过所述代码修复模型对所述修复提示文本进行语义分析,基于语义分析结果对所述第一错误栈对应的第一源代码进行修复,得到第二源代码;
更新模块,用于基于所述第二源代码对所述第一程序对应的代码文件进行更新。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一段程序,所述至少一段程序由所述处理器加载并执行以实现如权利要求1至7任一所述的代码修复方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一段程序,所述至少一段程序由处理器加载并执行以实现如权利要求1至7任一所述的代码修复方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410041476.3A CN117555720B (zh) | 2024-01-11 | 2024-01-11 | 代码修复方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410041476.3A CN117555720B (zh) | 2024-01-11 | 2024-01-11 | 代码修复方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117555720A CN117555720A (zh) | 2024-02-13 |
CN117555720B true CN117555720B (zh) | 2024-04-26 |
Family
ID=89815153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410041476.3A Active CN117555720B (zh) | 2024-01-11 | 2024-01-11 | 代码修复方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117555720B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117724695B (zh) * | 2024-02-18 | 2024-04-30 | 浙江同花顺智能科技有限公司 | 大型语言模型的代码生成优化方法、装置、设备及介质 |
CN118227511A (zh) * | 2024-05-23 | 2024-06-21 | 永联科技(常熟)有限公司 | 一种代码异常检测方法、装置、电子设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489345A (zh) * | 2019-08-08 | 2019-11-22 | 北京字节跳动网络技术有限公司 | 一种崩溃聚合方法、装置、介质和设备 |
CN112860473A (zh) * | 2021-04-27 | 2021-05-28 | 武汉深之度科技有限公司 | 程序运行错误时定位源代码的方法、装置及计算设备 |
CN114416421A (zh) * | 2022-01-24 | 2022-04-29 | 北京航空航天大学 | 一种代码缺陷的自动定位与修复方法 |
CN115658367A (zh) * | 2022-11-10 | 2023-01-31 | 中国银行股份有限公司 | 一种基于程序错误码的异常提示方法和装置 |
CN116302998A (zh) * | 2023-03-01 | 2023-06-23 | 哈尔滨工业大学(深圳) | 多模态程序自动修复方法、***、设备及存储介质 |
CN116560890A (zh) * | 2023-05-15 | 2023-08-08 | 北京化工大学 | 一种结合词法和语法信息的自动程序修复方法 |
CN116909532A (zh) * | 2023-09-12 | 2023-10-20 | 深圳须弥云图空间科技有限公司 | 一种代码生成与缺陷修复方法和装置 |
CN116991467A (zh) * | 2023-08-01 | 2023-11-03 | 苏州蜚语信息科技有限公司 | 一种基于大型语言模型的代码修复***及修复方法 |
CN117130593A (zh) * | 2023-08-14 | 2023-11-28 | 科大讯飞股份有限公司 | 代码处理方法、***和电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090013208A1 (en) * | 2008-03-31 | 2009-01-08 | Dimuzio Thomas M | Real time automated exception notification and reporting solution |
-
2024
- 2024-01-11 CN CN202410041476.3A patent/CN117555720B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489345A (zh) * | 2019-08-08 | 2019-11-22 | 北京字节跳动网络技术有限公司 | 一种崩溃聚合方法、装置、介质和设备 |
CN112860473A (zh) * | 2021-04-27 | 2021-05-28 | 武汉深之度科技有限公司 | 程序运行错误时定位源代码的方法、装置及计算设备 |
CN114416421A (zh) * | 2022-01-24 | 2022-04-29 | 北京航空航天大学 | 一种代码缺陷的自动定位与修复方法 |
CN115658367A (zh) * | 2022-11-10 | 2023-01-31 | 中国银行股份有限公司 | 一种基于程序错误码的异常提示方法和装置 |
CN116302998A (zh) * | 2023-03-01 | 2023-06-23 | 哈尔滨工业大学(深圳) | 多模态程序自动修复方法、***、设备及存储介质 |
CN116560890A (zh) * | 2023-05-15 | 2023-08-08 | 北京化工大学 | 一种结合词法和语法信息的自动程序修复方法 |
CN116991467A (zh) * | 2023-08-01 | 2023-11-03 | 苏州蜚语信息科技有限公司 | 一种基于大型语言模型的代码修复***及修复方法 |
CN117130593A (zh) * | 2023-08-14 | 2023-11-28 | 科大讯飞股份有限公司 | 代码处理方法、***和电子设备 |
CN116909532A (zh) * | 2023-09-12 | 2023-10-20 | 深圳须弥云图空间科技有限公司 | 一种代码生成与缺陷修复方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117555720A (zh) | 2024-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11003568B2 (en) | Error recovery | |
CN117555720B (zh) | 代码修复方法、装置、设备及介质 | |
Song et al. | A general software defect-proneness prediction framework | |
US9256517B1 (en) | Display of aggregated stack traces in a source code viewer | |
CN113157565B (zh) | 一种基于种子用例突变的反馈式js引擎模糊测试方法及装置 | |
CN103377128A (zh) | 用于Web应用的竞争检测的方法和*** | |
CN113568841A (zh) | 一种针对小程序的风险检测方法、装置及设备 | |
CN113590454A (zh) | 测试方法、装置、计算机设备和存储介质 | |
CN113590327A (zh) | 项目资源检测方法、装置、电子设备及存储介质 | |
Nguyen et al. | Recommending exception handling code | |
Du et al. | An empirical study of fault triggers in deep learning frameworks | |
CN114116455A (zh) | 一种面向开源基础组件库的集群化模糊测试方法及装置 | |
CN112464237A (zh) | 一种静态代码安全诊断方法及装置 | |
CN116775034A (zh) | 内核观测程序的构建方法、装置及设备 | |
CN113778454B (zh) | 一种人工智能实验平台的自动评测方法及*** | |
CN111666216B (zh) | 一种智能合约分析方法及装置 | |
CN111061642B (zh) | 一种基于用户数据的全自动竞赛数据处理***以及方法 | |
CN112650675A (zh) | 一种区块链的代码检测方法、装置和计算机设备 | |
CN110674839B (zh) | 异常用户识别方法、装置、存储介质及电子设备 | |
CN111190813B (zh) | 基于自动化测试的安卓应用网络行为信息提取***及方法 | |
KR101691083B1 (ko) | 토픽 모델과 다중 특성 기반의 버그 정정 개발자 추천 및 버그 심각성 예측 시스템 및 방법 | |
CN114510409A (zh) | 一种应用程序代码检测方法和计算机可读存储介质 | |
Mi et al. | Automatic detecting performance bugs in cloud computing systems via learning latency specification model | |
Cai et al. | Reinforcement learning application testing method based on multi-attribute fusion | |
CN113849785B (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 |