[发明专利]一种基于机器学习的软件缺陷确认方法有效
申请号: | 201811477275.9 | 申请日: | 2018-12-05 |
公开(公告)号: | CN109726120B | 公开(公告)日: | 2022-03-08 |
发明(设计)人: | 柯文俊;刘悦悦;江山;李雅斯;王坤龙 | 申请(专利权)人: | 北京计算机技术及应用研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06K9/62;G06N20/00 |
代理公司: | 中国兵器工业集团公司专利中心 11011 | 代理人: | 张然 |
地址: | 100854*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 机器 学习 软件 缺陷 确认 方法 | ||
1.一种基于机器学习的软件缺陷确认方法,其特征在于,包括:
步骤一:构建特征向量,包括:
首先逐条提取缺陷代码集中的缺陷代码片段,采用基于切片分析的代码过滤将缺陷代码片段过滤为最小化缺陷代码片段,然后使用语法分析树方法将代码片段转化为抽象语法树,并根据不同的代码规则,选择合适的C语言关键字集组成多行代码的特征矩阵,再依据特征矩阵合并方法,最终得到缺陷代码特征向量集,供后续机器学习使用;
步骤二:基于聚类分析的缺陷代码知识库构建,包括:
以缺陷代码特征向量集作为数据集输入,聚类集成;对一个数据集进行聚类集成,首先要产生多个聚类结果,然后对这些聚类进行集成;包括进行多个聚类结果收集以及多个聚类结果集成;形成缺陷代码知识库样本;
步骤三:基于监督学习的缺陷代码确认,包括:
以获得的缺陷代码知识库样本为输入,构建多类分类器并用测试样本判断分类器是否满足评价指标;若不满足评价指标,引入代价函数对分类器进行迭代优化直至满足指标。
2.如权利要求1所述的基于机器学习的软件缺陷确认方法,其特征在于,基于切片分析的代码过滤包括:采用静态切片方法对缺陷代码进行切片分析,首先从一段缺陷代码片段中提取出对应的一组关注变量,然后根据静态后向切片准则,过滤掉无关性代码,提取源代码中对关注的这组变量值有影响的语句,组成新的代码片段,得到与该变量值相关的最小化缺陷代码片段。
3.如权利要求2所述的基于机器学习的软件缺陷确认方法,其特征在于,根据静态后向切片准则,采用基于系统依赖图的静态切片算法,实现基于切片分析的代码过滤。
4.如权利要求2所述的基于机器学习的软件缺陷确认方法,其特征在于,基于语法分析树的特征向量构建,包括:
建立语法分析树,包括:
针对抽取的最小化缺陷代码片段集,根据不同规则的关键字,进行代码到语法分析树的映射,语法分析树采用树的形式表达源代码语法以及语义结构逻辑信息,一棵子树表示一段连续的源代码,每段代码被解析成由多种类型的节点构成的语法分析树,建立代码特征矩阵和特征向量;
通过统计各相关节点在语法分析树中出现的次数,以构造相应的特征矩阵,对于目标代码片段,需要分别生成关注点上下文的不同特征向量以构建特征矩阵;特征矩阵生成包括:对整棵树进行一次后续遍历操作生成某些节点的特征矩阵;并进行特征矩阵合并。
5.如权利要求1所述的基于机器学习的软件缺陷确认方法,其特征在于,聚类集成过程包括:假设数据集X有n个数据对象,X={x1,x2,...,xn},首先对数据集X使用N次聚类算法,得到N个聚类,P={P1,P2,...,PN},其中Pi(i=1,2,3,...,N)为第i次聚类算法得到的聚类结果,通过一致性函数T对P中的聚类结果进行集成得到一个新的数据划分P’。
6.如权利要求1所述的基于机器学习的软件缺陷确认方法,其特征在于,基于缺陷代码知识库的缺陷分类器构建包括:在步骤一和步骤二中将缺陷代码根据提取的特征向量进行聚类分析,得到带有标记类别的缺陷代码知识库样本,缺陷代码分类器的构造将样本知识库分为训练样本和测试样本两类,训练样本作为学习算法输入对分类器进行学习;测试样本作为分类器检验的输入以评估分类器是否满足相应指标。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京计算机技术及应用研究所,未经北京计算机技术及应用研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811477275.9/1.html,转载请声明来源钻瓜专利网。