CN112597038B - 软件缺陷预测方法及系统 - Google Patents

软件缺陷预测方法及系统 Download PDF

Info

Publication number
CN112597038B
CN112597038B CN202011580379.XA CN202011580379A CN112597038B CN 112597038 B CN112597038 B CN 112597038B CN 202011580379 A CN202011580379 A CN 202011580379A CN 112597038 B CN112597038 B CN 112597038B
Authority
CN
China
Prior art keywords
software
defect
training
data
training sample
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.)
Active
Application number
CN202011580379.XA
Other languages
English (en)
Other versions
CN112597038A (zh
Inventor
刘影
郭栋
周进登
张泽奇
孙凤丽
杨隽
杨昕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Aerospace Academy Of Systems Science And Engineering
Original Assignee
China Aerospace Academy Of Systems Science And Engineering
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Aerospace Academy Of Systems Science And Engineering filed Critical China Aerospace Academy Of Systems Science And Engineering
Priority to CN202011580379.XA priority Critical patent/CN112597038B/zh
Publication of CN112597038A publication Critical patent/CN112597038A/zh
Application granted granted Critical
Publication of CN112597038B publication Critical patent/CN112597038B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3628Software debugging of optimised code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种软件缺陷预测方法方法及系统,其中,该方法包括:数据获取步骤,用于获取软件历史仓库、缺陷分析报告及待测软件;训练样本获取步骤,用于结合所述软件历史仓库及缺陷分析报告对软件源码是否存在缺陷进行标记构造第一训练样本集,并对存在缺陷的所述软件源码标记源码段对应的缺陷类型构造第二训练样本集;模型预训练步骤,用于构建软件缺陷倾向性分类器及缺陷类型预测模型,并利用所述第一训练样本集及第二训练样本集进行训练构建软件缺陷预测模型;软件缺陷预测步骤,用于将所述待测软件利用软件缺陷预测模型进行软件缺陷预测。通过本申请,可以有效利用源码语法语义信息,缩小缺陷预测的细粒度,还可预测缺陷类型。

Description

软件缺陷预测方法及系统
技术领域
本申请涉及软件缺陷预测技术领域,特别是涉及基于深度学习的软件缺陷预测方法及系统。
背景技术
随着计算机技术日益发展,软件应用在各个领域,如军事装备、航空航天以及人们的日常业务和活动中的影响越来越大,同时,软件功能的多样化与复杂化让软件的规模和结构复杂度不断提高,从而导致的潜在缺陷数量与种类也不断增多,带有缺陷的软件在运行中引起失效轻则会增加开发和维护成本,降低客户满意度,重则将带来无法预料的结果和重大的损失。使用传统的软件测试方法在大型软件密集项目上通过人工审查每个模块的代码来查找软件缺陷需要较高的成本,并且将影响项目进程。
传统软件缺陷预测是从软件历史仓库中提取相关记录(软件度量元)来预测当前软件模块的缺陷倾向性。即传统缺陷预测技术可以对软件各个模块的缺陷数量,缺陷概率做出预测,进行排名,通过该排名列表可以反映代码检查或单元测试的优先级。传统软件缺陷预测技术主要从文件、模块或包的层级来进行预测。例如,一个软件缺陷预测模型可以预测一个巨大的文件有缺陷,但是对于开发人员来说,搜索所有的项目文件来找到缺陷是一个非常耗时和耗费精力的项目。
传统的缺陷预测技术主要通过软件的一些度量元,如行数、词频数、复杂度度量等来构造预测模型,但是往往忽略了语法和语义方面的捕捉,这样一来会使得某些情况下设计特性不能够准确反映出源代码的缺陷,另一方面主要集中在对软件项目中的文件、模块、包等粗粒度对象进行预测,无法提供具体的缺陷信息,如缺陷类型,以及目前工作的缺陷预测粒度基本都在函数级,粒度太粗导致无法定位缺陷的具体位置。该类信息对于开发者很重要,它们能够指导开发者快速定位缺陷位置,及时修补缺陷。这在代码片段过长(例如,数十行,数百行代码等)时显得尤为重要,但该问题一直未得到有效解决,给开发人员和代码审核人员带来了极大的困难。因而限制了相关技术在真实软件中应用。
发明内容
本申请实施例提供了一种软件缺陷预测方法方法及系统,本申请实施例对比传统软件缺陷方法不仅可以有效利用源码语法语义信息,缩小缺陷预测的细粒度,还可预测缺陷类型。
第一方面,本申请实施例提供了一种软件缺陷预测方法,包括:
数据获取步骤,用于获取软件历史仓库、缺陷分析报告及待测软件;
训练样本获取步骤,用于通过对所述软件历史仓库中的软件源码根据设定软件度量元进行度量抽取后利用所述缺陷分析报告标记是否存在缺陷构造第一训练样本集,并通过对存在缺陷的所述软件源码进行解析、提取源码切片及标记源码段对应的缺陷类型构造第二训练样本集;
模型预训练步骤,用于构建一软件缺陷倾向性分类器及一缺陷类型预测模型,并利用所述第一训练样本集及第二训练样本集分别对所述软件缺陷倾向性分类器及所述缺陷类型预测模型进行模型训练及参数调整,利用经训练及参数调整的所述软件缺陷倾向性分类器及所述缺陷类型预测模型构建软件缺陷预测模型;
软件缺陷预测步骤,用于将所述待测软件经度量后利用所述软件缺陷倾向性分类器预测得到所述待测软件中程序模块是否存在缺陷,并将存在缺陷的代码模块经切片处理并转换为向量后利用所述缺陷类型预测模型预测得到所述待测软件中程序模块的缺陷类型及缺陷位置信息。
在其中一些实施例中,所述训练样本获取步骤进一步包括:
第一训练样本集获取步骤,用于利用所述缺陷分析报告获取缺陷分布记录并根据所述缺陷分布记录以不同细粒度采集软件源码,得到若干程序模块;根据一设定软件度量元对若干所述程序模块中的软件源码进行度量,并根据所述缺陷分析报告标记所述程序模块是否存在缺陷,构建得到第一训练样本集;具体的,所述第一训练样本集中的样本是由多个特征值组成的向量;其中,所述设定软件度量元用于对软件中的模块属性的定量分析,定量衡量模块的规模、复杂度以及模块与模块之间的关系,具体的,本申请实施例的度量过程考虑但不限于软件的规模度量、复杂性度量、Halstead软件科学法度量和McCabe度量法其一或其任意组合。
第二训练样本集获取步骤,用于对存在缺陷的所述程序模块进行解析获取所述软件源码的数据依赖图、控制依赖图与抽象语法树,并根据所述数据依赖图、控制依赖图与抽象语法树对所述软件源码进行切片得到若干源码段,并根据所述缺陷分布记录标记所述源码段对应的缺陷类型,若无缺陷则标注0,有缺陷标注对应的缺陷序号,构建得到第二训练样本集。
在其中一些实施例中,所述第一训练样本集获取步骤还包括:删除重复、矛盾的数据,并对缺陷中缺少的特性信息进行补充。
在其中一些实施例中,所述第二训练样本集获取步骤还包括:对程序模块进行解析后,过滤源码中的非ASCII字符,举例而非限制,如提示性文字或汉字。
在其中一些实施例中,所述模型预训练步骤进一步包括:
软件缺陷倾向性分类器预训练步骤,用于构建一基于BP神经网络的软件缺陷倾向性分类器,并利用所述第一训练样本集进行训练,得到预测结果最优的软件缺陷倾向性分类器;
缺陷类型预测模型预训练步骤,用于构建一缺陷类型特征学习器,并将所述第二训练样本转换为向量后输入所述缺陷类型特征学习器进行模型训练,将训练结果经一多分类器进行分类,得到预测结果最优的缺陷类型预测模型。具体的,所述缺陷类型特征学习器为基于双向长短时记忆神经网络(Bi-LSTM)构建得到的,所述多分类器为基于softmax层构建得到的。
在其中一些实施例中,软件缺陷预测步骤进一步包括:
缺陷预测步骤,对所述待测软件根据所述设定度量元进行度量并经软件缺陷倾向性分类器,识别得到存在缺陷的待测软件中程序模块;
缺陷类型预测步骤,获取所述待测软件的抽象语法树及关注节点,根据所述抽象语法树生成数据依赖图及控制依赖图后,结合所述关注节点、数据依赖图及控制依赖图对所述待测软件的源码进行切片、标记及向量表示,并利用所述缺陷类型预测模型得到所述待测软件的缺陷类型及其位置信息。进一步的,所述关注节点进一步包括:API调用、运算符使用、跳转、数组创建与引用、指针引用、实例创建。
在其中一些实施例中,所述第二训练样本集获取步骤进一步包括:
抽象语法树获取步骤,用于利用Clang工具解析所述软件源码获取所述软件源码对应的抽象语法树;
图结果获取步骤,用于通过所述抽象语法树分析所述软件源码中每条语句的自定义变量和自定义函数,使用标识符分别按顺序替换自定义变量和自定义函数,生成数据依赖图、控制依赖图;
数据切片步骤,用于根据所述关注节点结合所述数据依赖图、控制依赖图对所述软件源码进行切片,切片过程中保留每行源码在原文件中的行数,以确认其位置信息;
数据标记步骤,根据所述缺陷分布记录标记所述源码段对应的缺陷类型,若无缺陷则标注0,有缺陷标注对应的缺陷序号。
在其中一些实施例中,所述软件缺陷倾向性分类器预训练步骤进一步包括:
数据采样步骤,用于利用SMOTE上采样算法(全称the Synthetic MinorityOversampling Technique)对所述第一训练样本集进行数据采样,得到采样数据;
数据清洗步骤,用于将所述采样数据利用ENN数据清洗策略(Edited NearestNeighbor)进行数据清洗,得到清洗后数据;
数据训练步骤,用于将所述清洗后数据输入所述软件缺陷倾向性分类器进行训练,具体的,所述软件缺陷倾向性分类器为利用模拟退火算法改进的四层BP神经网络。
在其中一些实施例中,所述缺陷类型预测模型预训练步骤进一步包括:
语料库获取步骤,将所述源码段转换成Token语料以构建一语料库;
词向量库获取步骤,用于利用一词嵌入网络将所述语料库中的Token语料转换为词向量以构建一词向量库;
向量矩阵获取步骤,用于基于所述词向量库将所述源码段转换为向量矩阵。
模型训练步骤,用于将所述向量矩阵输入所述缺陷类型特征学习器进行训练,并将训练结果经所述多分类器进行训练,得到所述缺陷类型预测模型。
在其中一些实施例中,所述缺陷预测步骤进一步包括:
程序模块获取步骤,基于软件开发过程中的文档资料和程序代码抽取所述待测软件中程序模块;
度量元获取步骤,用于根据所述设定度量元解析所述待测软件源代码得到所述待测软件中程序模块的度量元数据;
缺陷倾向性预测步骤,用于将所述度量元数据输入所述软件缺陷倾向性分类器中进行缺陷倾向性预测,得到存在缺陷的待测软件中程序模块。
在其中一些实施例中,所述缺陷类型预测步骤进一步包括:
数据预处理步骤,用于去除所述存在缺陷的待测软件中程序模块的非ASCII字符,并顺序替换自定义变量和自定义函数;
数据切片获取步骤,用于对经所述数据预处理步骤的所述存在缺陷的待测软件中程序模块进行解析得到其控制依赖关系及数据依赖关系,并基于所述控制依赖关系及数据依赖关系对所述程序模块进行切片处理,得到数据切片;
切片向量表示步骤,用于利用Word2Vec模型将所述数据切片表示为可输入神经网络的数据切片向量;
类型预测步骤,用于将所述数据切片向量输入所述缺陷类型预测模型进行预测,得到所述程序模块的缺陷类型及缺陷的位置信息。
第二方面,本申请实施例提供了一种执行如上述第一方面所述的软件缺陷预测方法的软件缺陷预测系统,包括:
数据获取模块,用于获取软件历史仓库、缺陷分析报告及待测软件;
训练样本获取模块,用于通过对所述软件历史仓库中的软件源码根据设定软件度量元进行度量抽取后利用所述缺陷分析报告标记是否存在缺陷构造第一训练样本集,并通过对存在缺陷的所述软件源码进行解析、提取源码切片及标记源码段对应的缺陷类型构造第二训练样本集;
模型预训练模块,用于构建一软件缺陷倾向性分类器及一缺陷类型预测模型,并利用所述第一训练样本集及第二训练样本集分别对所述软件缺陷倾向性分类器及所述缺陷类型预测模型进行模型训练及参数调整,利用经训练及参数调整的所述软件缺陷倾向性分类器及所述缺陷类型预测模型构建软件缺陷预测模型;
软件缺陷预测模块,用于将所述待测软件经度量后利用所述软件缺陷倾向性分类器预测得到所述待测软件中程序模块是否存在缺陷,并将存在缺陷的代码模块经切片处理并转换为向量后利用所述缺陷类型预测模型预测得到所述待测软件中程序模块的缺陷类型及缺陷位置信息。
相比于相关技术,本申请实施例提供的软件缺陷预测方法方法及系统,通过预测软件可能存在缺陷数量与类型分布可辅助软件开发、测试快速定位软件缺陷,适用于辅助软件测试过程以及评价发布时软件是否满足缺陷控制的要求。对比传统软件缺陷预测,本申请实施例中细粒度可以根据实际应用,可设置为函数、类、文件、包等;基于源码语义数据可更有效地捕捉到源代码中的语义信息,有效提高缺陷预测的漏报和误报率;通过特征学习及多分类器后预测结果为代码段的缺陷类型。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的软件缺陷预测方法的流程图;
图2是根据本申请实施例的软件缺陷预测方法步骤S22的分步骤流程图;
图3是根据本申请实施例的软件缺陷预测方法步骤S31的分步骤流程图;
图4是根据本申请实施例的软件缺陷预测方法步骤S32的分步骤流程图;
图5是根据本申请实施例的软件缺陷预测方法步骤S41的分步骤流程图;
图6是根据本申请实施例的软件缺陷预测方法步骤S42的分步骤流程图;
图7是根据本申请实施例的软件缺陷预测系统的结构框图;
图8是根据本申请优选实施例的软件缺陷预测方法的流程图;
图9是根据本申请优选实施例的步骤S521及步骤S61~63流程原理图;
图10是根据本申请优选实施例的软件缺陷倾向性分类器的构建流程图;
图11是根据本申请优选实施例的步骤S522及步骤S65~步骤67的流程原理图;
图12是根据本申请优选实施例的步骤S512与步骤S65的流程原理图。
附图说明:
1、数据获取模块;2、训练样本获取模块;3、模型预训练模块;4、软件缺陷预测模块。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本实施例提供了一种软件缺陷预测方法。图1是根据本申请实施例的软件缺陷预测方法的流程图,如图1所示,该流程包括如下步骤:
数据获取步骤S1,用于获取软件历史仓库、缺陷分析报告及待测软件;
训练样本获取步骤S2,用于通过对软件历史仓库中的软件源码根据设定软件度量元进行度量抽取后利用缺陷分析报告标记是否存在缺陷构造第一训练样本集,并通过对存在缺陷的软件源码进行解析、提取源码切片及标记源码段对应的缺陷类型构造第二训练样本集;具体的,训练样本获取步骤S2进一步包括:
第一训练样本集获取步骤S21,用于利用缺陷分析报告获取缺陷分布记录并根据缺陷分布记录以不同细粒度采集软件源码,得到若干程序模块,可选的,所述细粒度可根据实际应用设置为函数、类、文件、包;根据一设定软件度量元对若干程序模块中的软件源码进行度量,并根据缺陷分析报告标记程序模块是否存在缺陷,构建得到第一训练样本集;具体的,第一训练样本集中的样本是由多个特征值组成的向量;其中,设定软件度量元用于对软件中的模块属性的定量分析,定量衡量模块的规模、复杂度以及模块与模块之间的关系,具体的,本申请实施例的度量过程考虑但不限于软件的规模度量、复杂性度量、Halstead软件科学法度量和McCabe度量法其一或其任意组合。
第二训练样本集获取步骤S22,用于对存在缺陷的程序模块进行解析获取软件源码的数据依赖图、控制依赖图与抽象语法树,并根据数据依赖图、控制依赖图与抽象语法树对软件源码进行切片得到若干源码段,并根据缺陷分布记录标记源码段对应的缺陷类型,若无缺陷则标注0,有缺陷标注对应的缺陷序号,构建得到第二训练样本集。
模型预训练步骤S3,用于构建一软件缺陷倾向性分类器及一缺陷类型预测模型,并利用第一训练样本集及第二训练样本集分别对软件缺陷倾向性分类器及缺陷类型预测模型进行模型训练及参数调整,利用经训练及参数调整的软件缺陷倾向性分类器及缺陷类型预测模型构建软件缺陷预测模型;具体的,模型预训练步骤S3进一步包括:
软件缺陷倾向性分类器预训练步骤S31,用于构建一基于BP神经网络的软件缺陷倾向性分类器,并利用第一训练样本集进行训练,得到预测结果最优的软件缺陷倾向性分类器;
缺陷类型预测模型预训练步骤S32,用于构建一缺陷类型特征学习器,并将第二训练样本转换为向量后输入缺陷类型特征学习器进行模型训练,将训练结果经一多分类器进行分类,得到预测结果最优的缺陷类型预测模型。具体的,缺陷类型特征学习器为基于双向长短时记忆神经网络(Bi-LSTM)构建得到的,多分类器为基于softmax层构建得到的。
通过上述预训练步骤,利用双向长短时记忆神经网络给普通多层神经网络增加了隐藏层各个单元间的横向联系,通过权重矩阵,神经单元的值在前面的时间序列可以被转移到当前神经单元,从而获取当前数据之间的一些关联信息从而具有神经网络记忆功能。
软件缺陷预测步骤S4,用于将待测软件经度量后利用软件缺陷倾向性分类器预测得到待测软件中程序模块是否存在缺陷,并将存在缺陷的代码模块经切片处理并转换为向量后利用缺陷类型预测模型预测得到待测软件中程序模块的缺陷类型及缺陷位置信息。具体的,软件缺陷预测步骤S4进一步包括:
缺陷预测步骤S41,对待测软件根据设定度量元进行度量并经软件缺陷倾向性分类器,识别得到存在缺陷的待测软件中程序模块;
缺陷类型预测步骤S42,获取待测软件的抽象语法树及关注节点,根据抽象语法树生成数据依赖图及控制依赖图后,结合关注节点、数据依赖图及控制依赖图对待测软件的源码进行切片、标记及向量表示,并利用缺陷类型预测模型得到待测软件的缺陷类型及其位置信息。进一步的,关注节点进一步包括:API调用、运算符使用、跳转、数组创建与引用、指针引用、实例创建。
基于上述步骤,本申请实施例有效地捕捉到源代码中的语义信息,可在缺陷预测过程中有效降低缺陷漏报率和误报率,并提供代码段级的位置信息与缺陷类型信息。
在其中一些实施例中,第二训练样本集获取步骤S22进一步包括:
抽象语法树获取步骤S221,用于利用Clang工具解析软件源码获取软件源码对应的抽象语法树;
图结果获取步骤S222,用于通过抽象语法树分析软件源码中每条语句的自定义变量和自定义函数,使用标识符分别按顺序替换自定义变量和自定义函数,生成数据依赖图、控制依赖图;
数据切片步骤S223,用于根据关注节点结合数据依赖图、控制依赖图对软件源码进行切片,切片过程中保留每行源码在原文件中的行数,以确认其位置信息;具体的,定位数据依赖图、控制依赖图中关注节点的节点位置,并获取与关注节点存在控制依赖关系及数据依赖关系的全部语句,对源码进行切片;
数据标记步骤S224,根据缺陷分布记录标记源码段对应的缺陷类型,若无缺陷则标注0,有缺陷标注对应的缺陷序号。
在其中一些实施例中,软件缺陷倾向性分类器预训练步骤S31进一步包括:
数据采样步骤S311,用于利用SMOTE上采样算法对第一训练样本集进行数据采样,得到采样数据,以增加少数类样本以改善项目中的数据不平衡状况;
数据清洗步骤S312,用于将采样数据利用ENN数据清洗策略进行数据清洗,得到清洗后数据;
数据训练步骤S313,用于将清洗后数据输入软件缺陷倾向性分类器进行训练,具体的,软件缺陷倾向性分类器为利用模拟退火算法改进的四层BP神经网络。
在其中一些实施例中,缺陷类型预测模型预训练步骤S32进一步包括:
语料库获取步骤S321,将源码段转换成Token语料以构建一语料库;
词向量库获取步骤S322,用于利用一词嵌入网络将语料库中的Token语料转换为词向量以构建一词向量库;
向量矩阵获取步骤S323,用于基于词向量库将源码段转换为向量矩阵。
模型训练步骤S324,用于将向量矩阵输入缺陷类型特征学习器进行训练,并将训练结果经多分类器进行训练,得到缺陷类型预测模型;训练过程中调整的参数具体包括:隐藏层数、隐藏层节点数、网络层数、学习率、批次大小。具体的,利用穷举搜索调整Bi-LSTM的隐藏层数,以得到模型参数最优解。
在其中一些实施例中,缺陷预测步骤S41进一步包括:
程序模块获取步骤S411,基于软件开发过程中的文档资料和程序代码抽取待测软件中程序模块,可按照实际软件功能应用选择抽取的细粒度;
度量元获取步骤S412,用于根据设定度量元解析待测软件源代码得到待测软件中程序模块的度量元数据;
缺陷倾向性预测步骤S413,用于将度量元数据输入软件缺陷倾向性分类器中进行缺陷倾向性预测,得到存在缺陷的待测软件中程序模块。
在其中一些实施例中,缺陷类型预测步骤S42进一步包括:
数据预处理步骤S421,用于去除存在缺陷的待测软件中程序模块的非ASCII字符,并顺序替换自定义变量和自定义函数;
数据切片获取步骤S422,用于对经数据预处理步骤的存在缺陷的待测软件中程序模块进行解析得到其控制依赖关系及数据依赖关系,并基于控制依赖关系及数据依赖关系对程序模块进行切片处理,得到数据切片;
切片向量表示步骤S423,用于利用Word2Vec模型将数据切片表示为可输入神经网络的数据切片向量;
类型预测步骤S424,用于将数据切片向量输入缺陷类型预测模型进行预测,得到程序模块的缺陷类型及缺陷的位置信息。
下面通过优选实施例对本申请实施例进行描述和说明。
图8是根据本申请优选实施例的软件缺陷预测方法的流程图,图9是根据本申请优选实施例的步骤S521及步骤S61~63流程原理图,图11是根据本申请优选实施例的步骤S522及步骤S65~步骤67流程原理图,参考图8-9及图11所示,该方法主要包括两个阶段:模型训练阶段S5及预测阶段S6,其中,训练阶段S5进一步包括:
训练样本收集步骤S51,具体的,步骤S51进一步包括:
步骤S511,依据设定的软件度量元对软件历史仓库中的软件源码进行度量并标记是否存在缺陷,构造第一训练样本集;
步骤S512,解析存在缺陷的源码,经切片提取源码段,依据软件缺陷分布记录标记源码段对应的缺陷类型,若无缺陷则标注0,有缺陷标注对应的缺陷序号,构造第二训练样本集。
模型预训练步骤S52,具体的,步骤S52进一步包括:
步骤S521:利用第一训练样本集训练软件缺陷倾向性分类器,根据训练结果进行参数调整;步骤S521进一步包括:(1)采用SMOTE算法对第一训练样本集进行采样;(2)使用ENN对采样数据进行数据清洗,并将经过上述采样及数据清洗预处理后的特征数据和数据标签采用十折交叉法划分为一系列不同的平衡子集;(3)输入模拟退火算法改进四层BP神经网络后建立的软件缺陷倾向性分类器训练,图10示出了本申请实施例的软件缺陷倾向性分类器的构建流程图,主要包括构建一个四层BP神经网络,初始化网络中各层的权值。然后,利用模拟退火算法对权值进行调整,以避免局部最优解的出现。
步骤S522:将第二训练样本集经向量化表达后训练缺陷类型预测模型,该缺陷类型预测模型包括由双向长短时记忆神经网络构成的缺陷类型特征学习器及一由softmax层构成的多分类器,训练过程结合分类器分类指标采用穷举搜索调整隐藏层数,得到参数最优值。结合步骤S521及S522的训练结果调整网络参数,得到训练完备的基于深度学习的软件缺陷预测模型。进一步包括:将源码段转换成Token语料以构建一语料库;再用于利用一词嵌入网络Word2Vec将语料库中的Token语料转换为词向量以构建一词向量库;基于词向量库将源码段转换为向量矩阵;将向量矩阵输入缺陷类型特征学习器进行训练,并将训练结果经多分类器进行训练,得到缺陷类型预测模型。
预测阶段S6进一步包括:
步骤S61,基于软件开发过程中的文档资料和程序代码抽取待测软件中程序模块;
步骤S62,依据设定的软件度量元对待测软件模块进行度量;
步骤S63,将步骤S62得到的度量数据输入软件缺陷倾向性分类器;
步骤S64,将步骤S63得到的标记有缺陷的程序模型的源码进行处理,去除非ASCII字符,顺序替换自定义变量和自定义函数;
步骤S65,抽取程序模块的数据依赖图、控制依赖图与抽象语法树;针对图中的关注节点对程序模块的源码进行切片;
步骤S66,采用word2vec方法将切片后的代码进行向量转化,转化为向量矩阵;
步骤S67,将步骤S66得到的切片向量表示输入缺陷类型预测模型分析切片向量表示中的程序模块存在的缺陷类型;
经过上述步骤S61~S67,最终得到待测软件模块是否包含缺陷以及包含的缺陷的缺陷类型以及位置信息。
图12是根据本申请优选实施例的步骤S512与步骤S65的流程原理图,参考图12所示,步骤S512具体步骤如下:输入采集的源码,即为存在缺陷的源码,利用Clang工具解析源码生成对应的抽象语法树并依据抽象语法树抽取源码的数据依赖图、控制依赖图;依据关注节点和数据依赖图、控制依赖图定位关注节点位置;抽取源码上下文与该关注节点有控制依赖与数据依赖的全部语句,以实现对源码进行切片;切片过程中保留每行源码在原文件中的行数信息;最后,依据软件缺陷分布记录标记源码段对应的缺陷类型,若无缺陷则标注0,有缺陷标注对应的缺陷序号。步骤S65与步骤S512同理,相同之处不再赘述。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种软件缺陷预测系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是根据本申请实施例的软件缺陷预测系统的结构框图,如图7所示,该系统包括:数据获取模块1,用于获取软件历史仓库、缺陷分析报告及待测软件;训练样本获取模块2,用于通过对软件历史仓库中的软件源码根据设定软件度量元进行度量抽取后利用缺陷分析报告标记是否存在缺陷构造第一训练样本集,并通过对存在缺陷的软件源码进行解析、提取源码切片及标记源码段对应的缺陷类型构造第二训练样本集;模型预训练模块3,用于构建一软件缺陷倾向性分类器及一缺陷类型预测模型,并利用第一训练样本集及第二训练样本集分别对软件缺陷倾向性分类器及缺陷类型预测模型进行模型训练及参数调整,利用经训练及参数调整的软件缺陷倾向性分类器及缺陷类型预测模型构建软件缺陷预测模型;软件缺陷预测模块4,用于将待测软件经度量后利用软件缺陷倾向性分类器预测得到待测软件中程序模块是否存在缺陷,并将存在缺陷的代码模块经切片处理并转换为向量后利用缺陷类型预测模型预测得到待测软件中程序模块的缺陷类型及缺陷位置信息。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (6)

1.一种软件缺陷预测方法,其特征在于,包括:
数据获取步骤,用于获取软件历史仓库、缺陷分析报告及待测软件;
训练样本获取步骤,用于通过对所述软件历史仓库中的软件源码根据设定软件度量元进行度量抽取后利用所述缺陷分析报告标记是否存在缺陷构造第一训练样本集,并通过对存在缺陷的所述软件源码进行解析、提取源码切片及标记源码段对应的缺陷类型构造第二训练样本集;所述训练样本获取步骤进一步包括:
第一训练样本集获取步骤,用于利用所述缺陷分析报告获取缺陷分布记录并根据所述缺陷分布记录以不同细粒度采集软件源码,得到若干程序模块;
根据一设定软件度量元对若干所述程序模块中的软件源码进行度量,并根据所述缺陷分析报告标记所述程序模块是否存在缺陷,构建得到第一训练样本集;
第二训练样本集获取步骤,用于对存在缺陷的所述程序模块进行解析获取所述软件源码的数据依赖图、控制依赖图与抽象语法树,并根据所述数据依赖图、控制依赖图与抽象语法树对所述软件源码进行切片得到若干源码段,并根据所述缺陷分布记录标记所述源码段对应的缺陷类型,构建得到第二训练样本集;所述第二训练样本集获取步骤进一步包括:
抽象语法树获取步骤,用于利用Clang工具解析所述软件源码获取所述软件源码对应的抽象语法树;
图结果获取步骤,用于通过所述抽象语法树分析所述软件源码中每条语句的自定义变量和自定义函数,使用标识符分别按顺序替换自定义变量和自定义函数,生成数据依赖图、控制依赖图;
数据切片步骤,用于根据关注节点结合所述数据依赖图、控制依赖图对所述软件源码进行切片,切片过程中保留每行源码在原文件中的行数,以确认其位置信息;
数据标记步骤,根据所述缺陷分布记录标记所述源码段对应的缺陷类型,若无缺陷则标注0,有缺陷标注对应的缺陷序号;
模型预训练步骤,用于构建一软件缺陷倾向性分类器及一缺陷类型预测模型,并利用所述第一训练样本集及第二训练样本集分别对所述软件缺陷倾向性分类器及所述缺陷类型预测模型进行模型训练及参数调整,利用经训练及参数调整的所述软件缺陷倾向性分类器及所述缺陷类型预测模型构建软件缺陷预测模型;
软件缺陷预测步骤,用于将所述待测软件经度量后利用所述软件缺陷倾向性分类器预测得到所述待测软件中程序模块是否存在缺陷,并将存在缺陷的代码模块经切片处理并转换为向量后利用所述缺陷类型预测模型预测得到所述待测软件中程序模块的缺陷类型及缺陷位置信息;软件缺陷预测步骤进一步包括:
缺陷预测步骤,对所述待测软件根据所述设定软件度量元进行度量并经软件缺陷倾向性分类器,识别得到存在缺陷的待测软件中程序模块;
缺陷类型预测步骤,获取所述待测软件的抽象语法树及关注节点,根据所述抽象语法树生成数据依赖图及控制依赖图后,结合所述关注节点、数据依赖图及控制依赖图对所述待测软件的源码进行切片、标记及向量表示,并利用所述缺陷类型预测模型得到所述待测软件的缺陷类型及其位置信息;所述缺陷类型预测步骤进一步包括:
数据预处理步骤,用于去除所述存在缺陷的待测软件中程序模块的非ASCII字符,并顺序替换自定义变量和自定义函数;
数据切片获取步骤,用于对经所述数据预处理步骤的所述存在缺陷的待测软件中程序模块进行解析得到其控制依赖关系及数据依赖关系,并基于所述控制依赖关系及数据依赖关系对所述程序模块进行切片处理,得到数据切片;
切片向量表示步骤,用于将所述数据切片表示为数据切片向量;
类型预测步骤,用于将数据切片向量输入所述缺陷类型预测模型进行预测,得到所述程序模块的缺陷类型及缺陷的位置信息。
2.根据权利要求1所述的软件缺陷预测方法,其特征在于,所述模型预训练步骤进一步包括:
软件缺陷倾向性分类器预训练步骤,用于构建一基于BP神经网络的软件缺陷倾向性分类器,并利用所述第一训练样本集进行训练,得到预测结果最优的软件缺陷倾向性分类器;
缺陷类型预测模型预训练步骤,用于构建一缺陷类型特征学习器,并将所述第二训练样本集转换为向量后输入所述缺陷类型特征学习器进行模型训练,将训练结果经一多分类器进行分类,得到预测结果最优的缺陷类型预测模型。
3.根据权利要求2所述的软件缺陷预测方法,其特征在于,所述软件缺陷倾向性分类器预训练步骤进一步包括:
数据采样步骤,用于利用SMOTE上采样算法对所述第一训练样本集进行数据采样,得到采样数据;
数据清洗步骤,用于将所述采样数据利用ENN数据清洗策略进行数据清洗,得到清洗后数据;
数据训练步骤,用于将所述清洗后数据输入所述软件缺陷倾向性分类器进行训练。
4.根据权利要求2所述的软件缺陷预测方法,其特征在于,所述缺陷类型预测模型预训练步骤进一步包括:
语料库获取步骤,将所述源码段转换成Token语料以构建一语料库;
词向量库获取步骤,用于利用一词嵌入网络将所述语料库中的Token语料转换为词向量以构建一词向量库;
向量矩阵获取步骤,用于基于所述词向量库将所述源码段转换为向量矩阵;
模型训练步骤,用于将所述向量矩阵输入所述缺陷类型特征学习器进行训练,并将训练结果经所述多分类器进行训练,得到所述缺陷类型预测模型。
5.根据权利要求1所述的软件缺陷预测方法,其特征在于,所述缺陷预测步骤进一步包括:
程序模块获取步骤,基于软件开发过程中的文档资料和程序代码抽取所述待测软件中程序模块;
度量元获取步骤,用于根据所述设定软件度量元解析所述待测软件源代码得到所述待测软件中程序模块的度量元数据;
缺陷倾向性预测步骤,用于将所述度量元数据输入所述软件缺陷倾向性分类器中进行缺陷倾向性预测,得到存在缺陷的待测软件中程序模块。
6.一种执行如权利要求1-5中任一项所述的软件缺陷预测方法的软件缺陷预测系统,其特征在于,包括:
数据获取模块,用于获取软件历史仓库、缺陷分析报告及待测软件;
训练样本获取模块,用于通过对所述软件历史仓库中的软件源码根据设定软件度量元进行度量抽取后利用所述缺陷分析报告标记是否存在缺陷构造第一训练样本集,并通过对存在缺陷的所述软件源码进行解析、提取源码切片及标记源码段对应的缺陷类型构造第二训练样本集;
模型预训练模块,用于构建一软件缺陷倾向性分类器及一缺陷类型预测模型,并利用所述第一训练样本集及第二训练样本集分别对所述软件缺陷倾向性分类器及所述缺陷类型预测模型进行模型训练及参数调整,利用经训练及参数调整的所述软件缺陷倾向性分类器及所述缺陷类型预测模型构建软件缺陷预测模型;
软件缺陷预测模块,用于将所述待测软件经度量后利用所述软件缺陷倾向性分类器预测得到所述待测软件中程序模块是否存在缺陷,并将存在缺陷的代码模块经切片处理并转换为向量后利用所述缺陷类型预测模型预测得到所述待测软件中程序模块的缺陷类型及缺陷位置信息。
CN202011580379.XA 2020-12-28 2020-12-28 软件缺陷预测方法及系统 Active CN112597038B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011580379.XA CN112597038B (zh) 2020-12-28 2020-12-28 软件缺陷预测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011580379.XA CN112597038B (zh) 2020-12-28 2020-12-28 软件缺陷预测方法及系统

Publications (2)

Publication Number Publication Date
CN112597038A CN112597038A (zh) 2021-04-02
CN112597038B true CN112597038B (zh) 2023-12-08

Family

ID=75202725

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011580379.XA Active CN112597038B (zh) 2020-12-28 2020-12-28 软件缺陷预测方法及系统

Country Status (1)

Country Link
CN (1) CN112597038B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113297092A (zh) * 2021-06-21 2021-08-24 中国农业银行股份有限公司 软件的缺陷预测方法及相关设备
CN113590396A (zh) * 2021-07-23 2021-11-02 南方电网深圳数字电网研究院有限公司 一次设备的缺陷诊断方法、系统、电子设备及存储介质
CN113836022A (zh) * 2021-09-23 2021-12-24 中国农业银行股份有限公司 软件测试方法及装置、存储介质及电子设备
CN114528221B (zh) * 2022-02-24 2023-04-07 北京航空航天大学 一种基于异质图神经网络的软件缺陷预测方法
CN114996149B (zh) * 2022-06-16 2024-05-28 南京邮电大学 一种基于程序切片度量的代码缺陷预测方法
CN117312809B (zh) * 2023-11-30 2024-01-26 山东建筑大学 一种基于知识图谱的软件缺陷预测方法及系统

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016085272A1 (ko) * 2014-11-28 2016-06-02 주식회사 파수닷컴 소스 코드의 오류 검출에 있어서 오경보 저감 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체
US9454659B1 (en) * 2014-08-15 2016-09-27 Securisea, Inc. Software vulnerabilities detection system and methods
WO2017181286A1 (en) * 2016-04-22 2017-10-26 Lin Tan Method for determining defects and vulnerabilities in software code
CN108932192A (zh) * 2017-05-22 2018-12-04 南京大学 一种基于抽象语法树的Python程序类型缺陷检测方法
CN110162475A (zh) * 2019-05-27 2019-08-23 浙江工业大学 一种基于深度迁移的软件缺陷预测方法
CN110515838A (zh) * 2019-07-31 2019-11-29 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 基于主题模型软件缺陷检测的方法和系统
CN110597735A (zh) * 2019-09-25 2019-12-20 北京航空航天大学 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法
CN110888798A (zh) * 2019-10-14 2020-03-17 西安理工大学 一种基于图卷积神经网络对软件缺陷预测方法
CN111209211A (zh) * 2020-01-16 2020-05-29 华南理工大学 一种基于长短期记忆神经网络的跨项目软件缺陷预测方法
CN111290947A (zh) * 2020-01-16 2020-06-16 华南理工大学 一种基于对抗判别的跨软件缺陷预测方法
CN111949535A (zh) * 2020-08-13 2020-11-17 西安电子科技大学 基于开源社区知识的软件缺陷预测装置及方法
CN112035345A (zh) * 2020-08-20 2020-12-04 国家电网有限公司信息通信分公司 一种基于代码片段分析的混合深度缺陷预测方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11086761B2 (en) * 2017-03-20 2021-08-10 Devfactory Innovations Fz-Llc Defect prediction operation
EP3392780A3 (en) * 2017-04-19 2018-11-07 Tata Consultancy Services Limited Systems and methods for classification of software defect reports
US11288065B2 (en) * 2018-07-02 2022-03-29 International Business Machines Corporation Devops driven cognitive cost function for software defect prediction

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9454659B1 (en) * 2014-08-15 2016-09-27 Securisea, Inc. Software vulnerabilities detection system and methods
WO2016085272A1 (ko) * 2014-11-28 2016-06-02 주식회사 파수닷컴 소스 코드의 오류 검출에 있어서 오경보 저감 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체
WO2017181286A1 (en) * 2016-04-22 2017-10-26 Lin Tan Method for determining defects and vulnerabilities in software code
CN108932192A (zh) * 2017-05-22 2018-12-04 南京大学 一种基于抽象语法树的Python程序类型缺陷检测方法
CN110162475A (zh) * 2019-05-27 2019-08-23 浙江工业大学 一种基于深度迁移的软件缺陷预测方法
CN110515838A (zh) * 2019-07-31 2019-11-29 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 基于主题模型软件缺陷检测的方法和系统
CN110597735A (zh) * 2019-09-25 2019-12-20 北京航空航天大学 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法
CN110888798A (zh) * 2019-10-14 2020-03-17 西安理工大学 一种基于图卷积神经网络对软件缺陷预测方法
CN111209211A (zh) * 2020-01-16 2020-05-29 华南理工大学 一种基于长短期记忆神经网络的跨项目软件缺陷预测方法
CN111290947A (zh) * 2020-01-16 2020-06-16 华南理工大学 一种基于对抗判别的跨软件缺陷预测方法
CN111949535A (zh) * 2020-08-13 2020-11-17 西安电子科技大学 基于开源社区知识的软件缺陷预测装置及方法
CN112035345A (zh) * 2020-08-20 2020-12-04 国家电网有限公司信息通信分公司 一种基于代码片段分析的混合深度缺陷预测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Software Defect Prediction and Localization with Attention-Based Models and Ensemble Learning;T. Zhang等;《Asia-Pacific Software Engineering Conference》;第81-90页 *
基于程序语义的软件缺陷预测技术研究与实现;于悦;《中国优秀硕士学位论文全文数据库信息科技辑》(第8期);I138-249 *

Also Published As

Publication number Publication date
CN112597038A (zh) 2021-04-02

Similar Documents

Publication Publication Date Title
CN112597038B (zh) 软件缺陷预测方法及系统
CN110597735B (zh) 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法
CN110378206B (zh) 一种智能审图系统及方法
CN111708703A (zh) 测试案例集生成方法、装置、设备及计算机可读存储介质
CN112214610A (zh) 一种基于跨度和知识增强的实体关系联合抽取方法
CN113191148B (zh) 一种基于半监督学习和聚类的轨道交通实体识别方法
CN108984775B (zh) 一种基于商品评论的舆情监控方法及系统
CN111427775B (zh) 一种基于Bert模型的方法层次缺陷定位方法
CN111459799A (zh) 一种基于Github的软件缺陷检测模型建立、检测方法及系统
KR20160130422A (ko) 화물을 검사하는 방법 및 그 시스템
CN111949535B (zh) 基于开源社区知识的软件缺陷预测装置及方法
KR102292901B1 (ko) 웹 페이지의 테스트 케이스 생성 방법 및 장치
CN117252842A (zh) 一种飞机蒙皮缺陷检测及网络模型训练方法
CN113378024B (zh) 一种基于深度学习面向公检法领域的相关事件识别方法
CN110825642A (zh) 一种基于深度学习的软件代码行级缺陷检测方法
CN115292538A (zh) 一种基于深度学习的地图线要素提取方法
CN112579777B (zh) 一种未标注文本的半监督分类方法
CN111898134A (zh) 基于LSTM和BiLSTM的智能合约漏洞检测方法和装置
CN113889274B (zh) 一种孤独症谱系障碍的风险预测模型构建方法及装置
CN115757695A (zh) 一种日志语言模型训练方法及系统
CN114022698A (zh) 一种基于二叉树结构的多标签行为识别方法及装置
CN113837167A (zh) 一种文本图像识别方法、装置、设备及存储介质
Liang et al. A deep method renaming prediction and refinement approach for java projects
Fitriani et al. Image Classification On Garutan Batik Using Convolutional Neural Network with Data Augmentation
CN112199285A (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
GR01 Patent grant
GR01 Patent grant