本发明实施例涉及人工智能,特别是涉及一种代码评审方法、装置、设备及存储介质。
背景技术:
1、在软件工程领域,随着软件技术和人工智能技术的快速发展,代码评审(cr,codereview)作为确保软件质量的关键环节,其重要性日益凸显。传统的代码评审主要依赖于人工审核,虽然结合单元测试和静态代码扫描工具可以过滤部分低级错误,但是在代码设计的合理性、上下文业务逻辑正确性等深层次问题仍难以通过自动化手段全面检出,通常还需要大量人工投入进行检查,这一过程不仅耗时费力,而且成本高昂,同时受限于评审人员的主观性和经验差异,容易出现疏漏。
2、近年来,人工智能技术的快速发展,特别是llm(large language model,大规模语言模型/大模型)技术的崛起,为代码评审的自动化提供了新的解决思路。大模型通过深度学习和大量的代码数据,能够深入理解代码的语义和结构,从而具备执行更为细致和准确的代码评审的能力。然而,大模型在应对复杂代码时,其输出存在不确定性,这可能导致代码评审结果存在偏差和错误。
技术实现思路
1、本发明实施例的目的在于提供一种代码评审方法、装置、设备及存储介质,具体技术方案如下:
2、在本发明实施的第一方面,提供了一种代码评审方法,涉及语言模型,所述语言模型包括通用模型和多个编码模型,所述方法包括:
3、获取待评审代码的代码数据;其中,所述代码数据至少包括所述代码的前半段、代码差异和代码路径;
4、将所述代码数据输入所述通用模型以使所述通用模型输出代码变动总结;
5、根据所述代码变动总结在本地知识库中进行检索得到对应的检索结果;
6、根据所述代码变动总结和所述检索结果生成提示词;
7、将所述提示词分别输入所述编码模型以使所述编码模型分别输出评审结果;
8、根据多个所述编码模型的所述评审结果确定针对所述待评审代码的最终评审结果。
9、在本发明实施的第二方面,还提供了一种代码评审装置,涉及语言模型,所述语言模型包括通用模型和多个编码模型,所述装置包括:
10、代码数据获取模块,用于获取待评审代码的代码数据;其中,所述代码数据至少包括所述代码的前半段、代码差异和代码路径;
11、代码变动总结获取模块,用于将所述代码数据输入所述通用模型以使所述通用模型输出代码变动总结;
12、检索结果获取模块,用于根据所述代码变动总结在本地知识库中进行检索得到对应的检索结果;
13、提示词生成模块,用于根据所述代码变动总结和所述检索结果生成提示词;
14、评审结果输出模块,用于将所述提示词分别输入所述编码模型以使所述编码模型分别输出评审结果;
15、最终评审结果输出模块,用于根据多个所述编码模型的所述评审结果确定针对所述待评审代码的最终评审结果。
16、在本发明实施的第三方面,还提供了一种通信设备,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;
17、所述处理器,用于读取存储器中的程序实现如第一方面任一所述的代码评审方法。
18、在本发明实施的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机实现如第一方面任一所述的代码评审方法。
19、在本发明实施的第五方面,还提供了计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现如第一方面任一所述代码评审方法。
20、本发明实施例在某一次代码评审时,获取待评审代码的代码数据,其中,代码数据至少包括代码的前半段、代码差异和代码路径;将代码数据输入通用模型以使通用模型输出代码变动总结;根据代码变动总结在本地知识库中进行检索得到对应的检索结果;根据代码变动总结和检索结果生成提示词;将提示词分别输入编码模型以使编码模型分别输出评审结果;根据多个编码模型的评审结果确定针对待评审代码的最终评审结果。本发明实施例为采用多个编码模型结合本地知识库共同对待评审代码进行代码评审,因此减少了单一模型代码评审时可能产生的偏差和错误,确保代码评审的准确率,为软件开发流程中的代码质量保障提供了更为可靠和高效的解决方案。
1.一种代码评审方法,其特征在于,涉及语言模型,所述语言模型包括通用模型和多个编码模型,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,在所述获取待评审代码的代码数据之前,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述编码模型之间互相独立对待评审代码进行代码评审。
4.根据权利要求1所述的方法,其特征在于,所述本地知识库至少包括关于代码的公司内部的最佳实践、特定规范和要求,以及历史代码评审结果。
5.根据权利要求1所述的方法,其特征在于,所述根据多个所述编码模型的所述评审结果确定针对所述待评审代码的最终评审结果,包括:
6.根据权利要求5所述的方法,其特征在于,所述根据多个所述编码模型的所述评审结果确定针对所述待评审代码的最终评审结果,包括:
7.根据权利要求6所述的方法,其特征在于,所述根据所述差异评审问题和所述提示词确定针对所述待评审代码的最终评审结果,包括:
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
9.根据权利要求8所述的方法,其特征在于,在所述按照预先设定的格式展示所述最终评审结果之后,所述方法还包括:
10.根据权利要求1所述的方法,其特征在于,在所述获取待评审代码的代码数据之前,所述方法还包括:
11.根据权利要求1所述的方法,其特征在于,所述根据所述代码变动总结在本地知识库中进行检索得到对应的检索结果,包括:
12.根据权利要求11所述的方法,其特征在于,所述根据所述相似度从所述本地知识库中获取向量本地知识作为检索结果,包括:
13.根据权利要求1所述的方法,其特征在于,在所述获取待评审代码的代码数据之后,所述方法还包括:
14.根据权利要求1所述的方法,其特征在于,在所述根据多个所述编码模型的所述评审结果确定针对所述待评审代码的最终评审结果之后,所述方法还包括:
15.根据权利要求1所述的方法,其特征在于,所述通用模型用于处理文本生成类任务,所述编码模型用于处理代码相关任务。
16.根据权利要求1所述的方法,其特征在于,所述通用模型为一个,所述编码模型为至少三个。
17.根据权利要求1所述的方法,其特征在于,所述评审结果至少包括潜在的错误、代码风格问题和改进建议。
18.一种代码评审装置,其特征在于,涉及语言模型,所述语言模型包括通用模型和多个编码模型,所述装置包括:
19.一种通信设备,其特征在于,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;
20.一种可读存储介质,用于存储程序,其特征在于,所述程序被处理器执行时实现如权利要求1-17中任意一项所述代码评审方法。
21.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如权利要求1-17中任意一项所述代码评审方法。