System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及软件维护,尤其涉及代码修复方法、装置、电子设备及可读存储介质。
技术介绍
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、本申请提出的一个或多个技术方案,至少具有以下技术效果:由于本申请可以获取待修复代码的代码语法树,遍历所述代码语法树,从所述代码语法树中查找不符合预设代码质量规则的问题代码,本文档来自技高网...
【技术保护点】
1.一种代码修复方法,其特征在于,所述的方法包括:
2.如权利要求1所述的方法,其特征在于,预设修复组件包括预设代码解析组件;所述根据所述问题代码的问题类型,调用所述问题类型的预设修复组件,修复所述问题代码的步骤包括:
3.如权利要求1所述的方法,其特征在于,所述根据所述问题代码的问题类型,调用所述问题类型的预设修复组件,修复所述问题代码的步骤包括:
4.如权利要求1所述的方法,其特征在于,所述根据所述问题代码的问题类型,调用所述问题类型的预设修复组件,修复所述问题代码的步骤包括:
5.如权利要求1所述的方法,其特征在于,所述问题代码包括目标修复代码;所述根据所述问题代码的问题类型,调用所述问题类型的预设修复组件,修复所述问题代码的步骤包括:
6.如权利要求5所述的方法,其特征在于,所述调用所述预设大语言模型,根据所述目标修复代码、所述代码调用关系和所述问题修复指示,对所述待修复代码进行修复,得到第一待测试代码的步骤还包括:
7.如权利要求5所述的方法,其特征在于,在所述对所述第一待测试代码进行测试,得到第一
8.一种代码修复装置,其特征在于,所述的装置包括:
9.一种电子设备,其特征在于,所述电子设备包括:
10.一种可读存储介质,其特征在于,所述可读存储介质为计算机可读存储介质,所述计算机可读存储介质上存储有实现代码修复方法的程序,所述实现代码修复方法的程序被处理器执行以实现如权利要求1至7中任一项所述代码修复方法的步骤。
...【技术特征摘要】
1.一种代码修复方法,其特征在于,所述的方法包括:
2.如权利要求1所述的方法,其特征在于,预设修复组件包括预设代码解析组件;所述根据所述问题代码的问题类型,调用所述问题类型的预设修复组件,修复所述问题代码的步骤包括:
3.如权利要求1所述的方法,其特征在于,所述根据所述问题代码的问题类型,调用所述问题类型的预设修复组件,修复所述问题代码的步骤包括:
4.如权利要求1所述的方法,其特征在于,所述根据所述问题代码的问题类型,调用所述问题类型的预设修复组件,修复所述问题代码的步骤包括:
5.如权利要求1所述的方法,其特征在于,所述问题代码包括目标修复代码;所述根据所述问题代码的问题类型,调用所述问题类型的预设修复组件,修复所述问题代码的步骤...
【专利技术属性】
技术研发人员:邓冬梅,
申请(专利权)人:招商银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。