本说明书涉及机器学习领域,尤其涉及一种代码变更标签生成方法、装置以及设备。
背景技术:
1、在软件开发中,代码变更标签是用来标识代码变更类型的关键信息,常见的标签包括“fix”(比如表示修复bug)、“feat”(比如表示新功能添加)、“test”(比如表示测试相关变更)等。
2、实际应用中,需要人工判别并手动为代码变更添加对应的标签,但是,由于代码变更会频繁发生而且涉及的代码量规模较大,则人工判别并手动添加标签的方式费时费力,效率低下,尤其是在代码变更并非当前的标签维护人员产出的情况,更是连标签的可靠性也难以保证。不仅如此,目前使用的标签的种类比较固定,难以适应个性化需求。
3、基于此,需要有助于更高效、更可靠、更能满足个性化需求地添加代码变更标签的方案。
技术实现思路
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、本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下有益效果:通过语义比对和代码差异比对特征分析,能够更正确高效地理解代码变更信息实质表达或隐含的语义,进而能够为其自动化地、小规模地、高效地生成贴切可靠的标签,再将这些小规模的数据,用于微调训练对自然语言和程序语言都已经有较好理解能力的大语言模型,使得大语言模型迅速进一步获得可靠生成代码变更标签的能力,进而能够用于高效地为大规模的其他代码变更信息生成标签;不仅如此,该方案也支持用户根据实际需要自定义标签信息,并且对于自定义的标签信息同样也能够类似地高效地获得小规模微调训练数据。
1.一种代码变更标签生成方法,包括:
2.如权利要求1所述的方法,所述获取代码变更信息集合之前,所述方法还包括:
3.如权利要求2所述的方法,所述代码数据管理平台包括代码版本控制平台;
4.如权利要求1所述的方法,所述获取预先定义的标签信息集合之前,所述方法还包括:
5.如权利要求1所述的方法,所述根据所述标签信息集合中包含的标签信息,对所述代码变更信息集合中包含的代码变更信息进行语义比对,具体包括:
6.如权利要求1所述的方法,所述根据所述标签信息集合中包含的标签信息,对所述代码变更信息集合中包含的代码变更信息进行代码差异比对特征分析,具体包括:
7.如权利要求6所述的方法,所述根据所述识别的结果,为所述代码变更信息生成对应的标签,具体包括:
8.如权利要求7所述的方法,所述指定的程序控制流区域包括指定关键字语句中的条件区域;
9.如权利要求6所述的方法,所述根据所述识别的结果,为所述代码变更信息生成对应的标签,具体包括:
10.如权利要求1所述的方法,所述代码变更信息为结构化数据;
11.一种代码变更标签生成装置,包括:
12.如权利要求11所述的装置,所述信息集合获取模块,在所述获取代码变更信息集合之前,通过调用代码数据管理平台提供的接口,获取研发人员向所述代码数据管理平台提交的不同的变更代码分别关联的提交信息;
13.如权利要求12所述的装置,所述代码数据管理平台包括代码版本控制平台;
14.如权利要求11所述的装置,所述信息集合获取模块,在所述获取预先定义的标签信息集合之前,定义一个标签,以及为所述标签生成的一种或多种语言的同义词组和相关描述,构成一组标签信息;
15.如权利要求11所述的装置,所述第一标签生成模块,确定所述代码变更信息集合中包含的代码变更信息中的消息部分和代码路径部分;
16.如权利要求11所述的装置,所述第一标签生成模块,确定所述代码变更信息集合中包含的代码变更信息中的代码差异比对部分;
17.如权利要求16所述的装置,所述第一标签生成模块,对于表示代码变更类型为修复的标签信息,若在所述代码差异比对部分中,识别出对应于该标签信息的所述特征分析逻辑中涉及的指定代码区域发生了代码变更,则为代码变更信息生成该标签信息;
18.如权利要求17所述的装置,所述指定的程序控制流区域包括指定关键字语句中的条件区域;
19.如权利要求16所述的装置,所述第一标签生成模块,对于表示代码变更类型为非修复的标签信息,若在所述代码差异比对部分中,识别出只有对应于该标签信息的所述特征分析逻辑中涉及的指定代码区域发生了代码变更,则为代码变更信息生成该标签信息,所述非修复包括文档型修改,和/或风格型修改;
20.如权利要求11所述的装置,所述代码变更信息为结构化数据;
21.一种代码变更标签生成设备,包括: