CN112711530A - 一种基于机器学习的代码风险预测方法及系统 - Google Patents
一种基于机器学习的代码风险预测方法及系统 Download PDFInfo
- Publication number
- CN112711530A CN112711530A CN202011578425.2A CN202011578425A CN112711530A CN 112711530 A CN112711530 A CN 112711530A CN 202011578425 A CN202011578425 A CN 202011578425A CN 112711530 A CN112711530 A CN 112711530A
- Authority
- CN
- China
- Prior art keywords
- code
- neural network
- sample data
- circle complexity
- determining
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000010801 machine learning Methods 0.000 title claims abstract description 25
- 238000003062 neural network model Methods 0.000 claims abstract description 65
- 238000012360 testing method Methods 0.000 claims abstract description 59
- 238000012549 training Methods 0.000 claims abstract description 37
- 238000013528 artificial neural network Methods 0.000 claims abstract description 32
- 238000005457 optimization Methods 0.000 claims abstract description 32
- 238000004458 analytical method Methods 0.000 claims abstract description 16
- 238000007781 pre-processing Methods 0.000 claims abstract description 11
- 230000003068 static effect Effects 0.000 claims abstract description 11
- 238000001514 detection method Methods 0.000 claims abstract description 10
- 238000005070 sampling Methods 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 15
- 230000004913 activation Effects 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000010606 normalization Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3616—Software analysis for verifying properties of programs using software metrics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种基于机器学习的代码风险预测方法及系统,包括:对不同类型的数据进行采样,并对采集的不同类型的数据进行整合和预处理,以获取样本数据集;构建用于确定代码圈复杂度的初始的神经网络模型,基于所述样本数据集和每个样本对应的代码圈复杂度对所述初始的神经网络模型进行训练和优化,以获取用于确定代码圈复杂度的神经网络优化模型;确定目标测试对象,并利用所述神经网络优化模型对所述目标测试对象进行分析,获取所述目标测试对象对应的代码圈复杂度阈值;根据所述目标测试对象对应的代码圈复杂度阈值进行代码静态检测分析,获取代码风险预测结果,并根据所述代码风险预测结果确定测试报告。
Description
技术领域
本发明涉及机器学习技术领域,并且更具体地,涉及一种基于机器学习的代码风险预测方法及系统。
背景技术
目前的代码静态检查中,质量管理人员对于圈复杂度的阈值一般设定为一个固定值,而不考虑代码的实际业务场景,以及相关人员的能力问题。但实际上,圈复杂度和业务场景、人员能力都有关系,脱离这些因素单纯的把圈复杂度的阈值设定为一个固定值并不是一种很好的办法。
因此,需要一种基于机器学习算法生成神经网络模型,动态的根据项目及人员情况设定阈值,进而对可能存在的缺陷进行预测的方法。
发明内容
本发明提出一种基于机器学习的代码风险预测方法及系统,以解决如何高效准确地进行代码风险预测的问题。
为了解决上述问题,根据本发明的一个方面,提供了一种基于机器学习的代码风险预测方法,所述方法包括:
对不同类型的数据进行采样,并对采集的不同类型的数据进行整合和预处理,以获取样本数据集;
构建用于确定代码圈复杂度的初始的神经网络模型,基于所述样本数据集和每个样本对应的代码圈复杂度对所述初始的神经网络模型进行训练和优化,以获取用于确定代码圈复杂度的神经网络优化模型;
确定目标测试对象,并利用所述神经网络优化模型对所述目标测试对象进行分析,获取所述目标测试对象对应的代码圈复杂度阈值;
根据所述目标测试对象对应的代码圈复杂度阈值进行代码静态检测分析,获取代码风险预测结果,并根据所述代码风险预测结果确定测试报告。
优选地,其中所述神经网络模型为四层的BP神经网络模型,包括:一个输入层、两个隐藏层和一个输出层;输入层的输入数据为样本数据集中的样本数据,输出层的输出数据为代码圈复杂度阈值,激活函数为Sigmoid函数。
优选地,其中所述基于所述样本数据集和每个样本对应的代码圈复杂度对所述初始的神经网络模型进行训练和优化,以获取用于确定代码圈复杂度的神经网络优化模型,包括:
将所述样本数据集按照预设的比例分为训练数据集和测试数据集,初始化权值为随机值;
将所述训练数据集中的样本数据输入当前的神经网络模型以进行模型训练,在正向传播过程中,从输入层开始根据当前的神经网络模型的权重和激活函数进行计算分析,得到输出的代码圈复杂度,将输出的代码圈复杂度和样本数据对应的代码圈复杂度进行对比确定误差值,并将权值向着减小误差值的方向调整,直至误差值满足预设的误差阈值时,利用所述测试集进行测试,若准确率满足预设的准确率阈值,则确定当前的神经网络模型为用于确定代码圈复杂度的神经网络优化模型,反之,则调整参数重新训练。
优选地,其中所述样本数据集中的每个样本数据包括:代码行数、代码模块复杂度、开发人员能力度、测试人员能力度和开发人员数量。
优选地,其中所述预处理为数据归一化处理。
根据本发明的另一个方面,提供了一种基于机器学习的代码风险预测系统,所述系统包括:
样本数据集获取单元,用于对不同类型的数据进行采样,并对采集的不同类型的数据进行整合和预处理,以获取样本数据集;
神经网络模型训练单元,用于构建用于确定代码圈复杂度的初始的神经网络模型,基于所述样本数据集和每个样本对应的代码圈复杂度对所述初始的神经网络模型进行训练和优化,以获取用于确定代码圈复杂度的神经网络优化模型;
代码圈复杂度阈值确定单元,用于确定目标测试对象,并利用所述神经网络优化模型对所述目标测试对象进行分析,获取所述目标测试对象对应的代码圈复杂度阈值;
风险预测单元,用于根据所述目标测试对象对应的代码圈复杂度阈值进行代码静态检测分析,获取代码风险预测结果,并根据所述代码风险预测结果确定测试报告。
优选地,其中所述神经网络模型为四层的BP神经网络模型,包括:一个输入层、两个隐藏层和一个输出层;输入层的输入数据为样本数据集中的样本数据,输出层的输出数据为代码圈复杂度阈值,激活函数为Sigmoid函数。
优选地,其中所述神经网络模型训练单元,基于所述样本数据集和每个样本对应的代码圈复杂度对所述初始的神经网络模型进行训练和优化,以获取用于确定代码圈复杂度的神经网络优化模型,包括:
将所述样本数据集按照预设的比例分为训练数据集和测试数据集,初始化权值为随机值;
将所述训练数据集中的样本数据输入当前的神经网络模型以进行模型训练,在正向传播过程中,从输入层开始根据当前的神经网络模型的权重和激活函数进行计算分析,得到输出的代码圈复杂度,将输出的代码圈复杂度和样本数据对应的代码圈复杂度进行对比确定误差值,并将权值向着减小误差值的方向调整,直至误差值满足预设的误差阈值时,利用所述测试集进行测试,若准确率满足预设的准确率阈值,则确定当前的神经网络模型为用于确定代码圈复杂度的神经网络优化模型,反之,则调整参数重新训练。
优选地,其中所述样本数据集中的每个样本数据包括:代码行数、代码模块复杂度、开发人员能力度、测试人员能力度和开发人员数量。
优选地,其中所述预处理为数据归一化处理。
本发明提供了一种基于机器学习的代码风险预测方法及系统,利用机器学习确定用于生成代码圈复杂度的神经网络优化模型,基于神经网络优化模型确定目标测试对象的代码圈复杂度阈值,动态地设置代码圈复杂度阈值并进行代码静态检测分析,本发明通过机器学习分析代码圈复杂度和代码业务场景、人员能力等因素的关系,从而动态的设定代码质量要求中的圈复杂度阈值,能够更好的适应不同的项目、场景和人员,从而准确高效地对可能存在的缺陷进行预测。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1为根据本发明实施方式的基于机器学习的代码风险预测方法100的流程图;
图2为根据本发明实施方式的基于机器学习的代码风险预测的整体结构图;
图3为根据本发明实施方式的神经网络模型的结构示意图;
图4为根据本发明实施方式的基于机器学习的代码风险预测系统400的结构示意图。
具体实施方式
现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
图1为根据本发明实施方式的基于机器学习的代码风险预测方法100的流程图。如图1所示,本发明实施方式提供的基于机器学习的代码风险预测方法,利用机器学习确定用于生成代码圈复杂度的神经网络优化模型,基于神经网络优化模型确定目标测试对象的代码圈复杂度阈值,动态地设置代码圈复杂度阈值并进行代码静态检测分析,本发明能够更好的适应不同的项目、场景和人员,从而准确高效地对可能存在的缺陷进行预测。本发明实施方式提供的基于机器学习的代码风险预测方法100,从步骤101处开始,在步骤101对不同类型的数据进行采样,并对采集的不同类型的数据进行整合和预处理,以获取样本数据集。
优选地,其中所述样本数据集中的每个样本数据包括:代码行数、代码模块复杂度、开发人员能力度、测试人员能力度和开发人员数量。
优选地,其中所述预处理为数据归一化处理。
结合图2所示,在本发明的实施方式中,在数据情况处通过数据采集模块进行数据采集,并整合生成样本数据集,为神经网络模型提供输入,样本数据集,包括:代码行数、代码模块复杂度、开发人员能力度、测试人员能力度和开发人员数量等。另外,为了消除特征数据之间的量纲影响,本发明中还需要将整理好的数据集进行归一化处理,以便进行综合评价。
在本发明红,根据职级和工龄量化开发人员能力度和测试人员能力度。通过编写数据分析脚本,读取相关数据集,采集代码行数、代码模块复杂度等信息。其中,代码模块复杂度表示为代码中用于实现处理逻辑的类的数量。
在步骤102,构建用于确定代码圈复杂度的初始的神经网络模型,基于所述样本数据集和每个样本对应的代码圈复杂度对所述初始的神经网络模型进行训练和优化,以获取用于确定代码圈复杂度的神经网络优化模型。
优选地,其中所述神经网络模型为四层的BP神经网络模型,包括:一个输入层、两个隐藏层和一个输出层;输入层的输入数据为样本数据集中的样本数据,输出层的输出数据为代码圈复杂度阈值,激活函数为Sigmoid函数。
优选地,其中所述基于所述样本数据集和每个样本对应的代码圈复杂度对所述初始的神经网络模型进行训练和优化,以获取用于确定代码圈复杂度的神经网络优化模型,包括:
将所述样本数据集按照预设的比例分为训练数据集和测试数据集,初始化权值为随机值;
将所述训练数据集中的样本数据输入当前的神经网络模型以进行模型训练,在正向传播过程中,从输入层开始根据当前的神经网络模型的权重和激活函数进行计算分析,得到输出的代码圈复杂度,将输出的代码圈复杂度和样本数据对应的代码圈复杂度进行对比确定误差值,并将权值向着减小误差值的方向调整,直至误差值满足预设的误差阈值时,利用所述测试集进行测试,若准确率满足预设的准确率阈值,则确定当前的神经网络模型为用于确定代码圈复杂度的神经网络优化模型,反之,则调整参数重新训练。
在本发明中,利用样本数据集中的样本数据进行神经网络模型的训练,其中,将样本数据集以8:2划分为训练数据集和测试数据集。其中,鉴于本发明的学习复杂度低,因此选用了较为基础的四层BP神经网络模型进行训练。首先,权值首先被初始化为随机值,然后基于梯度下降算法向误差减小的方向反向传播以调整权重,选择Sigmoid函数作为激活函数。神经网络模型结构如图3所示。在本发明中,将训练数据集中的数据输入初始的神经网络模型,输入层特征值包括代码行数、代码模块复杂度、开发人员能力度、测试人员能力度和开发人员数量,输出层为圈复杂度阈值,在正向传播过程中,从输入层开始根据权重和激活函数计算结果直到输出,与样本对应的适当的圈复杂度阈值进行对比,然后权值向着减小误差值的方向调整,直至误差值符合要求;再利用所述测试集进行测试,若准确率满足预设的准确率阈值,则确定当前的神经网络模型为用于确定代码圈复杂度的神经网络优化模型,反之,则调整参数重新训练。
在步骤103,确定目标测试对象,并利用所述神经网络优化模型对所述目标测试对象进行分析,获取所述目标测试对象对应的代码圈复杂度阈值。
在步骤104,根据所述目标测试对象对应的代码圈复杂度阈值进行代码静态检测分析,获取代码风险预测结果,并根据所述代码风险预测结果确定测试报告。
在本发明中,将训练好的神经网络优化模型应用到实际场景中,得到代码圈复杂度阈值,并以此数据为基础进行代码静态检测分析,获取代码风险预测结果。并基于报告生成模块生成报告,来展示测试数据对比结果,更直观的展示出动态圈复杂度阈值的作用,也为进一步算法改进提供数据参考。
本发明旨在通过机器学习的方法,动态的设定代码圈复杂度阈值,更好的适应不同的项目,场景和人员,从而更好地对可能存在的缺陷进行预测和告警。
图4为根据本发明实施方式的基于机器学习的代码风险预测系统400的结构示意图。如图4所示,本发明实施方式提供的基于机器学习的代码风险预测系统400,包括:样本数据集获取单元401、神经网络模型训练单元402、代码圈复杂度阈值确定单元403和风险预测单元404。
优选地,所述样本数据集获取单元401,用于对不同类型的数据进行采样,并对采集的不同类型的数据进行整合和预处理,以获取样本数据集。
优选地,其中所述样本数据集中的每个样本数据包括:代码行数、代码模块复杂度、开发人员能力度、测试人员能力度和开发人员数量。
优选地,其中所述预处理为数据归一化处理。
优选地,所述神经网络模型训练单元402,用于构建用于确定代码圈复杂度的初始的神经网络模型,基于所述样本数据集和每个样本对应的代码圈复杂度对所述初始的神经网络模型进行训练和优化,以获取用于确定代码圈复杂度的神经网络优化模型。
优选地,其中所述神经网络模型为四层的BP神经网络模型,包括:一个输入层、两个隐藏层和一个输出层;输入层的输入数据为样本数据集中的样本数据,输出层的输出数据为代码圈复杂度阈值,激活函数为Sigmoid函数。
优选地,其中所述神经网络模型训练单元402,基于所述样本数据集和每个样本对应的代码圈复杂度对所述初始的神经网络模型进行训练和优化,以获取用于确定代码圈复杂度的神经网络优化模型,包括:
将所述样本数据集按照预设的比例分为训练数据集和测试数据集,初始化权值为随机值;
将所述训练数据集中的样本数据输入当前的神经网络模型以进行模型训练,在正向传播过程中,从输入层开始根据当前的神经网络模型的权重和激活函数进行计算分析,得到输出的代码圈复杂度,将输出的代码圈复杂度和样本数据对应的代码圈复杂度进行对比确定误差值,并将权值向着减小误差值的方向调整,直至误差值满足预设的误差阈值时,利用所述测试集进行测试,若准确率满足预设的准确率阈值,则确定当前的神经网络模型为用于确定代码圈复杂度的神经网络优化模型,反之,则调整参数重新训练。
优选地,所述代码圈复杂度阈值确定单元403,用于确定目标测试对象,并利用所述神经网络优化模型对所述目标测试对象进行分析,获取所述目标测试对象对应的代码圈复杂度阈值。
优选地,所述风险预测单元404,用于根据所述目标测试对象对应的代码圈复杂度阈值进行代码静态检测分析,获取代码风险预测结果,并根据所述代码风险预测结果确定测试报告。
本发明的实施例的基于机器学习的代码风险预测系统400与本发明的另一个实施例的基于机器学习的代码风险预测方法100相对应,在此不再赘述。
已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。
通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.一种基于机器学习的代码风险预测方法,其特征在于,所述方法包括:
对不同类型的数据进行采样,并对采集的不同类型的数据进行整合和预处理,以获取样本数据集;
构建用于确定代码圈复杂度的初始的神经网络模型,基于所述样本数据集和每个样本对应的代码圈复杂度对所述初始的神经网络模型进行训练和优化,以获取用于确定代码圈复杂度的神经网络优化模型;
确定目标测试对象,并利用所述神经网络优化模型对所述目标测试对象进行分析,获取所述目标测试对象对应的代码圈复杂度阈值;
根据所述目标测试对象对应的代码圈复杂度阈值进行代码静态检测分析,获取代码风险预测结果,并根据所述代码风险预测结果确定测试报告。
2.根据权利要求1所述的方法,其特征在于,所述神经网络模型为四层的BP神经网络模型,包括:一个输入层、两个隐藏层和一个输出层;输入层的输入数据为样本数据集中的样本数据,输出层的输出数据为代码圈复杂度阈值,激活函数为Sigmoid函数。
3.根据权利要求1所述的方法,其特征在于,所述基于所述样本数据集和每个样本对应的代码圈复杂度对所述初始的神经网络模型进行训练和优化,以获取用于确定代码圈复杂度的神经网络优化模型,包括:
将所述样本数据集按照预设的比例分为训练数据集和测试数据集,初始化权值为随机值;
将所述训练数据集中的样本数据输入当前的神经网络模型以进行模型训练,在正向传播过程中,从输入层开始根据当前的神经网络模型的权重和激活函数进行计算分析,得到输出的代码圈复杂度,将输出的代码圈复杂度和样本数据对应的代码圈复杂度进行对比确定误差值,并将权值向着减小误差值的方向调整,直至误差值满足预设的误差阈值时,利用所述测试集进行测试,若准确率满足预设的准确率阈值,则确定当前的神经网络模型为用于确定代码圈复杂度的神经网络优化模型,反之,则调整参数重新训练。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述样本数据集中的每个样本数据包括:代码行数、代码模块复杂度、开发人员能力度、测试人员能力度和开发人员数量。
5.根据权利要求1所述的方法,其特征在于,所述预处理为数据归一化处理。
6.一种基于机器学习的代码风险预测系统,其特征在于,所述系统包括:
样本数据集获取单元,用于对不同类型的数据进行采样,并对采集的不同类型的数据进行整合和预处理,以获取样本数据集;
神经网络模型训练单元,用于构建用于确定代码圈复杂度的初始的神经网络模型,基于所述样本数据集和每个样本对应的代码圈复杂度对所述初始的神经网络模型进行训练和优化,以获取用于确定代码圈复杂度的神经网络优化模型;
代码圈复杂度阈值确定单元,用于确定目标测试对象,并利用所述神经网络优化模型对所述目标测试对象进行分析,获取所述目标测试对象对应的代码圈复杂度阈值;
风险预测单元,用于根据所述目标测试对象对应的代码圈复杂度阈值进行代码静态检测分析,获取代码风险预测结果,并根据所述代码风险预测结果确定测试报告。
7.根据权利要求6所述的系统,其特征在于,所述神经网络模型为四层的BP神经网络模型,包括:一个输入层、两个隐藏层和一个输出层;输入层的输入数据为样本数据集中的样本数据,输出层的输出数据为代码圈复杂度阈值,激活函数为Sigmoid函数。
8.根据权利要求6所述的系统,其特征在于,所述神经网络模型训练单元,基于所述样本数据集和每个样本对应的代码圈复杂度对所述初始的神经网络模型进行训练和优化,以获取用于确定代码圈复杂度的神经网络优化模型,包括:
将所述样本数据集按照预设的比例分为训练数据集和测试数据集,初始化权值为随机值;
将所述训练数据集中的样本数据输入当前的神经网络模型以进行模型训练,在正向传播过程中,从输入层开始根据当前的神经网络模型的权重和激活函数进行计算分析,得到输出的代码圈复杂度,将输出的代码圈复杂度和样本数据对应的代码圈复杂度进行对比确定误差值,并将权值向着减小误差值的方向调整,直至误差值满足预设的误差阈值时,利用所述测试集进行测试,若准确率满足预设的准确率阈值,则确定当前的神经网络模型为用于确定代码圈复杂度的神经网络优化模型,反之,则调整参数重新训练。
9.根据权利要求6至8中任一项所述的系统,其特征在于,所述样本数据集中的每个样本数据包括:代码行数、代码模块复杂度、开发人员能力度、测试人员能力度和开发人员数量。
10.根据权利要求6所述的系统,其特征在于,所述预处理为数据归一化处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011578425.2A CN112711530A (zh) | 2020-12-28 | 2020-12-28 | 一种基于机器学习的代码风险预测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011578425.2A CN112711530A (zh) | 2020-12-28 | 2020-12-28 | 一种基于机器学习的代码风险预测方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112711530A true CN112711530A (zh) | 2021-04-27 |
Family
ID=75545728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011578425.2A Pending CN112711530A (zh) | 2020-12-28 | 2020-12-28 | 一种基于机器学习的代码风险预测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112711530A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860616A (zh) * | 2022-06-07 | 2022-08-05 | 慕思健康睡眠股份有限公司 | 一种代码检测方法、装置、设备和存储介质 |
CN117422306A (zh) * | 2023-10-30 | 2024-01-19 | 广州金财智链数字科技有限公司 | 基于动态神经网络的跨境电商风险控制方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106919373A (zh) * | 2015-12-28 | 2017-07-04 | 北京计算机技术及应用研究所 | 一种程序代码质量评估方法 |
CN107832219A (zh) * | 2017-11-13 | 2018-03-23 | 北京航空航天大学 | 基于静态分析和神经网络的软件故障预测技术的构建方法 |
CN109976998A (zh) * | 2017-12-28 | 2019-07-05 | 航天信息股份有限公司 | 一种软件缺陷预测方法、装置和电子设备 |
CN110580218A (zh) * | 2018-06-08 | 2019-12-17 | 浙江大学 | 软件代码复杂度的检测方法、装置及电子设备 |
-
2020
- 2020-12-28 CN CN202011578425.2A patent/CN112711530A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106919373A (zh) * | 2015-12-28 | 2017-07-04 | 北京计算机技术及应用研究所 | 一种程序代码质量评估方法 |
CN107832219A (zh) * | 2017-11-13 | 2018-03-23 | 北京航空航天大学 | 基于静态分析和神经网络的软件故障预测技术的构建方法 |
CN109976998A (zh) * | 2017-12-28 | 2019-07-05 | 航天信息股份有限公司 | 一种软件缺陷预测方法、装置和电子设备 |
CN110580218A (zh) * | 2018-06-08 | 2019-12-17 | 浙江大学 | 软件代码复杂度的检测方法、装置及电子设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860616A (zh) * | 2022-06-07 | 2022-08-05 | 慕思健康睡眠股份有限公司 | 一种代码检测方法、装置、设备和存储介质 |
CN114860616B (zh) * | 2022-06-07 | 2023-05-19 | 慕思健康睡眠股份有限公司 | 一种代码检测方法、装置、设备和存储介质 |
CN117422306A (zh) * | 2023-10-30 | 2024-01-19 | 广州金财智链数字科技有限公司 | 基于动态神经网络的跨境电商风险控制方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110009171B (zh) | 用户行为模拟方法、装置、设备及计算机可读存储介质 | |
CN107633265B (zh) | 用于优化信用评估模型的数据处理方法及装置 | |
CN109978867A (zh) | 玩具外表质量检测方法及其相关设备 | |
CN112711530A (zh) | 一种基于机器学习的代码风险预测方法及系统 | |
CN109308225B (zh) | 一种虚拟机异常检测方法、装置、设备及存储介质 | |
CN112328869A (zh) | 一种用户贷款意愿的预测方法、装置及计算机系统 | |
CN114913923A (zh) | 针对单细胞染色质开放性测序数据的细胞类型识别方法 | |
CN112507121A (zh) | 客服违规质检方法、装置、计算机设备及存储介质 | |
Żuławiński et al. | Framework for stochastic modelling of long-term non-homogeneous data with non-Gaussian characteristics for machine condition prognosis | |
CN111160667A (zh) | 一种提高食品安全预测模型鲁棒性的方法及装置 | |
CN113822336A (zh) | 一种云硬盘故障预测方法、装置、系统及可读存储介质 | |
CN109978868A (zh) | 玩具外表质量检测方法及其相关设备 | |
CN117373580A (zh) | 基于时序网络实现钛合金产品的性能分析方法及系统 | |
CN117319223A (zh) | 一种基于数字孪生技术的领导驾驶舱可视化方法及系统 | |
JP2019158684A (ja) | 検査システム、識別システム、及び識別器評価装置 | |
WO2019177130A1 (ja) | 情報処理装置および情報処理方法 | |
CN115994093A (zh) | 测试用例推荐方法和装置 | |
CN113902457B (zh) | 房源信息可靠性的评估方法、装置、电子设备及存储介质 | |
CN114860542A (zh) | 趋势预测模型的优化方法、优化装置、电子设备和介质 | |
CN113516398A (zh) | 基于分层抽样的风险设备识别方法、装置及电子设备 | |
CN113011748A (zh) | 推荐效果的评估方法、装置、电子设备及可读存储介质 | |
CN113590484A (zh) | 算法模型服务测试方法、系统、设备及存储介质 | |
CN112036328A (zh) | 银行客户满意度计算方法及装置 | |
Simon | A three-dimensional receiver operator characteristic surface diagnostic metric | |
CN110728615B (zh) | 基于序贯假设检验的隐写分析方法、终端设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |