System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及代码审查,特别是涉及一种基于大语言模型的代码质控方法及装置。
技术介绍
1、在现代软件开发过程中,代码审查(code review)已成为确保软件质量的主要手段之一。 通过这一手段,开发团队可以发现并修复代码中的错误、漏洞以及不规范等问题,从而提高软件的运行效率和稳定性。但是,传统的人工审查过程却面临许多挑战。例如,人工审查对审核人员提出了更高的要求,审核人员需要去了解相关代码的业务以及相关代码上下文,才能给出相关意见,这是一个非常耗时、繁琐的过程。另外,人工审查也可能受到个体差异的影响,不同的审查人员可能对同一段代码有不同的理解和标准。为了解决这些问题,自动化代码审查工具应运而生,这些工具可以自动分析代码,识别出潜在的代码问题和违法最佳实践的地方。
2、目前,现有的自动化代码审查方法主要通过代码提交人员将代码推送至版本控制系统(如gitlab、svn),版本控制系统会通过提前设置的webhook(用户定义的http回调)通知对应的持续集成工具(如jenkis、travis ci),持续集成工具时就会拉取对应的代码,运行代码审查插件然后把审查后的结果数据推送给自动化代码审查服务进行存储。最后,开发人员需要主动去对应的自动化代码审查的web管理页面去查看对应的审查报告。但是,该现有技术在进行代码审查中,通常采用静态代码分析方法,即针对指定文件进行结构、语法、潜在安全漏洞、最佳实践等方面的检查。尽管静态代码分析在发现潜在缺陷和提升代码质量方面功效显著,但由于缺乏对代码业务逻辑上下文的深刻理解以及较难模拟用户
3、综上所述,现有的自动化代码审查方法由于静态代码分析的限制,在一定程度上影响了业务缺陷的识别效果,且问题解决的时效性较差。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够保障业务缺陷的识别效果且问题解决的时效性较好的基于大语言模型的代码质控方法及装置。
2、本专利技术提供了一种基于大语言模型的代码质控方法,所述方法包括:
3、接收webhook通知,并响应于所述webhook通知获取相应的分支信息,以判断所述分支信息是否符合设定的分支审查规则;
4、在所述分支信息符合所述分支审查规则时,调用相应的api接口获取当前代码差异,并遍历当前修改文件,以判断所述当前修改文件是否符合设定的文件审查规则;
5、在所述当前修改文件符合所述文件审查规则时,将所述当前代码差异与prompt模板进行组合,得到组装好的提示对话框;
6、将所述组装好的提示对话框通过所述api接口请求大语言模型,以调用所述大语言模型对所述当前代码差异的审核建议格式进行校验,得到校验通过的审核建议;
7、通过正则表达式对所述审核建议进行拆分,遍历拆分后的所述审核建议,以获取缺陷信息库中与所述审核建议正则匹配的缺陷信息,并基于所述缺陷信息以及审核建议,对所述当前代码差异对应的当前代码段进行质控修改。
8、在其中一个实施例中,所述接收webhook通知,并响应于所述webhook通知获取相应的分支信息,以判断所述分支信息是否符合设定的分支审查规则,包括:
9、获取所述设定的分支审查规则,并判断所述分支信息是否符合所述分支审查规则;若是,则
10、调用codeup提供的所述api接口获取当前提交的所述当前代码差异;若否,则
11、忽略所述分支信息。
12、在其中一个实施例中,所述在所述分支信息符合所述分支审查规则时,调用相应的api接口获取当前代码差异,并遍历当前修改文件,以判断所述当前修改文件是否符合设定的文件审查规则,包括:
13、获取所述设定的文件审查规则,并基于所述当前代码差异获取所述当前代码差异对应的所有当前修改文件;
14、依次判断所述所有当前修改文件是否符合所述设定的文件审查规则;若是,则
15、将符合所述设定的文件审查规则的当前修改文件与所述prompt模板进行组合。
16、在其中一个实施例中,所述在所述当前修改文件符合所述文件审查规则时,将所述当前代码差异与prompt模板进行组合,得到组装好的提示对话框,之后还包括:
17、获取所述当前修改文件中的代码片段,并通过所述组装好的提示对话框根据所述审核建议生成所述代码片段对应的优化代码;
18、对所述当前修改文件中的代码进行审核,以识别出所述当前修改文件中的新增代码以及原始代码,并根据所述审核建议对所述新增代码进行审核,生成所述新增代码的优化代码。
19、在其中一个实施例中,所述将所述组装好的提示对话框通过所述api接口请求大语言模型,以调用所述大语言模型对所述当前代码差异的审核建议格式进行校验,得到校验通过的审核建议,包括:
20、调用所述api接口将所述组装好的提示对话框输入至所述大语言模型,并在所述大语言模型对所述提示对话框作出响应时获取所述审核建议格式,以对所述审核建议格式进行校验;
21、在所述审核建议格式符合设定格式时,获取所述校验通过的审核建议。
22、在其中一个实施例中,所述通过正则表达式对所述审核建议进行拆分,遍历拆分后的所述审核建议,以获取缺陷信息库中与所述审核建议正则匹配的缺陷信息,并基于所述缺陷信息以及审核建议,对所述当前代码差异对应的当前代码段进行质控修改,包括:
23、获取校验通过的多个审核建议,并通过正则表达式对每个审核建议进行拆分,得到拆分后的所述审核建议;
24、获取缺陷信息库,并遍历拆分后的所述审核建议,以获取所述缺陷信息库中与拆分后的每条审核建议正则匹配的缺陷信息,并按照设定的缺陷等级对不同的所述缺陷信息进行排序划分。
25、在其中一个实施例中,所述方法还包括:
26、将所述缺陷信息发送至聊天工具,并通过所述聊天工具基于所述缺陷信息生成相应的webhook地址;
27、基于所述webhook地址,向所述聊天工具发送markdown消息,以将基于所述缺陷信息的修改任务传达至用户。
28、本专利技术还提供了一种基于大语言模型的代码质控装置,所述装置包括:
29、分支审查模块,用于接收webhook通知,并响应于所述webhook通知获取相应的分支信息,以判断所述分支信息是否符合设定的分支审查规则;
30、文件审查模块,用于在所述分支信息符合所述分支审查规则时,调用相应的api接口获本文档来自技高网...
【技术保护点】
1.一种基于大语言模型的代码质控方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于大语言模型的代码质控方法,其特征在于,所述接收Webhook通知,并响应于所述Webhook通知获取相应的分支信息,以判断所述分支信息是否符合设定的分支审查规则,包括:
3.根据权利要求2所述的基于大语言模型的代码质控方法,其特征在于,所述在所述分支信息符合所述分支审查规则时,调用相应的API接口获取当前代码差异,并遍历当前修改文件,以判断所述当前修改文件是否符合设定的文件审查规则,包括:
4.根据权利要求1所述的基于大语言模型的代码质控方法,其特征在于,所述在所述当前修改文件符合所述文件审查规则时,将所述当前代码差异与Prompt模板进行组合,得到组装好的提示对话框,之后还包括:
5.根据权利要求1所述的基于大语言模型的代码质控方法,其特征在于,所述将所述组装好的提示对话框通过所述API接口请求大语言模型,以调用所述大语言模型对所述当前代码差异的审核建议格式进行校验,得到校验通过的审核建议,包括:
6.根据权利要求5所述的基于
7.根据权利要求1至6任一项所述的基于大语言模型的代码质控方法,其特征在于,所述方法还包括:
8.一种基于大语言模型的代码质控装置,其特征在于,所述装置包括:
9.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
...【技术特征摘要】
1.一种基于大语言模型的代码质控方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于大语言模型的代码质控方法,其特征在于,所述接收webhook通知,并响应于所述webhook通知获取相应的分支信息,以判断所述分支信息是否符合设定的分支审查规则,包括:
3.根据权利要求2所述的基于大语言模型的代码质控方法,其特征在于,所述在所述分支信息符合所述分支审查规则时,调用相应的api接口获取当前代码差异,并遍历当前修改文件,以判断所述当前修改文件是否符合设定的文件审查规则,包括:
4.根据权利要求1所述的基于大语言模型的代码质控方法,其特征在于,所述在所述当前修改文件符合所述文件审查规则时,将所述当前代码差异与prompt模板进行组合,得到组装好的提示对话框,之后还包括:
5.根据权利要求1所述的基于大语言模型的代码质控方法,其特征在于,所述将所述组装好的提示对话框通过所述api接口请求大语言模型,以调用...
【专利技术属性】
技术研发人员:叶超,王实,张奇,
申请(专利权)人:北京惠每云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。