System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请属于计算机,特别是涉及一种自动修正代码风格的方法及装置。
技术介绍
1、确保代码风格一致性对于软件开发工作的效率和代码质量至关重要。然而,实际的开发工作中代码风格几乎无法保持相对的一致,例如在多个开发人员分工开发同一项目时,由于不同团队成员可能具有不同的编码风格和偏好、以及项目的时间压力等原因,代码风格的一致性很难保证,进而降低了代码可读性和整体的开发效率。
2、人工审查是常见的统一代码风格的方式,但这种方式需要耗费大量的时间和人力资源,效率和成本较高。
3、因此,如何自动、高效地统一代码风格成为当前亟待解决的问题。
技术实现思路
1、本申请的目的在于提供一种自动修正代码风格的方法及装置,能够满足自动、高效地统一代码风格的需要。
2、第一方面,本申请实施例提供了一种自动修正代码风格的方法,该方法包括:
3、获取源代码文本;
4、根据预设分割规则将源代码文本分割成多个源代码片段;
5、利用训练好的大语言模型llm对多个源代码片段进行处理,得到源代码文本的风格审查意见;风格审查意见包括审查是否通过,以及,当审查不通过时,风格审查意见还包括至少一个风格问题位置、至少一个风格问题位置对应的至少一种风格问题类型以及每种风格问题类型对应的一种修正方案;
6、基于风格审查意见的指示,锁定源代码文本中的至少一个风格问题位置,针对每个风格问题位置,根据该风格问题位置对应的至少一种风格问题类型和至少一种风格问题类
7、在第一方面的一种可能的实现方式中,至少一种风格问题类型包括命名问题、缩进问题、换行问题、注释问题、空格问题、引号问题或布局问题。
8、在第一方面的一种可能的实现方式中,大语言模型是通过预先构建的数据集训练得到的,数据集包括多个代码样本和每个代码样本所对应的风格审查意见标签,每个风格审查意见标签中均包括与该风格审查意见标签相对应的代码样本中的风格问题位置、至少一种风格问题类型以及每种风格问题类型对应的修正方案。
9、在第一方面的一种可能的实现方式中,大语言模型包括多个子模型,多个子模型中的每个子模型均对应一种编程语言的代码风格审查,利用训练好的大语言模型对多个源代码片段进行处理,得到源代码文本的风格审查意见,包括:
10、确定多个源代码片段中每个源代码片段对应的编程语言;
11、针对每个源代码片段,根据该源代码片段对应的编程语言从多个子模型中筛选出用以分析该源代码片段的子模型,利用筛选出的子模型对该源代码片段进行处理,得到该源代码片段的风格审查子意见;
12、对多个源代码片段的风格审查子意见进行整合分析,得到源代码文本的风格审查意见。
13、在第一方面的一种可能的实现方式中,利用训练好的大语言模型llm对多个源代码片段进行处理,得到源代码文本的风格审查意见,风格审查意见包括审查是否通过,以及,当审查不通过时,风格审查意见还包括至少一个风格问题位置、至少一个风格问题位置对应的至少一种风格问题类型以及每种风格问题类型对应的一种修正方案,包括:
14、定位风格审查意见中所有修正方案在抽象语法树中的位置,抽象语法树是通过解析源代码文本而预先构建的;
15、针对每个修正方案,根据该修正方案在抽象语法树中的位置,对该修正方案进行上下文一致性检查,将不符合上下文一致性的修正方案从风格审查意见中删除。
16、在第一方面的一种可能的实现方式中,方法还包括:当风格审查意见指示审查通过时,不对源代码文本进行修改。
17、在第一方面的一种可能的实现方式中,预设分割规则包括基于语法结构分割、基于空白行或缩进分割或基于代码的功能区域分段中的至少一项。
18、第二方面,本申请实施例提供了一种自动修正代码风格的装置,该装置包括:
19、获取模块,用于获取源代码文本;
20、审查模块,用于根据预设分割规则将源代码文本分割成多个源代码片段;
21、审查模块还用于,利用训练好的大语言模型llm对多个源代码片段进行处理,得到源代码文本的风格审查意见;风格审查意见包括审查是否通过,以及,当审查不通过时,风格审查意见还包括至少一个风格问题位置、至少一个风格问题位置对应的至少一种风格问题类型以及每种风格问题类型对应的一种修正方案;
22、修正模块,用于基于风格审查意见的指示,锁定源代码文本中的至少一个风格问题位置,针对每个风格问题位置,根据该风格问题位置对应的至少一种风格问题类型和至少一种风格问题类型对应的修正方案,对该风格问题位置上的源代码进行修正。
23、第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,当处理器执行所述计算机程序时使得计算机设备实现如上述第一方面和第二方面中任一实现方式。
24、第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当计算机程序被计算机设备执行时实现如上述第一方面和第二方面中任一实现方式。
25、第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机设备上运行时,使得计算机设备执行上述第一方面中任一项所述的实现方式。
26、本申请实施例与现有技术相比存在的有益效果是:
27、本申请方法,利用大语言模型对源代码文本中的潜在的代码风格问题进行审查,得到风格审查意见。当审查不通过时,风格审查意见能够给出源代码文本中的代码风格问题的位置、种类及修正方案,系统可以基于这些信息对源代码文本中的代码风格问题进行自动修正。利用本申请方法,可以自动评估和修正代码风格,在减少了人工审查的工作量、加速开发周期的前提下,消除代码风格不一致性引起的问题,提高了代码可读性、可维护性以及合作开发效率。
本文档来自技高网...【技术保护点】
1.一种自动修正代码风格的方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述至少一种风格问题类型包括命名问题、缩进问题、换行问题、注释问题、空格问题、引号问题或布局问题。
3.根据权利要求2所述的方法,其特征在于,所述大语言模型是通过预先构建的数据集训练得到的,所述数据集包括多个代码样本和每个代码样本所对应的风格审查意见标签,每个所述风格审查意见标签中均包括与该风格审查意见标签相对应的代码样本中的风格问题位置、至少一种风格问题类型以及每种风格问题类型对应的修正方案。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述大语言模型包括多个子模型,所述多个子模型中的每个子模型均对应一种编程语言的代码风格审查,所述利用训练好的大语言模型对所述多个源代码片段进行处理,得到所述源代码文本的风格审查意见,包括:
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述利用训练好的大语言模型LLM对所述多个源代码片段进行处理,得到所述源代码文本的风格审查意见,所述风格审查意见包括审查是否通过,以及,当审查不通过时,所
6.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1至3中任一项所述的方法,其特征在于,所述预设分割规则包括基于语法结构分割、基于空白行或缩进分割、基于代码的功能区域分段中的至少一项。
8.一种自动修正代码风格的装置,其特征在于,包括:
9.一种计算机设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时使得所述计算机设备实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被计算机设备执行时实现如权利要求1至7任一项所述的方法。
...【技术特征摘要】
1.一种自动修正代码风格的方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述至少一种风格问题类型包括命名问题、缩进问题、换行问题、注释问题、空格问题、引号问题或布局问题。
3.根据权利要求2所述的方法,其特征在于,所述大语言模型是通过预先构建的数据集训练得到的,所述数据集包括多个代码样本和每个代码样本所对应的风格审查意见标签,每个所述风格审查意见标签中均包括与该风格审查意见标签相对应的代码样本中的风格问题位置、至少一种风格问题类型以及每种风格问题类型对应的修正方案。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述大语言模型包括多个子模型,所述多个子模型中的每个子模型均对应一种编程语言的代码风格审查,所述利用训练好的大语言模型对所述多个源代码片段进行处理,得到所述源代码文本的风格审查意见,包括:
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述利用训练好的大语言模型llm对所述多个源代码片段进行处理,得到所述...
【专利技术属性】
技术研发人员:胡云齐,
申请(专利权)人:深圳蟹黄保科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。