CN117992069A - 基于大语言模型的代码质控方法及装置 - Google Patents
基于大语言模型的代码质控方法及装置 Download PDFInfo
- Publication number
- CN117992069A CN117992069A CN202410407254.9A CN202410407254A CN117992069A CN 117992069 A CN117992069 A CN 117992069A CN 202410407254 A CN202410407254 A CN 202410407254A CN 117992069 A CN117992069 A CN 117992069A
- Authority
- CN
- China
- Prior art keywords
- current
- code
- file
- auditing
- language model
- 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.)
- Granted
Links
- 238000003908 quality control method Methods 0.000 title claims abstract description 67
- 230000007547 defect Effects 0.000 claims abstract description 107
- 238000012986 modification Methods 0.000 claims abstract description 78
- 230000004048 modification Effects 0.000 claims abstract description 78
- 238000012550 audit Methods 0.000 claims abstract description 77
- 238000012795 verification Methods 0.000 claims description 40
- 238000000034 method Methods 0.000 claims description 38
- 238000012552 review Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 4
- 238000007689 inspection Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 3
- 238000003339 best practice Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 239000003086 colorant Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012553 document review Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000009469 supplementation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
-
- 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/362—Software debugging
- G06F11/3628—Software debugging of optimised code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及基于大语言模型的代码质控方法及装置,包括:接收Webhook通知,响应于Webhook通知获取分支信息,判断分支信息是否符合设定的分支审查规则。在分支信息符合分支审查规则时,调用相应的API接口获取当前代码差异,遍历当前修改文件,判断当前修改文件是否符合设定的文件审查规则。在当前修改文件符合文件审查规则时,将当前代码差异与Prompt模板组合。将组装好的提示对话框通过API接口请求大语言模型,调用大语言模型对当前代码差异的审核建议格式校验,得到审核建议。通过正则表达式对审核建议进行拆分,遍历拆分的审核建议获取与审核建议正则匹配的缺陷信息,对当前代码差异的代码段修改。
Description
技术领域
本发明涉及代码审查技术领域,特别是涉及一种基于大语言模型的代码质控方法及装置。
背景技术
在现代软件开发过程中,代码审查(Code Review)已成为确保软件质量的主要手段之一。 通过这一手段,开发团队可以发现并修复代码中的错误、漏洞以及不规范等问题,从而提高软件的运行效率和稳定性。但是,传统的人工审查过程却面临许多挑战。例如,人工审查对审核人员提出了更高的要求,审核人员需要去了解相关代码的业务以及相关代码上下文,才能给出相关意见,这是一个非常耗时、繁琐的过程。另外,人工审查也可能受到个体差异的影响,不同的审查人员可能对同一段代码有不同的理解和标准。为了解决这些问题,自动化代码审查工具应运而生,这些工具可以自动分析代码,识别出潜在的代码问题和违法最佳实践的地方。
目前,现有的自动化代码审查方法主要通过代码提交人员将代码推送至版本控制系统(如gitlab、svn),版本控制系统会通过提前设置的Webhook(用户定义的HTTP回调)通知对应的持续集成工具(如Jenkis、Travis CI),持续集成工具时就会拉取对应的代码,运行代码审查插件然后把审查后的结果数据推送给自动化代码审查服务进行存储。最后,开发人员需要主动去对应的自动化代码审查的web管理页面去查看对应的审查报告。但是,该现有技术在进行代码审查中,通常采用静态代码分析方法,即针对指定文件进行结构、语法、潜在安全漏洞、最佳实践等方面的检查。尽管静态代码分析在发现潜在缺陷和提升代码质量方面功效显著,但由于缺乏对代码业务逻辑上下文的深刻理解以及较难模拟用户输入,所以在业务逻辑错误的识别上相对困难。另外,静态代码分析需要基于完整的代码文件进行,这也就造成了提交者难以准确地判断本次提交的代码Diff是否引入了新的问题。在缺陷管理方面,此流程需要开发者主动的查看相应的缺陷管理页面来获知此次提交的分析报告,但这种方式存在时效性难以保证的问题。开发者难以自定义需要审查的分支、自定义规则进行缺陷等级的分类,这在一定程度上增大了开发者快速确认和处理严重问题的难度。
综上所述,现有的自动化代码审查方法由于静态代码分析的限制,在一定程度上影响了业务缺陷的识别效果,且问题解决的时效性较差。
发明内容
基于此,有必要针对上述技术问题,提供一种能够保障业务缺陷的识别效果且问题解决的时效性较好的基于大语言模型的代码质控方法及装置。
本发明提供了一种基于大语言模型的代码质控方法,所述方法包括:
接收Webhook通知,并响应于所述Webhook通知获取相应的分支信息,以判断所述分支信息是否符合设定的分支审查规则;
在所述分支信息符合所述分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断所述当前修改文件是否符合设定的文件审查规则;
在所述当前修改文件符合所述文件审查规则时,将所述当前代码差异与Prompt模板进行组合,得到组装好的提示对话框;
将所述组装好的提示对话框通过所述API接口请求大语言模型,以调用所述大语言模型对所述当前代码差异的审核建议格式进行校验,得到校验通过的审核建议;
通过正则表达式对所述审核建议进行拆分,遍历拆分后的所述审核建议,以获取缺陷信息库中与所述审核建议正则匹配的缺陷信息,并基于所述缺陷信息以及审核建议,对所述当前代码差异对应的当前代码段进行质控修改。
在其中一个实施例中,所述接收Webhook通知,并响应于所述Webhook通知获取相应的分支信息,以判断所述分支信息是否符合设定的分支审查规则,包括:
获取所述设定的分支审查规则,并判断所述分支信息是否符合所述分支审查规则;若是,则
调用Codeup提供的所述API接口获取当前提交的所述当前代码差异;若否,则
忽略所述分支信息。
在其中一个实施例中,所述在所述分支信息符合所述分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断所述当前修改文件是否符合设定的文件审查规则,包括:
获取所述设定的文件审查规则,并基于所述当前代码差异获取所述当前代码差异对应的所有当前修改文件;
依次判断所述所有当前修改文件是否符合所述设定的文件审查规则;若是,则
将符合所述设定的文件审查规则的当前修改文件与所述Prompt模板进行组合。
在其中一个实施例中,所述在所述当前修改文件符合所述文件审查规则时,将所述当前代码差异与Prompt模板进行组合,得到组装好的提示对话框,之后还包括:
获取所述当前修改文件中的代码片段,并通过所述组装好的提示对话框根据所述审核建议生成所述代码片段对应的优化代码;
对所述当前修改文件中的代码进行审核,以识别出所述当前修改文件中的新增代码以及原始代码,并根据所述审核建议对所述新增代码进行审核,生成所述新增代码的优化代码。
在其中一个实施例中,所述将所述组装好的提示对话框通过所述API接口请求大语言模型,以调用所述大语言模型对所述当前代码差异的审核建议格式进行校验,得到校验通过的审核建议,包括:
调用所述API接口将所述组装好的提示对话框输入至所述大语言模型,并在所述大语言模型对所述提示对话框作出响应时获取所述审核建议格式,以对所述审核建议格式进行校验;
在所述审核建议格式符合设定格式时,获取所述校验通过的审核建议。
在其中一个实施例中,所述通过正则表达式对所述审核建议进行拆分,遍历拆分后的所述审核建议,以获取缺陷信息库中与所述审核建议正则匹配的缺陷信息,并基于所述缺陷信息以及审核建议,对所述当前代码差异对应的当前代码段进行质控修改,包括:
获取校验通过的多个审核建议,并通过正则表达式对每个审核建议进行拆分,得到拆分后的所述审核建议;
获取缺陷信息库,并遍历拆分后的所述审核建议,以获取所述缺陷信息库中与拆分后的每条审核建议正则匹配的缺陷信息,并按照设定的缺陷等级对不同的所述缺陷信息进行排序划分。
在其中一个实施例中,所述方法还包括:
将所述缺陷信息发送至聊天工具,并通过所述聊天工具基于所述缺陷信息生成相应的Webhook地址;
基于所述Webhook地址,向所述聊天工具发送MarkDown消息,以将基于所述缺陷信息的修改任务传达至用户。
本发明还提供了一种基于大语言模型的代码质控装置,所述装置包括:
分支审查模块,用于接收Webhook通知,并响应于所述Webhook通知获取相应的分支信息,以判断所述分支信息是否符合设定的分支审查规则;
文件审查模块,用于在所述分支信息符合所述分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断所述当前修改文件是否符合设定的文件审查规则;
模板组合模块,用于在所述当前修改文件符合所述文件审查规则时,将所述当前代码差异与Prompt模板进行组合,得到组装好的提示对话框;
模型处理模块,用于将所述组装好的提示对话框通过所述API接口请求大语言模型,以调用所述大语言模型对所述当前代码差异的审核建议格式进行校验,得到校验通过的审核建议;
代码质控模块,用于通过正则表达式对所述审核建议进行拆分,遍历拆分后的所述审核建议,以获取缺陷信息库中与所述审核建议正则匹配的缺陷信息,并基于所述缺陷信息以及审核建议,对所述当前代码差异对应的当前代码段进行质控修改。
本发明还提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上述任一种所述的基于大语言模型的代码质控方法。
本发明还提供了一种计算机存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述的基于大语言模型的代码质控方法。
本发明还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述的基于大语言模型的代码质控方法。
上述基于大语言模型的代码质控方法及装置,通过接收Webhook通知,并响应于Webhook通知获取相应的分支信息,以判断分支信息是否符合设定的分支审查规则。随后,在分支信息符合分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断当前修改文件是否符合设定的文件审查规则。然后,在当前修改文件符合文件审查规则时,将当前代码差异与Prompt模板进行组合,得到组装好的提示对话框。再将组装好的提示对话框通过API接口请求大语言模型,以调用大语言模型对当前代码差异的审核建议格式进行校验,得到校验通过的审核建议。最后,通过正则表达式对审核建议进行拆分,遍历拆分后的审核建议,以获取缺陷信息库中与审核建议正则匹配的缺陷信息,并基于缺陷信息以及审核建议,对当前代码差异对应的当前代码段进行质控修改。该方法通过利用自定义Prompt加大语言模型进行代码审查,增强了代码审查中对于业务缺陷的识别效果。另外,还对后续结果进行后置处理,按照自定义缺陷规则对审核建议进行缺陷信息检索,使开发人员能够即时、准确地去了解并处理相关缺陷。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的基于大语言模型的代码质控方法流程示意图之一;
图2为本发明提供的具体实施例中基于大语言模型的代码质控方法的代码质控整体流程示意图;
图3为本发明提供的基于大语言模型的代码质控方法流程示意图之二;
图4为本发明提供的基于大语言模型的代码质控方法流程示意图之三;
图5为本发明提供的基于大语言模型的代码质控方法流程示意图之四;
图6为本发明提供的基于大语言模型的代码质控方法流程示意图之五;
图7为本发明提供的基于大语言模型的代码质控方法流程示意图之六;
图8为本发明提供的基于大语言模型的代码质控方法流程示意图之七;
图9为本发明提供的基于大语言模型的代码质控装置结构示意图;
图10为本发明提供的计算机设备的内部结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1-图10描述本发明的基于大语言模型的代码质控方法及装置。
如图1所示,在一个实施例中,一种基于大语言模型的代码质控方法,包括以下步骤:
步骤S110,接收Webhook通知,并响应于Webhook通知获取相应的分支信息,以判断分支信息是否符合设定的分支审查规则。
具体的,代码审查服务终端接收Webhook通知,并响应于收到的Webhook通知获取相应的分支信息,以判断分支信息是否符合设定的分支审查规则。
结合图2所示,在具体的实施例中,本发明提供的基于大语言模型的代码质控方法,版本控制系统(这边以阿里云的Codeup为例)在对应的代码仓库推送代码到云端时,通过提前设置的Webhook,通过http协议调用自动化代码审查服务。代码审查服务在接收到相应的Webhook通知以后,首先通过该Webhook通知获取对应的分支信息,通过开发者提前设置的分支审查规则,判断分支信息是否符合该分支审查规则。
步骤S120,在分支信息符合分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断当前修改文件是否符合设定的文件审查规则。
具体的,代码审查服务终端在分支信息符合分支审查规则时,调用相应的API接口获取当前代码差异,即本次提交的代码diff,并遍历当前修改文件,以判断当前修改文件是否符合设定的文件审查规则。
结合图2所示,在具体的实施例中,本发明提供的基于大语言模型的代码质控方法,当分支信息符合开发者提前设定的分支审查规则时,调用Codeup提供的API接口获取到当前提交的代码diff(代码差异)。然后,遍历所有本次修改的文件,依次判断本次修改文件是否符合开发者设置的文件审查规则。
步骤S130,在当前修改文件符合文件审查规则时,将当前代码差异与Prompt模板进行组合,得到组装好的提示对话框。
具体的,代码审查服务终端在当前修改文件符合设定的文件审查规则时,将当前代码差异与预先设定的Prompt模板进行组合,得到组装好的提示对话框。
结合图2所示,在具体的实施例中,本发明提供的基于大语言模型的代码质控方法,如果本次修改文件符合设定的文件审查规则时,则将该次修改文件的代码diff和预先设定的Prompt模板进行组装。例如,Prompt模板为“作为软件开发助理,您的任务是根据提供的代码片段,帮我审核该段代码最后根据你所给的审核建议给出相应的优化代码。\n该段代码所在的项目背景为:该项目是由golang语言编写的在线教育应用后端服务\n审核代码时需要遵从以下几点:\n\t1.请先识别哪部分代码是新增代码哪部分是原有代码,新增代码前面会有'+'符号,例如:'\n+\twordId2WordType= map[int]int{}';\n\t2.只审核新增代码即可,原有代码只是对新增代码的补充不进行单独审核。如果某个函数或者方法中不存在新增代码,忽略对该审核;\n\t3.请充分利用原有代码,增加对新增代码的了解,提升审核建议的有效性 \n回复的审核建议需要遵从以下几点:\n\t1.请给出最重要的1~4条审核建议即可;\n\t2.请避免提出一些不准确的审核建议;\n\t3.给出的审核建议尽量多方位多角度,避免重复;\n\t4.请尽量在每条审核建议后面给出相应的优化代码,帮助开发人员更好的定位问题;\n\t5.给出的审核建议以及优化的代码(代码需要用markdown的代码块包裹并折叠)请务必按照如下格式返回,例如:'\n建议:\n1.在**方法中**。\n优化的代码如下:\n<details>\n<summary>点击查看重写后代码</summary>\n```fmt.Println(\"hello word\")```\n</details>' \n2.在**方法中**。\n优化的代码如下:\n<details>\n<summary>点击查看重写后代码</summary>\n```fmt.Println(\"hello word\")```\n</details>' ; \n\n以下为代码片段:\n*”。
步骤S140,将组装好的提示对话框通过API接口请求大语言模型,以调用大语言模型对当前代码差异的审核建议格式进行校验,得到校验通过的审核建议。
具体的,代码审查服务终端将组装好的提示对话框通过API接口请求大语言模型,以调用大语言模型对当前代码差异的审核建议格式进行校验,得到校验通过的审核建议。
结合图2所示,在具体的实施例中,本发明提供的基于大语言模型的代码质控方法,将组装好的Prompt通过API接口请求大语言模型,得到响应以后,首先会对响应的审核建议格式进行校验,在得到合规的审核建议以后,将每一条审核建议通过正则方式拆分开,然后遍历审核建议,以查看该条审核建议与预先设置的缺陷信息库中哪条缺陷设定的正则匹配,如果匹配则按照该条缺陷等级设置不同的颜色,比如:“\n\n3. 可以将两次添加操作日志的代码抽取到一个公共方法中,避免<font color='#FF0000'>**代码重复**</font>性。”(严重:红色、中度:黄色、轻度:绿色)。
步骤S150,通过正则表达式对审核建议进行拆分,遍历拆分后的审核建议,以获取缺陷信息库中与审核建议正则匹配的缺陷信息,并基于缺陷信息以及审核建议,对当前代码差异对应的当前代码段进行质控修改。
具体的,代码审查服务终端通过正则表达式对审核建议进行拆分,随后遍历拆分后的审核建议,以获取缺陷信息库中与审核建议正则匹配的缺陷信息,并基于匹配的缺陷信息以及审核建议,对当前代码差异对应的当前代码段进行质控修改。
结合图2所示,在具体的实施例中,本发明提供的基于大语言模型的代码质控方法,将先前得到的缺陷信息以及审核建议推送至即时聊天工具,如钉钉机器人,通过钉钉机器人生成的Webhook地址,向钉钉机器人推送一条MarkDown消息,那么钉钉机器人便会在所在的群中发送一条相应的消息。钉钉消息会“@”对应的开发人员,开发人员在收到钉钉消息以后便可以针对审核意见对代码进行修改,从而保证代码的质量。
在本实施例中,针对现有的代码审查方案存在的无法识别代码业务逻辑方面缺陷的问题,通过利用自定义Prompt加大语言模型进行代码审查,增强了代码审查中对于业务缺陷的识别效果。而且还对后续结果进行后置处理,按照自定义缺陷规则对审核建议进行缺陷等级分类,并将最后处理过的审查意见第一时间推送至公司内部的即时聊天工具上从而触达相关开发人员,使开发人员能够即时、准确地去了解并处理相关缺陷。
上述基于大语言模型的代码质控方法,通过接收Webhook通知,并响应于Webhook通知获取相应的分支信息,以判断分支信息是否符合设定的分支审查规则。随后,在分支信息符合分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断当前修改文件是否符合设定的文件审查规则。然后,在当前修改文件符合文件审查规则时,将当前代码差异与Prompt模板进行组合,得到组装好的提示对话框。再将组装好的提示对话框通过API接口请求大语言模型,以调用大语言模型对当前代码差异的审核建议格式进行校验,得到校验通过的审核建议。最后,通过正则表达式对审核建议进行拆分,遍历拆分后的审核建议,以获取缺陷信息库中与审核建议正则匹配的缺陷信息,并基于缺陷信息以及审核建议,对当前代码差异对应的当前代码段进行质控修改。该方法通过利用自定义Prompt加大语言模型进行代码审查,增强了代码审查中对于业务缺陷的识别效果。另外,还对后续结果进行后置处理,按照自定义缺陷规则对审核建议进行缺陷信息检索,使开发人员能够即时、准确地去了解并处理相关缺陷。
如图3所示,在一个实施例中,本发明提供的基于大语言模型的代码质控方法,接收Webhook通知,并响应于Webhook通知获取相应的分支信息,以判断分支信息是否符合设定的分支审查规则,具体包括以下步骤:
步骤S112,获取设定的分支审查规则,并判断分支信息是否符合分支审查规则。
具体的,代码审查服务终端获取设定的分支审查规则,并判断通过Webhook通知获取的分支信息是否符合分支审查规则。
步骤S114,调用Codeup提供的API接口获取当前提交的当前代码差异。
具体的,当步骤S112中的判断结果为通过Webhook通知获取的分支信息符合分支审查规则时,代码审查服务终端会调用Codeup提供的API接口获取当前提交的当前代码差异。
步骤S116,忽略分支信息。
具体的,当步骤S112中的判断结果为通过Webhook通知获取的分支信息不符合分支审查规则时,代码审查服务终端则会忽略相应的分支信息。
如图4所示,在一个实施例中,本发明提供的基于大语言模型的代码质控方法,在分支信息符合分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断当前修改文件是否符合设定的文件审查规则,具体包括以下步骤:
步骤S122,获取设定的文件审查规则,并基于当前代码差异获取当前代码差异对应的所有当前修改文件。
具体的,代码审查服务终端获取开发者预先设定的文件审查规则,并基于当前代码差异获取当前代码差异对应的所有当前修改文件。
步骤S124,依次判断所有当前修改文件是否符合设定的文件审查规则。
具体的,代码审查服务终端依次判断所有当前修改文件是否符合设定的文件审查规则。
步骤S126,将符合设定的文件审查规则的当前修改文件与Prompt模板进行组合。
具体的,代码审查服务终端基于步骤S124中的判断结果将符合设定的文件审查规则的当前修改文件与Prompt模板进行组合。
如图5所示,在一个实施例中,本发明提供的基于大语言模型的代码质控方法,在当前修改文件符合文件审查规则时,将当前代码差异与Prompt模板进行组合,得到组装好的提示对话框,之后还包括以下步骤:
步骤S510,获取当前修改文件中的代码片段,并通过组装好的提示对话框根据审核建议生成代码片段对应的优化代码。
具体的,代码审查服务终端获取当前修改文件中的代码片段,并通过组装好的提示对话框根据审核建议生成代码片段对应的优化代码。
步骤S520,对当前修改文件中的代码进行审核,以识别出当前修改文件中的新增代码以及原始代码,并根据审核建议对新增代码进行审核,生成新增代码的优化代码。
具体的,代码审查服务终端对当前修改文件中的代码进行审核,以识别出当前修改文件中的新增代码以及原始代码,并根据审核建议对新增代码进行审核,生成新增代码的优化代码。
如图6所示,在一个实施例中,本发明提供的基于大语言模型的代码质控方法,将组装好的提示对话框通过API接口请求大语言模型,以调用大语言模型对当前代码差异的审核建议格式进行校验,得到校验通过的审核建议,具体包括以下步骤:
步骤S142,调用API接口将组装好的提示对话框输入至大语言模型,并在大语言模型对提示对话框作出响应时获取审核建议格式,以对审核建议格式进行校验。
具体的,代码审查服务终端调用API接口将组装好的提示对话框输入至大语言模型,并在大语言模型对提示对话框作出响应时获取审核建议格式,以对审核建议格式进行校验。
步骤S144,在审核建议格式符合设定格式时,获取校验通过的审核建议。
如图7所示,在一个实施例中,本发明提供的基于大语言模型的代码质控方法,通过正则表达式对审核建议进行拆分,遍历拆分后的审核建议,以获取缺陷信息库中与审核建议正则匹配的缺陷信息,并基于缺陷信息以及审核建议,对当前代码差异对应的当前代码段进行质控修改,具体包括以下步骤:
步骤S152,获取校验通过的多个审核建议,并通过正则表达式对每个审核建议进行拆分,得到拆分后的审核建议。
具体的,代码审查服务终端获取校验通过的多个审核建议,并通过正则表达式对每个审核建议进行拆分,得到拆分后的审核建议。
步骤S154,获取缺陷信息库,并遍历拆分后的审核建议,以获取缺陷信息库中与拆分后的每条审核建议正则匹配的缺陷信息,并按照设定的缺陷等级对不同的缺陷信息进行排序划分。
具体的,代码审查服务终端获取缺陷信息库,并遍历拆分后的审核建议,以获取缺陷信息库中与拆分后的每条审核建议正则匹配的缺陷信息,随后按照设定的缺陷等级对不同的缺陷信息进行排序划分。
如图8所示,在一个实施例中,本发明提供的基于大语言模型的代码质控方法,还包括以下步骤:
步骤S810,将缺陷信息发送至聊天工具,并通过聊天工具基于缺陷信息生成相应的Webhook地址。
具体的,代码审查服务终端将缺陷信息发送至聊天工具,并通过聊天工具基于缺陷信息生成相应的Webhook地址。
步骤S820,基于Webhook地址,向聊天工具发送MarkDown消息,以将基于缺陷信息的修改任务传达至用户。
具体的,代码审查服务终端基于Webhook地址,向聊天工具发送MarkDown消息,以将基于缺陷信息的修改任务传达至开发者用户。
下面对本发明提供的基于大语言模型的代码质控装置进行描述,下文描述的基于大语言模型的代码质控装置与上文描述的基于大语言模型的代码质控方法可相互对应参照。
如图9所示,在一个实施例中,一种基于大语言模型的代码质控装置,包括分支审查模块910、文件审查模块920、模板组合模块930、模型处理模块940以及代码质控模块950。
分支审查模块910用于接收Webhook通知,并响应于Webhook通知获取相应的分支信息,以判断分支信息是否符合设定的分支审查规则。
文件审查模块920用于在分支信息符合分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断当前修改文件是否符合设定的文件审查规则。
模板组合模块930用于在当前修改文件符合文件审查规则时,将当前代码差异与Prompt模板进行组合,得到组装好的提示对话框。
模型处理模块940用于将组装好的提示对话框通过API接口请求大语言模型,以调用大语言模型对当前代码差异的审核建议格式进行校验,得到校验通过的审核建议。
代码质控模块950用于通过正则表达式对审核建议进行拆分,遍历拆分后的审核建议,以获取缺陷信息库中与审核建议正则匹配的缺陷信息,并基于缺陷信息以及审核建议,对当前代码差异对应的当前代码段进行质控修改。
在本实施例中,本发明提供的基于大语言模型的代码质控装置,分支审查模块具体用于:
获取设定的分支审查规则,并判断分支信息是否符合分支审查规则;若是,则
调用Codeup提供的API接口获取当前提交的当前代码差异;若否,则
忽略分支信息。
在本实施例中,本发明提供的基于大语言模型的代码质控装置,文件质控模块具体用于:
获取设定的文件审查规则,并基于当前代码差异获取当前代码差异对应的所有当前修改文件。
依次判断所有当前修改文件是否符合设定的文件审查规则。若是,则
将符合设定的文件审查规则的当前修改文件与Prompt模板进行组合。
在本实施例中,本发明提供的基于大语言模型的代码质控装置,还包括优化代码生成模块,用于:
获取当前修改文件中的代码片段,并通过组装好的提示对话框根据审核建议生成代码片段对应的优化代码。
对当前修改文件中的代码进行审核,以识别出当前修改文件中的新增代码以及原始代码,并根据审核建议对新增代码进行审核,生成新增代码的优化代码。
在本实施例中,本发明提供的基于大语言模型的代码质控装置,模型处理模块具体用于:
调用API接口将组装好的提示对话框输入至大语言模型,并在大语言模型对提示对话框作出响应时获取审核建议格式,以对审核建议格式进行校验。
在审核建议格式符合设定格式时,获取校验通过的审核建议。
在本实施例中,本发明提供的基于大语言模型的代码质控装置,代码质控模块具体用于:
获取校验通过的多个审核建议,并通过正则表达式对每个审核建议进行拆分,得到拆分后的审核建议。
获取缺陷信息库,并遍历拆分后的审核建议,以获取缺陷信息库中与拆分后的每条审核建议正则匹配的缺陷信息,并按照设定的缺陷等级对不同的缺陷信息进行排序划分。
在本实施例中,本发明提供的基于大语言模型的代码质控装置,还包括修改任务传达模块,用于:
将缺陷信息发送至聊天工具,并通过聊天工具基于缺陷信息生成相应的Webhook地址。
基于Webhook地址,向聊天工具发送MarkDown消息,以将基于缺陷信息的修改任务传达至用户。
图10示例了一种电子设备的实体结构示意图,该电子设备可以是智能终端,其内部结构图可以如图10所示。该电子设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现基于大语言模型的代码质控方法,该方法包括:
接收Webhook通知,并响应于Webhook通知获取相应的分支信息,以判断分支信息是否符合设定的分支审查规则;
在分支信息符合分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断当前修改文件是否符合设定的文件审查规则;
在当前修改文件符合文件审查规则时,将当前代码差异与Prompt模板进行组合,得到组装好的提示对话框;
将组装好的提示对话框通过API接口请求大语言模型,以调用大语言模型对当前代码差异的审核建议格式进行校验,得到校验通过的审核建议;
通过正则表达式对审核建议进行拆分,遍历拆分后的审核建议,以获取缺陷信息库中与审核建议正则匹配的缺陷信息,并基于缺陷信息以及审核建议,对当前代码差异对应的当前代码段进行质控修改。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
另一方面,本发明还提供了一种计算机存储介质,存储有计算机程序,计算机程序被处理器执行时实现基于大语言模型的代码质控方法,该方法包括:
接收Webhook通知,并响应于Webhook通知获取相应的分支信息,以判断分支信息是否符合设定的分支审查规则;
在分支信息符合分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断当前修改文件是否符合设定的文件审查规则;
在当前修改文件符合文件审查规则时,将当前代码差异与Prompt模板进行组合,得到组装好的提示对话框;
将组装好的提示对话框通过API接口请求大语言模型,以调用大语言模型对当前代码差异的审核建议格式进行校验,得到校验通过的审核建议;
通过正则表达式对审核建议进行拆分,遍历拆分后的审核建议,以获取缺陷信息库中与审核建议正则匹配的缺陷信息,并基于缺陷信息以及审核建议,对当前代码差异对应的当前代码段进行质控修改。
又一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令时实现基于大语言模型的代码质控方法,该方法包括:
接收Webhook通知,并响应于Webhook通知获取相应的分支信息,以判断分支信息是否符合设定的分支审查规则;
在分支信息符合分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断当前修改文件是否符合设定的文件审查规则;
在当前修改文件符合文件审查规则时,将当前代码差异与Prompt模板进行组合,得到组装好的提示对话框;
将组装好的提示对话框通过API接口请求大语言模型,以调用大语言模型对当前代码差异的审核建议格式进行校验,得到校验通过的审核建议;
通过正则表达式对审核建议进行拆分,遍历拆分后的审核建议,以获取缺陷信息库中与审核建议正则匹配的缺陷信息,并基于缺陷信息以及审核建议,对当前代码差异对应的当前代码段进行质控修改。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。
作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于大语言模型的代码质控方法,其特征在于,所述方法包括:
接收Webhook通知,并响应于所述Webhook通知获取相应的分支信息,以判断所述分支信息是否符合设定的分支审查规则;
在所述分支信息符合所述分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断所述当前修改文件是否符合设定的文件审查规则;
在所述当前修改文件符合所述文件审查规则时,将所述当前代码差异与Prompt模板进行组合,得到组装好的提示对话框;
将所述组装好的提示对话框通过所述API接口请求大语言模型,以调用所述大语言模型对所述当前代码差异的审核建议格式进行校验,得到校验通过的审核建议;
通过正则表达式对所述审核建议进行拆分,遍历拆分后的所述审核建议,以获取缺陷信息库中与所述审核建议正则匹配的缺陷信息,并基于所述缺陷信息以及审核建议,对所述当前代码差异对应的当前代码段进行质控修改。
2.根据权利要求1所述的基于大语言模型的代码质控方法,其特征在于,所述接收Webhook通知,并响应于所述Webhook通知获取相应的分支信息,以判断所述分支信息是否符合设定的分支审查规则,包括:
获取所述设定的分支审查规则,并判断所述分支信息是否符合所述分支审查规则;若是,则
调用Codeup提供的所述API接口获取当前提交的所述当前代码差异;若否,则
忽略所述分支信息。
3.根据权利要求2所述的基于大语言模型的代码质控方法,其特征在于,所述在所述分支信息符合所述分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断所述当前修改文件是否符合设定的文件审查规则,包括:
获取所述设定的文件审查规则,并基于所述当前代码差异获取所述当前代码差异对应的所有当前修改文件;
依次判断所述所有当前修改文件是否符合所述设定的文件审查规则;若是,则
将符合所述设定的文件审查规则的当前修改文件与所述Prompt模板进行组合。
4.根据权利要求1所述的基于大语言模型的代码质控方法,其特征在于,所述在所述当前修改文件符合所述文件审查规则时,将所述当前代码差异与Prompt模板进行组合,得到组装好的提示对话框,之后还包括:
获取所述当前修改文件中的代码片段,并通过所述组装好的提示对话框根据所述审核建议生成所述代码片段对应的优化代码;
对所述当前修改文件中的代码进行审核,以识别出所述当前修改文件中的新增代码以及原始代码,并根据所述审核建议对所述新增代码进行审核,生成所述新增代码的优化代码。
5.根据权利要求1所述的基于大语言模型的代码质控方法,其特征在于,所述将所述组装好的提示对话框通过所述API接口请求大语言模型,以调用所述大语言模型对所述当前代码差异的审核建议格式进行校验,得到校验通过的审核建议,包括:
调用所述API接口将所述组装好的提示对话框输入至所述大语言模型,并在所述大语言模型对所述提示对话框作出响应时获取所述审核建议格式,以对所述审核建议格式进行校验;
在所述审核建议格式符合设定格式时,获取所述校验通过的审核建议。
6.根据权利要求5所述的基于大语言模型的代码质控方法,其特征在于,所述通过正则表达式对所述审核建议进行拆分,遍历拆分后的所述审核建议,以获取缺陷信息库中与所述审核建议正则匹配的缺陷信息,并基于所述缺陷信息以及审核建议,对所述当前代码差异对应的当前代码段进行质控修改,包括:
获取校验通过的多个审核建议,并通过正则表达式对每个审核建议进行拆分,得到拆分后的所述审核建议;
获取缺陷信息库,并遍历拆分后的所述审核建议,以获取所述缺陷信息库中与拆分后的每条审核建议正则匹配的缺陷信息,并按照设定的缺陷等级对不同的所述缺陷信息进行排序划分。
7.根据权利要求1至6任一项所述的基于大语言模型的代码质控方法,其特征在于,所述方法还包括:
将所述缺陷信息发送至聊天工具,并通过所述聊天工具基于所述缺陷信息生成相应的Webhook地址;
基于所述Webhook地址,向所述聊天工具发送MarkDown消息,以将基于所述缺陷信息的修改任务传达至用户。
8.一种基于大语言模型的代码质控装置,其特征在于,所述装置包括:
分支审查模块,用于接收Webhook通知,并响应于所述Webhook通知获取相应的分支信息,以判断所述分支信息是否符合设定的分支审查规则;
文件审查模块,用于在所述分支信息符合所述分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断所述当前修改文件是否符合设定的文件审查规则;
模板组合模块,用于在所述当前修改文件符合所述文件审查规则时,将所述当前代码差异与Prompt模板进行组合,得到组装好的提示对话框;
模型处理模块,用于将所述组装好的提示对话框通过所述API接口请求大语言模型,以调用所述大语言模型对所述当前代码差异的审核建议格式进行校验,得到校验通过的审核建议;
代码质控模块,用于通过正则表达式对所述审核建议进行拆分,遍历拆分后的所述审核建议,以获取缺陷信息库中与所述审核建议正则匹配的缺陷信息,并基于所述缺陷信息以及审核建议,对所述当前代码差异对应的当前代码段进行质控修改。
9.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410407254.9A CN117992069B (zh) | 2024-04-07 | 2024-04-07 | 基于大语言模型的代码质控方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410407254.9A CN117992069B (zh) | 2024-04-07 | 2024-04-07 | 基于大语言模型的代码质控方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117992069A true CN117992069A (zh) | 2024-05-07 |
CN117992069B CN117992069B (zh) | 2024-06-21 |
Family
ID=90901498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410407254.9A Active CN117992069B (zh) | 2024-04-07 | 2024-04-07 | 基于大语言模型的代码质控方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117992069B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090158218A1 (en) * | 2007-05-04 | 2009-06-18 | Lockheed Martin Corporation | Structured model navigator |
CN104793952A (zh) * | 2015-04-27 | 2015-07-22 | 柳州市一呼百应科技有限公司 | 一种开发客户端软件的方法 |
CN109542769A (zh) * | 2018-10-25 | 2019-03-29 | 武汉精立电子技术有限公司 | 一种持续集成的自动化测试方法 |
CN109783128A (zh) * | 2018-12-13 | 2019-05-21 | 平安普惠企业管理有限公司 | 代码改动通知方法、设备、存储介质及装置 |
CN110297656A (zh) * | 2019-05-23 | 2019-10-01 | 重庆金融资产交易所有限责任公司 | 基于配置模型评审代码的方法、装置及计算机设备 |
CN117033571A (zh) * | 2023-06-27 | 2023-11-10 | 山东新一代信息产业技术研究院有限公司 | 知识问答系统构建方法及系统 |
CN117523569A (zh) * | 2023-11-07 | 2024-02-06 | 欧冶工业品股份有限公司 | 基于图像识别和大数据的企业信息审核方法和系统 |
CN117611105A (zh) * | 2024-01-10 | 2024-02-27 | 四川云知声智能科技有限公司 | 一种基于大模型商保审核医保三目对码的方法及系统 |
-
2024
- 2024-04-07 CN CN202410407254.9A patent/CN117992069B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090158218A1 (en) * | 2007-05-04 | 2009-06-18 | Lockheed Martin Corporation | Structured model navigator |
CN104793952A (zh) * | 2015-04-27 | 2015-07-22 | 柳州市一呼百应科技有限公司 | 一种开发客户端软件的方法 |
CN109542769A (zh) * | 2018-10-25 | 2019-03-29 | 武汉精立电子技术有限公司 | 一种持续集成的自动化测试方法 |
CN109783128A (zh) * | 2018-12-13 | 2019-05-21 | 平安普惠企业管理有限公司 | 代码改动通知方法、设备、存储介质及装置 |
CN110297656A (zh) * | 2019-05-23 | 2019-10-01 | 重庆金融资产交易所有限责任公司 | 基于配置模型评审代码的方法、装置及计算机设备 |
CN117033571A (zh) * | 2023-06-27 | 2023-11-10 | 山东新一代信息产业技术研究院有限公司 | 知识问答系统构建方法及系统 |
CN117523569A (zh) * | 2023-11-07 | 2024-02-06 | 欧冶工业品股份有限公司 | 基于图像识别和大数据的企业信息审核方法和系统 |
CN117611105A (zh) * | 2024-01-10 | 2024-02-27 | 四川云知声智能科技有限公司 | 一种基于大模型商保审核医保三目对码的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN117992069B (zh) | 2024-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109800258B (zh) | 数据文件部署方法、装置、计算机设备及存储介质 | |
WO2019100576A1 (zh) | 自动化测试管理方法、装置、终端设备及存储介质 | |
CN112052172B (zh) | 第三方通道的快速测试方法、装置和电子设备 | |
CN110297656B (zh) | 基于配置模型评审代码的方法、装置及计算机设备 | |
CN112416778B (zh) | 测试用例推荐方法、装置和电子设备 | |
CN108073517B (zh) | 第三方软件测试的管理方法、装置、介质和计算机设备 | |
CN112559364B (zh) | 一种测试用例生成方法、装置、计算机设备和存储介质 | |
US20210216903A1 (en) | Intelligent Service Test Engine | |
KR20200074715A (ko) | 검증용 주석 처리 작업을 이용한 실전용 주석 처리 작업의 검증 방법 및 장치 | |
CN113220588A (zh) | 一种数据处理的自动化测试方法、装置、设备及存储介质 | |
CN111190807A (zh) | 一种埋点测试方法及设备 | |
CN113886262A (zh) | 软件自动化测试方法、装置、计算机设备和存储介质 | |
CN112511384A (zh) | 流量数据处理方法、装置、计算机设备和存储介质 | |
CN115982012A (zh) | 一种接口管理能力成熟度的评估模型及方法 | |
CN112860873B (zh) | 智能应答方法、装置及存储介质 | |
CN117992069B (zh) | 基于大语言模型的代码质控方法及装置 | |
CN116431522A (zh) | 一种低代码对象存储网关自动化测试方法及系统 | |
CN111949537A (zh) | 接口的测试方法、装置、设备和介质 | |
CN116415258A (zh) | 漏洞检测方法、装置、设备、介质及程序产品 | |
CN111124937A (zh) | 基于插桩函数辅助提高生成测试用例效率的方法及系统 | |
CN115878448A (zh) | 数据库测试方法、分布式数据库、存储介质 | |
CN111444538A (zh) | 一种信息脱敏方法、装置、电子设备及存储介质 | |
CN115374066B (zh) | 远程可视化系统与远程可视化方法 | |
CN117724986B (zh) | 一种在用例执行中自动操作kafka的方法及装置 | |
CN116302908A (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 |