本发明实施例涉及软件,特别是涉及一种代码审查方法、装置、电子设备及存储介质。
背景技术:
1、代码审查是软件开发过程中的一项重要工作,是在代码提交到版本控制系统之前,对代码进行检查,以发现并修复潜在的缺陷、提高代码质量、保证代码风格的一致性等。代码审查可以有效地提高软件的可靠性、安全性、可维护性和可扩展性,降低软件的维护成本和风险。
2、相关技术使用人工代码审查,即由代码的作者以外的其他人员对代码进行审查。人工代码审查会受到人力资源、时间、经验、知识等因素的限制,如人工代码审查可能会占用大量时间,导致开发进度的延误。在实际应用中,人工代码审查的效率不高。
技术实现思路
1、本发明实施例的目的在于提供一种代码审查方法、装置、电子设备及存储介质,以实现对代码的高效审查。具体技术方案如下:
2、第一方面,本发明实施例提供了一种代码审查方法,上述方法包括:
3、确定待审查的目标代码;
4、将上述目标代码与预先存储的特征代码进行相似度匹配,确定与上述目标代码业务领域相似的目标特征代码,获取用于描述上述目标特征代码的上下文信息;
5、结合上述目标代码与上述上下文信息,生成提示词;
6、根据上述提示词,生成上述目标代码的代码审查结果。
7、本发明一个实施例中,上述确定待审查的目标代码,包括:
8、在接收到对代码的合并请求的情况下,获取上述合并请求指示的基于原代码的变量代码,作为待审查的目标代码,上述变量代码为在上述原代码基础上增加和/或删减的代码,上述合并请求指示基于上述变量代码修改上述原代码。
9、本发明一个实施例中,在上述确定待审查的目标代码之后,还包括:
10、去除上述目标代码中需进行保密的敏感信息,生成脱敏目标代码;
11、上述将上述目标代码与预先存储的特征代码进行相似度匹配,确定与上述目标代码业务领域相似的目标特征代码,获取用于描述上述目标特征代码的上下文信息,包括:
12、将上述脱敏目标代码与预先存储的特征代码进行相似度匹配,确定与上述脱敏目标代码业务领域相似的目标特征代码,获取用于描述上述目标特征代码的上下文信息;
13、上述结合上述目标代码与上述上下文信息,生成提示词,包括:
14、结合上述脱敏目标代码与上述上下文信息,生成提示词。
15、本发明一个实施例中,上述将上述目标代码与预先存储的特征代码进行相似度匹配,包括:
16、对上述目标代码进行向量化,生成目标代码向量;
17、对预先存储的特征代码进行向量化,生成特征代码向量;
18、分别计算上述目标代码向量与各特征代码向量间的欧氏距离,基于计算出的欧氏距离进行上述目标代码与不同特征代码间的相似度匹配。
19、本发明一个实施例中,上述根据上述提示词,生成上述目标代码的代码审查结果,包括:
20、将上述提示词输入大语言模型,接收上述大语言模型输出的代码审查结果。
21、本发明一个实施例中,上述上下文信息包含对上述目标特征代码所属业务领域的描述。
22、本发明一个实施例中,上述代码审查结果包含以下信息中的至少一种:目标代码缺陷问题所在位置、目标代码缺陷问题描述、推荐修改方式。
23、第二方面,本发明实施例提供了一种代码审查装置,上述装置包括:
24、确定模块,用于确定待审查的目标代码;
25、匹配与获取模块,用于将上述目标代码与预先存储的特征代码进行相似度匹配,确定与上述目标代码业务领域相似的目标特征代码,获取用于描述上述目标特征代码的上下文信息;
26、第一生成模块,用于结合上述目标代码与上述上下文信息,生成提示词;
27、第二生成模块,用于根据上述提示词,生成上述目标代码的代码审查结果。
28、本发明一个实施例中,上述确定模块,具体用于:
29、在接收到对代码的合并请求的情况下,获取上述合并请求指示的基于原代码的变量代码,作为待审查的目标代码,上述变量代码为在上述原代码基础上增加和/或删减的代码,上述合并请求指示基于上述变量代码修改上述原代码。
30、本发明一个实施例中,上述装置还包括:
31、脱敏模块,用于去除上述目标代码中需进行保密的敏感信息,生成脱敏目标代码;
32、上述匹配与获取模块,具体用于:
33、将上述脱敏目标代码与预先存储的特征代码进行相似度匹配,确定与上述脱敏目标代码业务领域相似的目标特征代码,获取用于描述上述目标特征代码的上下文信息;
34、上述第一生成模块,具体用于:
35、结合上述脱敏目标代码与上述上下文信息,生成提示词。
36、本发明一个实施例中,上述匹配与获取模块,具体用于:
37、对上述目标代码进行向量化,生成目标代码向量;
38、对预先存储的特征代码进行向量化,生成特征代码向量;
39、分别计算上述目标代码向量与各特征代码向量间的欧氏距离,基于计算出的欧氏距离进行上述目标代码与不同特征代码间的相似度匹配,确定与上述目标代码业务领域相似的目标特征代码,获取用于描述上述目标特征代码的上下文信息。
40、本发明一个实施例中,上述第二生成模块,具体用于:
41、将上述提示词输入大语言模型,接收上述大语言模型输出的代码审查结果。
42、本发明一个实施例中,上述上下文信息包含对上述目标特征代码所属业务领域的描述。
43、本发明一个实施例中,上述代码审查结果包含以下信息中的至少一种:目标代码缺陷问题所在位置、目标代码缺陷问题描述、推荐修改方式。
44、第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
45、存储器,用于存放计算机程序;
46、处理器,用于执行存储器上所存放的程序时,实现第一方面任一的方法步骤。
47、第四方面,本发明实施例提供了一种计算机可读存储介质,上述计算机可读存储介质内存储有计算机程序,上述计算机程序被处理器执行时实现第一方面任一的方法步骤。
48、本发明实施例有益效果:
49、本发明实施例提供一种代码审查方法,在确定出待审查的目标代码后,基于该目标代码,在预先存储的特征代码中确定出与上述目标代码匹配的目标特征代码,进而获取到描述该目标特征代码的上下文信息,将该上下文信息与上述目标代码结合起来生成提示词,使用程序处理该提示词,最终生成针对上述目标代码的代码审查结果。在本发明实施例提供的方案中,无需人工进行代码审查,由程序自动获取上述目标代码与上下文信息,进而自动输出代码审查结果,能够在短时间内自动化快速分析和审查大量代码,缩短开发周期,提高开发效率。因此,本发明实施例提供的方案能够实现对代码的高效审查。
50、并且,与人工代码审查可能会受到人员主观偏见、情绪、态度等影响,进而导致出现审查结果的不公正、不准确、不一致等情况相比,使用程序生成代码审查结果,不会出现因疲劳、兴趣缺失等因素导致审查质量下降,能够保证审查结果的客观公正性、稳定性。另外,本发明实施例中目标代码与目标特征代码应用的业务领域相似,且获取的上下文信息包含对目标特征代码的描述,将目标代码与上述上下文信息结合生成提示词,使得在基于该提示词生成代码审查结果的过程中能够考虑到上述目标代码应用的业务领域,使得生成的代码审查结果更符合业务逻辑,能够提高生成的代码审查结果的质量。