一种代码校验方法、装置、设备及可读存储介质制造方法及图纸

技术编号:38483125 阅读:16 留言:0更新日期:2023-08-15 17:00
本申请公开了一种代码校验方法、装置、设备及可读存储介质,应用于机器学习领域,该方法包括:获取待校验源代码;将待校验源代码转换为词向量;将词向量输入到训练好的语言模型中,得到输出结果;当待校验源代码存在问题时,则输出结果为待校验源代码对应的修复方案。本申请基于语言模型/自然语言处理技术的方法可以学习到更加复杂的语法结构,如不同编程语言的语法和惯用表达方式,能够适应于不同的编程语言,从而能够更好地处理代码纠错问题,提高纠错准确性。纠错准确性。纠错准确性。

【技术实现步骤摘要】
一种代码校验方法、装置、设备及可读存储介质


[0001]本申请涉及机器学习领域,特别涉及一种代码校验方法、装置、设备及可读存储介质。

技术介绍

[0002]随着计算机软硬件技术的不断发展和应用场景的不断扩大,编写的程序变得越来越复杂,同时也难免会出现各种错误和问题。这些错误和问题可能来自于代码逻辑的不严密、数据输入输出的异常、环境变化等原因,给程序的正确性和可靠性带来了挑战。
[0003]为了提高程序的质量和效率,代码纠错成为了计算机编程过程中不可或缺的环节。在现代软件开发中,代码校验已经成为一项非常重要的工作,它不仅关乎程序的正确性和可靠性,还直接影响到项目的进度和效率。但传统的代码纠错技术通常依赖于规则或模式匹配的方法,需要手动定义大量的规则和特征,难以处理复杂的语法结构;并且传统的代码纠错技术通常只能适应特定编程语言、特定的编码风格和特定类型的代码问题进行纠错,不具有广泛性。

技术实现思路

