一种基于深度学习的代码缺陷检测方法及装置制造方法及图纸

技术编号:20484495 阅读:32 留言:0更新日期:2019-03-02 18:49
本发明专利技术涉及一种基于深度学习的代码缺陷检测方法及装置,选取多个代码缺陷检测工具,分别对被检测代码进行检测,相应生成多个检测结果;将所述被检测代码通过预设的转换方法,转换为所述被检测代码的特征向量;所述特征向量包括所述被检测代码的结构特征和语义特征;将所述特征向量分别输入多个所述代码缺陷检测工具各自相对应的评估模型,输出多个所述代码缺陷检测工具分别对所述被检测代码检测缺陷结果的置信度;并结合检测工具对被检测代码的检测结果,可以有效判定代码是否真实存在某种缺陷,能够解决现有代码缺陷检测中误报较高的问题,有效提升代码审查的工作效率。

【技术实现步骤摘要】
一种基于深度学习的代码缺陷检测方法及装置
本专利技术涉及检测
,特别涉及一种基于深度学习的代码缺陷检测方法及装置。
技术介绍
代码缺陷检测应用了代码分析技术,是保证软件质量和可靠性的重要手段。通常将分析方法分为静态分析和动态分析,静态分析方法不需要运行程序,在二进制或源代码层级上对软件的结构,内容进行分析和评价,可以较早地发现程序代码中的缺陷。动态分析方法通过动态分析方法通过运行待测程序以获取和分析程序运行过程中产生的动态信息,以判断其运行时语义性质。在静态分析领域,存在多款开源的静态分析工具,包括FindBugs、JLint和Infer等,也有多款商业化的分析工具,例如Fortify和Coverity等,在实际应用中,这些工具对不同代码缺陷类型的检测能力各不相同,但是难以对其能力进行准确的量化评估,影响了软件评测和审查的工作效率。深度学习是机器学习中一种基于对数据进行表征学习的方法。它通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。近年来,深度学习技术正逐步应用在软件安全和代码分析领域,利用深度学习技术,可以提取代码的结构特征和语义特征进而利本文档来自技高网...

【技术保护点】
1.一种基于深度学习的代码缺陷检测方法,其特征在于,包括:选取多个代码缺陷检测工具,分别对被检测代码进行检测,相应生成多个检测结果;将所述被检测代码通过预设的转换方法,转换为所述被检测代码的特征向量;所述特征向量包括所述被检测代码的结构特征和语义特征;将所述特征向量分别输入多个所述代码缺陷检测工具各自相对应的评估模型,输出多个所述代码缺陷检测工具分别对所述被检测代码检测缺陷结果的置信度;将多个所述检测结果和多个所述置信度,进行加权求和生成预测结果;当所述预测结果大于预设阈值时,确定所述被检测代码存在缺陷。

【技术特征摘要】
1.一种基于深度学习的代码缺陷检测方法,其特征在于,包括:选取多个代码缺陷检测工具,分别对被检测代码进行检测,相应生成多个检测结果;将所述被检测代码通过预设的转换方法,转换为所述被检测代码的特征向量;所述特征向量包括所述被检测代码的结构特征和语义特征;将所述特征向量分别输入多个所述代码缺陷检测工具各自相对应的评估模型,输出多个所述代码缺陷检测工具分别对所述被检测代码检测缺陷结果的置信度;将多个所述检测结果和多个所述置信度,进行加权求和生成预测结果;当所述预测结果大于预设阈值时,确定所述被检测代码存在缺陷。2.如权利要求1所述的方法,其特征在于,将多个所述检测结果和多个所述置信度,进行加权求和生成预测结果,包括:将多个所述检测结果和多个所述置信度,输入以下公式,生成预测结果;其中:P表示预测结果,k表示不同代码缺陷检测工具的数量,t表示代码缺陷检测工具(t∈[1,k]),new表示被检测代码,i表示代码缺陷类别,P(t,new,i)表示不同代码缺陷检测工具的置信度,E(t,new,i)表示不同代码缺陷检测工具的检测结果;当所述代码缺陷检测工具检测的代码new存在缺陷i时,所述E(t,new,i)=1;当所述代码缺陷检测工具检测的代码new不存在缺陷i时,所述E(t,new,i)=-1。3.如权利要求1所述的方法,其特征在于,所述预设阈值,通过以下方式获得:所述预设阈值通过对训练集学习而得;所述训练集为:标记是否存在某种缺陷的代码集合。4.如权利要求1所述的方法,其特征在于,所述预设的转换方法,包括:图算法、代码向量化算法和代码分析方法。5.如权利要求1所述的方法,其特征在于,所述评估模型的生成过程,包括:选择代码缺陷检测工具Tk;获取测试用例C1,C2,…Cj;针对某种代码缺陷Di,获取所述测试用例C1,C2,…Cj的人工标注结果,当测试用例Cj存在缺陷Di时,则标记为L(j,i)=1,否则标记为L(j,i)=0;使用工具Tk对每个测试用例进行测试,并记录每个测试用例的测试结果;当测试用例Cj存在缺陷Di时,测试结果则记为E(k,j,i)=1,否则记为E(k,j,i)=0;将工具Tk的测试结果与所述人工标注结果进行对比,针对每种缺陷,当工具Tk测试结果与人工标注结果相同时,即L(j,i)=E(k,j,i),则表示工具测试正确,记为V(k,j,i)=1;否则表示工具测试错误,即L(j,i)!=E(k,j,i),记为V(k,j,i)=-1,将所有对比结果存储在数据库中;将所述测试用例C1,C2,…Cj转换为对应的特征向量,作为训练数据集;针对缺陷类型Di,将所述对比结果作为相应数据标签进行训练,生成所述工具Tk对于缺陷Di的检测能力评估模型M(k,i)。6.一种基于深度学习的代码缺陷检...

【专利技术属性】
技术研发人员:计卫星高玉金王一拙杨恬石剑君石峰
申请(专利权)人:北京理工大学
类型:发明
国别省市:北京,11

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

1