基于大模型和项目级语义锚定的软件即时缺陷预测方法
本发明涉及软件工程、人工智能、代码分析和软件缺陷预测,特别涉及一种基于大模型和项目级语义锚定的软件即时缺陷预测方法。
背景技术:
1、随着软件系统规模和复杂度的不断提升,软件在持续演化过程中容易引入新的缺陷。代码提交作为软件演化的基本单元,通常包含代码新增、删除、修改以及对应的提交消息。若能够在代码提交阶段及时判断该提交是否可能引入缺陷,则可以辅助开发人员进行针对性代码审查和测试资源分配,从而降低后续修复成本。现有的软件即时缺陷预测方法主要包括基于专家特征的方法和基于学习模型的方法。基于专家特征的方法通常利用新增代码行数、修改文件数量、修改目录数量、代码变更熵等提交级统计指标进行判断;基于学习模型的方法则通常从代码变更文本、提交消息或历史提交数据中学习缺陷相关特征。上述方法虽然在一定程度上能够识别高风险提交,但仍存在以下问题:
2、1、项目级语义依赖建模不足。现有方法多将一次提交视为孤立的文本片段,主要分析本次修改的局部代码内容,难以获取代码变更中引用但定义于其他文件或模块中的类、方法等程序符号的语义信息,导致对跨文件依赖关系和间接行为影响的判断不足。
3、2、语义风险与经验风险融合不充分。代码变更的缺陷风险不仅取决于语义行为变化,也与提交规模、变更范围和提交意图有关。现有方法往往将语义特征和统计特征进行固定组合,缺少对提交意图的显式建模,难以区分功能新增、缺陷修复、样式修改及测试、重构等不同类型提交中的风险含义。
4、3、预测稳定性和可解释性不足。大模型虽然具有较强的代码理解能力,但直接用于缺陷预测时,容易受到输入顺序、上下文缺失和模型推理不确定性的影响,导致输出结果不稳定。同时,传统模型通常仅给出分类结果或概率分数,难以提供结构化的风险解释,不便于开发人员理解和复核预测结果。
5、因此,需要一种能够结合大模型、项目级语义上下文、提交级专家特征和不确定性处理机制的提交级软件即时缺陷预测方法,以提高缺陷预测的准确性、稳定性和可解释性。
技术实现思路
1、本发明提出了一种基于大模型和项目级语义锚定的软件即时缺陷预测方法,用于解决现有软件即时缺陷预测方法中存在的提交局部信息依赖较强、跨文件语义依赖建模不足、语义风险与经验风险融合不充分以及预测结果稳定性和可解释性不足等问题。
2、本发明的目的是通过以下技术方案来实现的:一种基于大模型和项目级语义锚定的软件即时缺陷预测方法,所述方法用于判断待检测代码提交是否为缺陷引入提交,包括:
3、步骤 s1,获取待检测提交的提交消息、代码变更、符号引用声明、项目代码库及提交级专家特征,基于大模型从所述代码变更和符号引用声明中抽取被引用但未在本次代码变更中定义的程序符号,形成候选程序符号集合,解析所述候选程序符号的定义代码片段,得到项目级语义上下文;
4、步骤 s2,大模型基于所述代码变更、提交消息和项目级语义上下文进行上下文语义风险评估,得到上下文风险分数、行为影响等级和上下文风险解释;并基于所述提交消息识别提交意图类别,大模型结合所述提交意图类别和提交级专家特征进行定量经验风险评估,得到定量风险分数;
5、步骤 s3,基于上下文风险分数和定量风险分数确定最终风险分数,基于最终风险分数确定缺陷预测结果。
6、对所述上下文风险分数和定量风险分数进行一致性或置信度判断,并根据判断结果进行重评估,得到最终风险分数,依据预设阈值输出缺陷预测结果。
7、进一步地,所述提交级专家特征包括代码新增行数、代码变更熵、修改目录数量和修改文件数量,用于表征提交的变更规模和变更分布。
8、进一步地,步骤 s1还包括:对符号引用声明和代码变更进行多轮输入构造,在不同轮次中以随机方式调整输入顺序;分别调用大模型抽取程序符号;对多轮抽取结果进行合并、去重、过滤和重排序,得到候选程序符号集合。
9、进一步地,所述程序符号包括类符号、实例方法符号和静态方法符号中的一种或多种;每个程序符号包括符号名称、符号类型、推断的全限定名称和抽取原因;所述程序符号为在所述代码变更中被引用、影响程序行为且未在本次代码变更中新定义的程序符号,不包括局部变量、标准库组件以及本次代码变更中新定义的类或方法。
10、进一步地,在项目代码库中解析所述候选程序符号的定义代码片段,包括:优先依据全限定名称在项目代码库中匹配定义;当匹配失败时,采用包级回退策略,在所述待检测提交所修改文件所属的本地模块内,或在该文件所在的包路径及其子包范围内,检索候选定义;丢弃无法解析的程序符号,并将可解析符号的定义代码片段组成项目级语义上下文。
11、进一步地,上下文语义风险评估包括:依据预设的缺陷类别集合约束大模型的分析方向,由大模型分析所述代码变更是否产生控制流改变、方法契约或取值逻辑改变、以及语义重实现中的一种或多种行为影响,并根据所述行为影响判断所述代码变更是否引入属于所述预设缺陷类别集合中的缺陷风险;从而输出上下文风险分数,或者还输出行为影响等级及上下文风险解释;
12、所述预设缺陷类别集合包括空指针异常、语法错误、类型转换异常、资源泄漏、逻辑错误、路径处理错误、压缩或编码错误、并发错误、异常吞没、冗余或死代码、不安全对象构造、不安全的打印或日志操作、以及不正确的初始化或配置错误中的一种或多种。
13、进一步地,定量经验风险评估包括:根据提交消息识别提交意图类别;以所述提交意图类别作为门控信号,根据所述提交意图类别从预设的多个基线范围中确定与当前提交意图类别对应的定量风险分数基线范围;在所述基线范围的基础上,根据预设阈值对所述提交级专家特征进行离散化处理,将各专家特征划分为多个离散的风险等级,并结合所述提交意图类别以及各专家特征的风险等级,在所述定量风险分数基线范围内定量风险分数,输出定量风险分数,或者还输出定量风险解释;
14、其中,所述提交级专家特征包括代码新增行数、代码变更熵、修改目录数量和修改文件数量;
15、所述提交意图类别包括缺陷修复、功能新增、功能改进、样式修改及测试、重构,若均不属于上述类别,则归于其他类型。
16、进一步地,所述步骤s3还包括:对所述上下文风险分数和定量风险分数进行一致性或置信度判断,根据判断结果进行重评估,得到最终风险分数,并依据预设阈值输出缺陷预测结果;
17、其中,判断上下文风险分数和定量风险分数是否满足一致性或置信度条件;若不满足,则进行多轮重评估并对风险分数取中位数;当项目级语义上下文不为空时,提高上下文风险分数的融合权重,当项目级语义上下文为空时,采用均衡融合权重。
18、本发明还提供了一种基于大模型和项目级语义锚定的软件即时缺陷预测系统,通过引入项目级语义锚定、双维度风险评估以及不确定性感知融合与预测模块,使系统能够在无需针对即时缺陷预测任务进行专门监督训练或模型微调的情况下,结合代码变更的局部信息、跨文件语义上下文、提交意图和提交级专家特征进行联合分析,从而判断待检测代码提交是否为缺陷引入提交。
19、1、项目级语义锚定模块。该模块通过语义上下文锚定机制,解析待检测提交中被引用但未定义的程序符号,包括类符号、实例方法符号和静态方法符号,并在项目代码库中检索其定义,形成项目级语义上下文。该模块通过多轮抽取、去重、过滤和排序策略,确保跨文件依赖被充分捕获,为缺陷预测提供完整语义背景。
20、2、双维度风险评估模块。该模块包括上下文语义风险评估和定量经验风险评估。上下文语义风险评估基于代码变更、提交消息和项目级语义上下文,结合预设缺陷类别,基于大模型从以下维度评估代码变更的结构与行为影响:(1)新增或删除的条件判断、分支逻辑是否导致程序控制流发生变化;(2)字段定义、方法契约、标识符命名或取值逻辑是否发生改变;(3)既有逻辑是否被重命名或以语义等价的方式重新实现。随后,进一步判断上述行为影响是否可能引入以下缺陷风险:空指针异常、语法错误、类型转换异常、资源泄漏、逻辑错误、路径处理错误、压缩或编码错误、并发错误、异常吞没、冗余或死代码、不安全对象构造、不安全的打印或日志操作、以及不正确的初始化或配置错误中的一种或多种。最后输出上下文风险分数、行为影响等级以及上下文风险解释。定量经验风险评估模块基于提交消息识别提交意图类别,所述提交意图类别包括缺陷修复、功能新增、功能改进、样式修改及测试、重构和其他类型。然后以所述提交意图类别作为门控信号确定对应的定量风险分数基线范围;并对提交级专家特征进行离散化处理,依据离散化后的风险等级在基线范围内对定量风险分数进行微调;最终输出定量风险分数及定量风险解释。
21、3、不确定性感知融合模块。该模块对上下文风险分数和定量风险分数进行一致性或置信度判断。若判断结果不满足预设条件,则触发多轮重评估,并对多轮风险分数取中位数,以降低大模型输出波动对预测结果的影响。之后,系统根据项目级语义上下文是否为空设置自适应融合权重,计算最终风险分数,并依据预设阈值输出缺陷预测结果。
22、本发明还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的一种基于大模型和项目级语义锚定的软件即时缺陷预测方法。
23、与现有技术相比,本发明的有益效果是:1、通过项目级语义锚定获取跨文件程序符号及其定义,使上下文语义风险评估能够结合项目级语义依赖分析代码变更的行为影响,减少仅依赖提交局部信息造成的判断偏差,并提高风险判断的可解释性。2、通过分别获取上下文风险分数和定量风险分数,从代码语义行为和提交规模、变更分布两个维度评估缺陷风险,并以提交意图对定量经验风险进行约束,使相同专家特征在不同提交意图下具有不同风险含义,从而提高风险评估的合理性。3、通过融合上下文风险分数和定量风险分数,并根据项目级语义上下文是否可获得自适应调整融合权重,使语义风险信息与经验风险信息形成互补;同时通过不确定性感知重评估和中位数聚合降低大模型输出波动,从而提高缺陷预测的准确性、稳定性和可靠性。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com