[0004]有鉴于此,本申请的目的在于提供代码校验方法、装置、设备及可读存储介质,解决了现有技术中代码纠错的低效性和应用受限的问题。
[0005]为解决上述技术问题,本申请提供了一种代码校验方法,包括:
[0006]获取待校验源代码;
[0007]将所述待校验源代码转换为词向量;
[0008]将所述词向量输入到训练好的语言模型中,得到输出结果;
[0009]当所述待校验源代码存在问题时,则所述输出结果为所述待校验源代码对应的修复方案。
[0010]可选的,所述将所述词向量输入到训练好的语言模型中,包括:
[0011]训练基于注意力机制的语言模型,得到Transformer语言模型;
[0012]将所述词向量输入到所述Transformer语言模型中。
[0013]可选的,所述训练基于注意力机制的语言模型,得到Transformer语言模型,包括:
[0014]获取用于预训练的数据集,所述数据集包括错误代码和正确代码;
[0015]对所述数据集中的数据进行清洗处理,得到处理后的代码;
[0016]将所述处理后的代码进行转换,得到转换后数据;
[0017]将所述转换后数据进行数据划分,得到训练集数据、验证集数据和测试集数据;
[0018]基于注意力机制,并利用所述训练集数据训练模型,采用所述验证集数据对模型进行调优,采用所述测试集数据对模型进行性能评估,经评估得到的最优模型设定为所述Transformer语言模型。
[0019]可选的,所述对所述数据集中的数据进行清洗处理,得到处理后的代码,包括:
[0020]利用正则表达式和BeautifulSoup对所述数据集中的数据进行清洗处理,去除重复的代码数据和错误的代码标签,得到所述预处理后的代码。
[0021]可选的,所述将所述处理后的代码进行转换,得到转换后数据,包括:
[0022]利用ANTLR将所述处理后的代码转换为token序列,得到序列数据;
[0023]将所述序列数据转换为词向量形式,得到所述转换后数据。
[0024]可选的,还包括:
[0025]获取新的预训练数据集;
[0026]利用所述新的预训练数据集优化所述Transformer语言模型,得到优化的Transformer语言模型;
[0027]相应的,所述将所述词向量输入到所述Transformer语言模型中,包括:
[0028]将所述词向量输入到所述优化的Transformer语言模型中。
[0029]可选的,所述当所述待校验源代码存在问题时,则所述输出结果为所述待校验源代码对应的修复方案,包括:
[0030]当所述语言模型对所述源代码进行语法检查、语义检查、错误检测、可读性检查和自动纠错,确定所述待检验源代码是否存在问题;
[0031]若所述源代码存在问题,则输出的修复方案包括检验结果和修复后代码。
[0032]本申请还提供了一种代码校验装置,包括:
[0033]获取模块,用于获取待校验源代码;
[0034]转换模块,用于将所述待校验源代码转换为词向量;
[0035]输入模块,用于将所述词向量输入到训练好的语言模型中,得到输出结果;
[0036]修复输出模块,用于当所述待校验源代码存在问题时,则所述输出结果为所述待校验源代码对应的修复方案。
[0037]本申请还提供了一种代码校验设备,包括:
[0038]存储器,用于存储计算机程序;
[0039]处理器,用于执行所述计算机程序时实现上述的代码校验方法的步骤。
[0040]本申请还提供了一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述的代码校验方法的步骤。
[0041]可见,本申请通过获取待校验源代码;将待校验源代码转换为词向量;将词向量输入到训练好的语言模型中,得到输出结果;当待校验源代码存在问题时,则输出结果为待校验源代码对应的修复方案。本申请基于语言模型(自然语言处理技术)的方法可以学习到更加复杂的语法结构,如不同编程语言的语法和惯用表达方式,能够适应于不同的编程语言,从而能够更好地处理代码纠错问题,提高纠错准确性。
[0042]此外,本申请还提供了一种代码校验装置、设备及可读存储介质,同样具有上述有益效果。
附图说明
[0043]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
提供的附图获得其他的附图。
[0044]图1为本申请实施例提供的一种代码校验方法的流程图;
[0045]图2为本申请实施例提供的一种代码校验装置的结构示意图;
[0046]图3为本申请实施例提供的一种代码校验设备的结构示意图。
具体实施方式
[0047]为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0048]现阶段代码校验存在以下问题:
[0049](1)准确率较低:由于代码的语法和语义非常复杂,加之代码的逻辑结构往往受到开发者个人的习惯和经验的影响,因此传统的代码优化技术往往无法做到较高的准确率。
[0050](2)对数据量和代码量的限制:由于代码优化技术需要对大量的数据和代码进行分析和处理,因此对计算资源和存储资源的要求较高。对于大规模的代码库和数据集,传统的纠错技术面临很大的挑战。
[0051](3)对开发环境本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码校验方法,其特征在于,包括:获取待校验源代码;将所述待校验源代码转换为词向量;将所述词向量输入到训练好的语言模型中,得到输出结果;当所述待校验源代码存在问题时,则所述输出结果为所述待校验源代码对应的修复方案。2.根据权利要求1所述的代码校验方法,其特征在于,所述将所述词向量输入到训练好的语言模型中,包括:训练基于注意力机制的语言模型,得到Transformer语言模型;将所述词向量输入到所述Transformer语言模型中。3.根据权利要求2所述的代码校验方法,其特征在于,所述训练基于注意力机制的语言模型,得到Transformer语言模型,包括:获取用于预训练的数据集,所述数据集包括错误代码和正确代码;对所述数据集中的数据进行清洗处理,得到处理后的代码;将所述处理后的代码进行转换,得到转换后数据;将所述转换后数据进行数据划分,得到训练集数据、验证集数据和测试集数据;基于注意力机制,并利用所述训练集数据训练模型,采用所述验证集数据对模型进行调优,采用所述测试集数据对模型进行性能评估,经评估得到的最优模型设定为所述Transformer语言模型。4.根据权利要求3所述的代码校验方法,其特征在于,所述对所述数据集中的数据进行清洗处理,得到处理后的代码,包括:利用正则表达式和BeautifulSoup对所述数据集中的数据进行清洗处理,去除重复的代码数据和错误的代码标签,得到所述预处理后的代码。5.根据权利要求3所述的代码校验方法,其特征在于,所述将所述处理后的代码进行转换,得到转换后数据,包括:利用ANTLR将所述处理后的代...

【专利技术属性】
技术研发人员:王蒴刘丽红曲鸣胡涛侯华伟
申请(专利权)人:山东中创软件商用中间件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1