CN116991459B - 一种软件多缺陷信息预测方法与系统 - Google Patents

一种软件多缺陷信息预测方法与系统 Download PDF

Info

Publication number
CN116991459B
CN116991459B CN202311044645.0A CN202311044645A CN116991459B CN 116991459 B CN116991459 B CN 116991459B CN 202311044645 A CN202311044645 A CN 202311044645A CN 116991459 B CN116991459 B CN 116991459B
Authority
CN
China
Prior art keywords
graph
network model
defect
feature
prediction
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
CN202311044645.0A
Other languages
English (en)
Other versions
CN116991459A (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.)
Central South University
Original Assignee
Central South University
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 Central South University filed Critical Central South University
Priority to CN202311044645.0A priority Critical patent/CN116991459B/zh
Publication of CN116991459A publication Critical patent/CN116991459A/zh
Application granted granted Critical
Publication of CN116991459B publication Critical patent/CN116991459B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3346Query execution using probabilistic model
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/25Fusion techniques
    • G06F18/253Fusion techniques of extracted features
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种软件多缺陷信息预测方法与系统,包括将待预测项目数据输入第二图注意力网络模型进行预测,得到第二内部特征;将待预测项目数据输入第二可扩展的图网络模型进行预测,得到第二外部特征;将第二内部特征和第二外部特征融合,得到待预测样本;通过内部特征与外部特征的融合,从而得到更多特征,提升了预测能力,构建第一多预测模型,将训练样本输入第一多预测模型进行训练,得到第二多预测模型;将待预测样本输入第二多预测模型进行预测,得到待预测项目数据的缺陷信息,实现了对多缺陷信息预测,包括对缺陷数量和缺陷严重度的预测。

Description

一种软件多缺陷信息预测方法与系统
技术领域
本发明涉及软件多缺陷信息预测相关技术领域,尤其是涉及一种软件多缺陷信息预测方法与系统。
背景技术
随着软件系统在社会各个领域扮演着重要的角色,软件产生的缺陷对商业和人们的生活产生了重大的影响。然而,由于软件代码库在规模和复杂性上的显著增长,识别软件代码中的缺陷变得越来越困难。传统软件多缺陷信息预测是以手工获取软件度量特征的基础进行分类学习,如机器学习技术已被广泛用于建立缺陷预测模型,这些技术从软件代码中提取出许多特征,并将它们输入到常见的分类器中,但是传统软件多缺陷信息预测方法仅能预测软件是否有缺陷,对软件的多缺陷预测能力不足。
发明内容
本发明旨在至少解决现有技术中存在的技术问题。为此,本发明提出一种软件多缺陷信息预测方法与系统,能够得到更多特征,提升预测能力,实现多缺陷信息预测。
本发明的第一方面,提供了一种软件多缺陷信息预测方法,包括如下步骤:
获取历史项目缺陷数据和待预测项目数据;
构建第一图注意力网络模型,将所述历史项目缺陷数据输入所述第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征;将所述待预测项目数据输入所述第二图注意力网络模型进行预测,得到第二内部特征;
构建第一可扩展的图网络模型,将所述历史项目缺陷数据输入所述第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征;将所述待预测项目数据输入所述第二可扩展的图网络模型进行预测,得到第二外部特征;
将所述第一内部特征和所述第一外部特征融合,得到第一融合特征,并将所述第一融合特征与所述历史项目缺陷数据的缺陷信息匹配,得到训练样本;将所述第二内部特征和第二外部特征融合,得到待预测样本;
构建第一多预测模型,将所述训练样本输入所述第一多预测模型进行训练,得到第二多预测模型;
将所述待预测样本输入所述第二多预测模型进行预测,得到所述待预测项目数据的缺陷信息。
根据本发明实施例的控制方法,至少具有如下有益效果:
本方法通过构建第一图注意力网络模型,将历史项目缺陷数据输入第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征;将待预测项目数据输入第二图注意力网络模型进行预测,得到第二内部特征;构建第一可扩展的图网络模型,将历史项目缺陷数据输入第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征;将待预测项目数据输入第二可扩展的图网络模型进行预测,得到第二外部特征;将第一内部特征和第一外部特征融合,得到第一融合特征,并将第一融合特征与历史项目缺陷数据的缺陷信息匹配,得到训练样本;将第二内部特征和第二外部特征融合,得到待预测样本;通过内部特征与外部特征的融合,从而得到更多特征,提升了预测能力,构建第一多预测模型,将训练样本输入第一多预测模型进行训练,得到第二多预测模型;将待预测样本输入第二多预测模型进行预测,得到待预测项目数据的缺陷信息,实现了对多缺陷信息预测,包括对缺陷数量和缺陷严重度的预测。
根据本发明的一些实施例,所述获取历史项目缺陷数据,包括:
获取初始历史项目数据;
根据预设的过滤规则过滤所述初始历史项目数据,得到第一历史项目数据;
根据所述第一历史项目数据的问题追踪信息、标签和注释,提取缺陷严重度;
根据所述第一历史项目数据的提交请求信息,识别缺陷数量;
根据所述第一历史项目数据的源代码和文档、所述缺陷严重度和所述缺陷数量构建历史项目缺陷数据。
根据本发明的一些实施例,所述将所述历史项目缺陷数据输入所述第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征,包括:
通过javalang计算所述历史项目缺陷数据的源代码,得到第一代码语法树;
通过社群检测算法去除所述第一代码语法树中缺陷信息以外的信息,得到第二代码语法树,其中,所述缺陷信息包括缺陷数量和缺陷严重度;
将所述第二代码语法树分成若干个子树;并去除所述子树的节点间边的方向,得到第一无向无环图;
根据所述第一无向无环图对所述第一图注意力网络模型进行训练,得到所述第二图注意力网络模型及其输出的第一内部特征。
根据本发明的一些实施例,所述将所述历史项目缺陷数据输入所述第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征,包括:
将所述历史项目缺陷数据转化得到上下文特征;
生成所述历史项目缺陷数据的传统度量特征;
根据所述上下文特征与所述传统度量特征进行计算得到第二无向无环图;
根据所述第二无向无环图对所述第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征。
根据本发明的一些实施例,所述将所述历史项目缺陷数据通过Word2Vec方法进行转化,得到上下文特征,包括:
将所述历史项目缺陷数据进行数据过滤,得到概念信息;
通过LDA模型统计所述概念信息中单词的频率,并将所述概念信息中单词的频率最高的若干个单词进行组合,得到概念主题;
将所述概念主题通过Word2Vec方法进行转化,得到上下文特征。
根据本发明的一些实施例,所述根据所述上下文特征与所述传统度量特征进行计算,得到第二无向无环图,包括:
根据所述历史项目缺陷数据中的节点关系构建CDN网络;
将所述上下文特征与所述传统度量特征进行拼接,得到,得到CDN网络的CDN节点的初始特征;
去除所述CDN节点间边的方向,得到第二无向无环图。
根据本发明的一些实施例,融合函数包括向量加,向量内积和向量拼接,所述将所述第一内部特征和第一外部特征通过融合函数进行融合的计算公式为:
其中,为融合函数,/>为取值为0至1的权重因子,/>为第一外部特征,为第一内部特征。
本发明的第二方面,提供一种软件多缺陷信息预测系统,所述软件多缺陷信息预测系统包括:
数据获取模块,用于获取历史项目缺陷数据和待预测项目数据;
内部特征计算模块,用于构建第一图注意力网络模型,将所述历史项目缺陷数据输入所述第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征;将所述待预测项目数据输入所述第二图注意力网络模型进行预测,得到第二内部特征;
外部特征计算模块,用于构建第一可扩展的图网络模型,将所述历史项目缺陷数据输入所述第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征;将所述待预测项目数据输入所述第二可扩展的图网络模型进行预测,得到第二外部特征;
样本获取模块,用于将所述第一内部特征和所述第一外部特征融合,得到第一融合特征,并将所述第一融合特征与所述历史项目缺陷数据的缺陷信息匹配,得到训练样本;将所述第二内部特征和第二外部特征融合,得到待预测样本;
多预测模型训练模块,用于构建第一多预测模型,将所述训练样本输入所述第一多预测模型进行训练,得到第二多预测模型;
缺陷信息预测模块,用于将所述待预测样本输入所述第二多预测模型进行预测,得到所述待预测项目数据的缺陷信息。
本系统通过构建第一图注意力网络模型,将历史项目缺陷数据输入第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征;将待预测项目数据输入第二图注意力网络模型进行预测,得到第二内部特征;构建第一可扩展的图网络模型,将历史项目缺陷数据输入第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征;将待预测项目数据输入第二可扩展的图网络模型进行预测,得到第二外部特征;将第一内部特征和第一外部特征融合,得到第一融合特征,并将第一融合特征与历史项目缺陷数据的缺陷信息匹配,得到训练样本;将第二内部特征和第二外部特征融合,得到待预测样本;通过内部特征与外部特征的融合,从而得到更多特征,提升了预测能力,构建第一多预测模型,将训练样本输入第一多预测模型进行训练,得到第二多预测模型;将待预测样本输入第二多预测模型进行预测,得到待预测项目数据的缺陷信息,实现了对多缺陷信息预测,包括对缺陷数量和缺陷严重度的预测。
本发明的第三方面,提供了一种软件多缺陷信息预测电子设备,包括至少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行上述的软件多缺陷信息预测方法。
本发明的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述的软件多缺陷信息预测方法。
需要注意的是,本发明的第二方面至第四方面与现有技术之间的有益效果与上述的一种软件多缺陷信息预测系统与现有技术之间的有益效果相同,此处不再细述。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一实施例的一种软件多缺陷信息预测方法的流程图;
图2是本发明实施例提供的一种软件多缺陷信息预测方法的数据集生成流程图;
图3是本发明实施例提供的一种软件多缺陷信息预测方法的具体框架图;
图4是本发明一实施例的一种软件多缺陷信息预测系统的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,如果有描述到第一、第二等只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
本发明的描述中,需要说明的是,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
随着软件系统在社会各个领域扮演着重要的角色,软件产生的缺陷对商业和人们的生活产生了重大的影响。然而,由于软件代码库在规模和复杂性上的显著增长,识别软件代码中的缺陷变得越来越困难。传统软件多缺陷信息预测是以手工获取软件度量特征的基础进行分类学习,如机器学习技术已被广泛用于建立缺陷预测模型,这些技术从软件代码中提取出许多特征,并将它们输入到常见的分类器中,但是传统软件多缺陷信息预测方法仅能预测软件是否有缺陷,对软件的多缺陷预测能力不足。
为了解决上述技术缺陷,参照图1,本发明提供了一种软件多缺陷信息预测方法,包括:
步骤S101、获取历史项目缺陷数据和待预测项目数据;
步骤S102、构建第一图注意力网络模型,将历史项目缺陷数据输入第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征;将待预测项目数据输入第二图注意力网络模型进行预测,得到第二内部特征;
步骤S103、构建第一可扩展的图网络模型,将历史项目缺陷数据输入第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征;将待预测项目数据输入第二可扩展的图网络模型进行预测,得到第二外部特征;
步骤S104、将第一内部特征和第一外部特征融合,得到第一融合特征,并将第一融合特征与历史项目缺陷数据的缺陷信息匹配,得到训练样本;将第二内部特征和第二外部特征融合,得到待预测样本;
步骤S105、构建第一多预测模型,将训练样本输入第一多预测模型进行训练,得到第二多预测模型;
步骤S106、将待预测样本输入第二多预测模型进行预测,得到待预测项目数据的缺陷信息。
本方法通过构建第一图注意力网络模型,将历史项目缺陷数据输入第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征;将待预测项目数据输入第二图注意力网络模型进行预测,得到第二内部特征;构建第一可扩展的图网络模型,将历史项目缺陷数据输入第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征;将待预测项目数据输入第二可扩展的图网络模型进行预测,得到第二外部特征;将第一内部特征和第一外部特征融合,得到第一融合特征,并将第一融合特征与历史项目缺陷数据的缺陷信息匹配,得到训练样本;将第二内部特征和第二外部特征融合,得到待预测样本;通过内部特征与外部特征的融合,从而得到更多特征,提升了预测能力,构建第一多预测模型,将训练样本输入第一多预测模型进行训练,得到第二多预测模型;将待预测样本输入第二多预测模型进行预测,得到待预测项目数据的缺陷信息,实现了对多缺陷信息预测,包括对缺陷数量和缺陷严重度的预测。
在一些实施例中,获取历史项目缺陷数据,包括:
获取初始历史项目数据;
根据预设的过滤规则过滤初始历史项目数据,得到第一历史项目数据;
根据第一历史项目数据的问题追踪信息、标签和注释,提取缺陷严重度;
根据第一历史项目数据的提交请求信息,识别缺陷数量;
根据第一历史项目数据的源代码和文档、缺陷严重度和缺陷数量构建历史项目缺陷数据。
具体的,参照图2,图2中issue为问题追踪,Pull Request(PR)为提交请求,star数为收藏数,fork数为仓库克隆数,相较于有无缺陷的二元标签,多缺陷标签更为复杂,不能简单通过现有数据集生成。本发明基于github和gitee等代码托管平台上的公开软件项目,收集项目的软件代码、文档、提交历史记录、PR(pull request)和问题追踪信息。
代码的一次PR代表着一次对代码的更改,如果这次PR是对一个漏洞的修复,那么可以将PR前后的代码视为从“有缺陷”到“无缺陷”的更改。PR的上传者在提交PR时,会给PR打上相关标签,并提供相关注解。如果PR起源于一个或多个issue(软件使用者遇到产品问题或者产生需求时向开发者提供的信息),该PR还会与issue产生直接关联。使用自然语言处理和关键词提取的方法,对PR的标签、注解和关联issue进行处理,就能够识别一个PR是否与漏洞有关。提取该PR前后的源代码,就可以得到一份“有缺陷”的源代码和一份“无缺陷”的源代码。
有时,软件存在的缺陷不止一个。而在实际开源项目的开发中,对多个缺陷的修复往往在时间上的呈簇状分布。因此,按照一定的时间窗口大小,识别与漏洞有关的一系列PR,称为“PR簇”,簇前后的源代码即可视为“有缺陷”和“无缺陷”,一个簇中的PR数量可以视为有缺陷代码的漏洞数。
用户或者开发者在产生issue或PR时,往往会自行对缺陷严重度进行评估,并体现在标签和注释中。对这些内容进行分析(使用正则表达式进行匹配。匹配用的正则表达式涵盖各种缺陷的表达式和关键字,如bug、defect、fix),就能得到缺陷的严重程度。
由此,代码有无缺陷、代码缺陷数和缺陷严重度的信息均可以从代码托管平台中公开获取。按照以上策略,分析处理平台中的项目,就能生成相关的软件历史项目缺陷数据。
从代码托管平台(如github、gitee等)上,按照一定的过滤规则(对Star数、fork数和issue数设置最低阈值,项目使用java语言进行代码编写,文档使用语言为英文)获取符合要求的项目。每个项目都带有其完整源代码、文档、提交请求信息、问题追踪信息和相关标签与注释。
对于每个项目,使用自然语言处理和关键词识别的方式提取其缺陷严重度,使用识别PR簇的方式提取其缺陷数量。
将提取的多缺陷信息、项目源代码(对于PR簇,其对应缺陷源代码为簇内第一次提交前的最后版本)和项目文档结合,即成为历史项目缺陷数据。
在一些实施例中,将历史项目缺陷数据输入第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征,包括:
通过javalang计算历史项目缺陷数据的源代码,得到第一代码语法树;
通过社群检测算法去除第一代码语法树中缺陷信息以外的信息,得到第二代码语法树,其中,缺陷信息包括缺陷数量和缺陷严重度;
将第二代码语法树分成若干个子树;并去除子树的节点间边的方向,得到第一无向无环图;
根据第一无向无环图对第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征。
在一些实施例中,将历史项目缺陷数据输入第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征,包括:
将历史项目缺陷数据转化得到上下文特征;
生成历史项目缺陷数据的传统度量特征;
根据上下文特征与传统度量特征进行计算得到第二无向无环图;
根据第二无向无环图对第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征。
在一些实施例中,将历史项目缺陷数据通过Word2Vec方法进行转化,得到上下文特征,包括:
将历史项目缺陷数据进行数据过滤,得到概念信息;
通过LDA模型统计概念信息中单词的频率,并将概念信息中单词的频率最高的若干个单词进行组合,得到概念主题;
将概念主题通过Word2Vec方法进行转化,得到上下文特征。
在一些实施例中,根据上下文特征与传统度量特征进行计算,得到第二无向无环图,包括:
根据历史项目缺陷数据中的节点关系构建CDN网络;
将上下文特征与传统度量特征进行拼接,得到CDN网络的CDN节点的初始特征;
去除CDN节点间边的方向,得到第二无向无环图。
在一些实施例中,融合函数包括向量加,向量内积和向量拼接,将第一内部特征和第一外部特征通过融合函数进行融合的计算公式为:
其中,为融合函数,/>为取值为0至1的权重因子,/>为第一外部特征,为第一内部特征。
具体的,参照图3,对数据集进行的特征处理分为两部分。其一为将源代码转化为AST,经过裁剪后,使用图注意力网络(GAT)生成内部特征;其二为生成CDN,为CDN嵌入初始特征(传统度量特征和上下文特征),使用可扩展的图网络(Graph-SAGE)生成外部特征。
最后将内部特征、外部特征与多缺陷信息融合得到最终的缺陷实体,将缺陷实体传入支持向量回归模型(SVR)中,得到最终用于多缺陷预测的模型。下面将详细说明。
一、图注意力网络生成内部特征:
图中的多缺陷数据集为历史项目缺陷数据。
使用开源的javalang工具处理java源代码,以生成代码语法树(AST)。以下列出的三类语法元素将被转化为AST节点,一份源代码文件对应一个AST:
声明节点,包括包声明、接口声明、类声明、变量声明、方法声明、构造器声明、catch捕获参数声明、形式参数、对资源的try语句、引用类型、基础类型。
控制流节点,包括if语句、while语句、do语句、for语句、断言、break语句、continue语句、返回语句、throw语句、synchronized语句、try语句、switch语句、catch语句。
原始的AST庞大复杂,且真正和缺陷有关的节点只有很小的部分,需要将与缺陷无关的部分去除。使用社群检测算法(louvain),将与树中缺陷无关的部分去除,并将AST分成几个密度较高的子树。
子树节点的初始特征是经过one-hot编码后的AST节点类型。去除节点间边的方向。最终得到的子树可视为节点带有特征向量的无向无环图。
将上一步产生的无向无环图传入图注意力网络(GAT),经过训练后,得到源代码的图级嵌入表示。图级嵌入为向量形式,一份源代码文件对应一个图级嵌入,称为源代码的内部特征。
二、可扩展的图网络生成外部特征:
项目的上下文信息指项目中除源代码外的所有相关的文本信息,包括项目文档、PR和issue的标签与注释、commit的说明。将项目的上下文(语言为英文)通过段落、标点、空格划分为单词,然后过滤掉不包含重要信息的停止词和编程关键字(如main和args),形成项目的概念信息。
使用LDA模型(latent Dirichlet allocation),根据上一步得到的概念信息,统计概念信息中单词的频率,使用频率最高的一些单词作为该项目的概念主题。概念主题的形式为若干个单词组成的序列。
上一步得到的概念主题是文本,需要将其转化为数值以符合神经网络的输入要求。使用Word2Vec技术,将单词序列转化为数值形式的向量。
这些向量称为上下文特征,一个项目的上下文信息对应一个向量。生成上下文特征时,将所有项目统一传入同一个神经网络,以使相似项目的上下文特征也具有相似性。
与由机器学习模型生成的特征不同,传统的软件度量是人为设计、静态的度量方法。只需对代码进行静态分析,即可得到代码对应的传统度量指标值。传统的软件度量指标也蕴含着缺陷信息。参照表1和表2,表1和表2为本申请选取的传统度量特征,除LOC外,其余均是面向对象程序设计的软件度量指标,称为传统度量特征。
表1
表2
分析项目中文件关系,构建CDN网络。CDN节点为java项目的类文件,当节点间存在以下三种关系时,在节点之间添加一条有向边:
继承:一个类(子类)继承了另一个类(父类)的属性和方法。
聚合:一个类(整体)由多个其他类(部分)组成。整体和部分之间存在着“拥有”的关系,但部分可以独立于整体而存在。
参数:一个类的方法接受另一个类的实例作为参数。这种关系表示两个类之间存在着某种依赖关系。
前面已经获得了上下文特征和传统度量特征。上下文特征是项目级别的,由项目中文件共有;传统度量特征针对的是类文件,每个文件的特征都不相同。
与对AST的处理类似,将上下文特征向量和传统度量特征向量拼接,作为CDN中节点的初始特征,并去除节点间边的方向。最终得到节点带有特征向量的无向无环图。
将上一步产生的无向无环图传入可扩展的图网络(Graph-SAGE),经过训练后,得到代码文件的节点嵌入表示。节点嵌入为向量形式,项目中每个源代码文件均对应一个节点嵌入,称为源代码的外部特征。
三、特征融合:
获得了源代码文件的内部特征,侧重于源代码文件的内部语义信息;获得了外部特征,侧重于源代码文件之间的外部交互信息,二者均为向量形式。以上两个流程合称为特征处理。缺陷数据集中已经保存了代码的多缺陷信息。将内部特征和外部特征进行融合,公式如下:
内部特征和外部特征融合,得到表示源代码的最终的特征向量。每个源代码均对应先前生成的多缺陷信息,特征向量和多缺陷信息共同组成了最终的样本集。
四、支持向量回归预测模型:
将上面得到样本集按比例分为训练样本集、验证样本集和测试样本集。将训练样本传入支持向量回归模型(SVR)中进行训练,使用验证模型确定模型超参数,并使用测试样本评估模型。
多缺陷信息包括缺陷数和缺陷严重度两类,因此可以由此训练两个回归模型,分别对两种多缺陷目标进行预测。
另外,参照图4,本发明的一个实施例,提供一种软件多缺陷信息预测系统,包括数据获取模块1100、内部特征计算模块1200、外部特征计算模块1300、样本获取模块1400、多预测模型训练模块1500以及缺陷信息预测模块1600,其中:
数据获取模块1100用于获取历史项目缺陷数据和待预测项目数据;
内部特征计算模块1200用于构建第一图注意力网络模型,将历史项目缺陷数据输入第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征;将待预测项目数据输入第二图注意力网络模型进行预测,得到第二内部特征;
外部特征计算模块1300用于构建第一可扩展的图网络模型,将历史项目缺陷数据输入第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征;将待预测项目数据输入第二可扩展的图网络模型进行预测,得到第二外部特征;
样本获取模块1400用于将第一内部特征和第一外部特征融合,得到第一融合特征,并将第一融合特征与历史项目缺陷数据的缺陷信息匹配,得到训练样本;将第二内部特征和第二外部特征融合,得到待预测样本;
多预测模型训练模块1500用于构建第一多预测模型,将训练样本输入第一多预测模型进行训练,得到第二多预测模型;
缺陷信息预测模块1600用于将待预测样本输入第二多预测模型进行预测,得到待预测项目数据的缺陷信息。
本系统通过构建第一图注意力网络模型,将历史项目缺陷数据输入第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征;将待预测项目数据输入第二图注意力网络模型进行预测,得到第二内部特征;构建第一可扩展的图网络模型,将历史项目缺陷数据输入第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征;将待预测项目数据输入第二可扩展的图网络模型进行预测,得到第二外部特征;将第一内部特征和第一外部特征融合,得到第一融合特征,并将第一融合特征与历史项目缺陷数据的缺陷信息匹配,得到训练样本;将第二内部特征和第二外部特征融合,得到待预测样本;通过内部特征与外部特征的融合,从而得到更多特征,提升了预测能力,构建第一多预测模型,将训练样本输入第一多预测模型进行训练,得到第二多预测模型;将待预测样本输入第二多预测模型进行预测,得到待预测项目数据的缺陷信息,实现了对多缺陷信息预测,包括对缺陷数量和缺陷严重度的预测。
需要注意的是,本系统实施例与上述的系统实施例是基于相同的发明构思,因此上述方法实施例的相关内容同样适用于本系统实施例,这里不再赘述。
本申请还提供一种软件多缺陷信息预测电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现:如上述的软件多缺陷信息预测方法。
处理器和存储器可以通过总线或者其他方式连接。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实现上述实施例的软件多缺陷信息预测方法所需的非暂态软件程序以及指令存储在存储器中,当被处理器执行时,执行上述实施例中的软件多缺陷信息预测方法,例如,执行以上描述的图1中的方法步骤S101至步骤S106。
本申请还提供一种计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令用于执行:如上述的软件多缺陷信息预测方法。
该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个处理器或控制器执行,例如,被上述电子设备实施例中的一个处理器执行,可使得上述处理器执行上述实施例中的软件多缺陷信息预测方法,例如,执行以上描述的图1中的方法步骤S101至步骤S106。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序单元或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序单元或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
上面结合附图对本发明实施例作了详细说明,但本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

Claims (9)

1.一种软件多缺陷信息预测方法,其特征在于,所述软件多缺陷信息预测方法包括:
获取历史项目缺陷数据和待预测项目数据;
构建第一图注意力网络模型,将所述历史项目缺陷数据输入所述第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征;将所述待预测项目数据输入所述第二图注意力网络模型进行预测,得到第二内部特征;
构建第一可扩展的图网络模型,将所述历史项目缺陷数据输入所述第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征;将所述待预测项目数据输入所述第二可扩展的图网络模型进行预测,得到第二外部特征;
将所述第一内部特征和所述第一外部特征融合,得到第一融合特征,并将所述第一融合特征与所述历史项目缺陷数据的缺陷信息匹配,得到训练样本;将所述第二内部特征和第二外部特征融合,得到待预测样本,其中,融合函数包括向量加,向量内积和向量拼接,将所述第一内部特征和第一外部特征通过融合函数进行融合的计算公式为:
F{α*Xexternal+(1-α*Xinternal)},
其中,F{·}为融合函数,α为取值为0至1的权重因子,Xexternal为第一外部特征,Xinternal为第一内部特征;
构建第一多预测模型,将所述训练样本输入所述第一多预测模型进行训练,得到第二多预测模型;
将所述待预测样本输入所述第二多预测模型进行预测,得到所述待预测项目数据的缺陷信息。
2.根据权利要求1所述的一种软件多缺陷信息预测方法,其特征在于,所述获取历史项目缺陷数据,包括:
获取初始历史项目数据;
根据预设的过滤规则过滤所述初始历史项目数据,得到第一历史项目数据;
根据所述第一历史项目数据的问题追踪信息、标签和注释,提取缺陷严重度;
根据所述第一历史项目数据的提交请求信息,识别缺陷数量;
根据所述第一历史项目数据的源代码和文档、所述缺陷严重度和所述缺陷数量构建历史项目缺陷数据。
3.根据权利要求2所述的一种软件多缺陷信息预测方法,其特征在于,所述将所述历史项目缺陷数据输入所述第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征,包括:
通过javalang计算所述历史项目缺陷数据的源代码,得到第一代码语法树;
通过社群检测算法去除所述第一代码语法树中缺陷信息以外的信息,得到第二代码语法树,其中,所述缺陷信息包括缺陷数量和缺陷严重度;
将所述第二代码语法树分成若干个子树;并去除所述子树的节点间边的方向,得到第一无向无环图;
根据所述第一无向无环图对所述第一图注意力网络模型进行训练,得到所述第二图注意力网络模型及其输出的第一内部特征。
4.根据权利要求2所述的一种软件多缺陷信息预测方法,其特征在于,所述将所述历史项目缺陷数据输入所述第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征,包括:
将所述历史项目缺陷数据转化得到上下文特征;
生成所述历史项目缺陷数据的传统度量特征;
根据所述上下文特征与所述传统度量特征进行计算得到第二无向无环图;
根据所述第二无向无环图对所述第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征。
5.根据权利要求4所述的一种软件多缺陷信息预测方法,其特征在于,所述将所述历史项目缺陷数据通过Word2Vec方法进行转化,得到上下文特征,包括:
将所述历史项目缺陷数据进行数据过滤,得到概念信息;
通过LDA模型统计所述概念信息中单词的频率,并将所述概念信息中单词的频率最高的若干个单词进行组合,得到概念主题;
将所述概念主题通过Word2Vec方法进行转化,得到上下文特征。
6.根据权利要求4所述的一种软件多缺陷信息预测方法,其特征在于,所述根据所述上下文特征与所述传统度量特征进行计算,得到第二无向无环图,包括:
根据所述历史项目缺陷数据中的节点关系构建CDN网络;
将所述上下文特征与所述传统度量特征进行拼接,得到CDN网络的CDN节点的初始特征;
去除所述CDN节点间边的方向,得到第二无向无环图。
7.一种软件多缺陷信息预测系统,其特征在于,所述软件多缺陷信息预测系统包括:
数据获取模块,用于获取历史项目缺陷数据和待预测项目数据;
内部特征计算模块,用于构建第一图注意力网络模型,将所述历史项目缺陷数据输入所述第一图注意力网络模型进行训练,得到第二图注意力网络模型及其输出的第一内部特征;将所述待预测项目数据输入所述第二图注意力网络模型进行预测,得到第二内部特征;
外部特征计算模块,用于构建第一可扩展的图网络模型,将所述历史项目缺陷数据输入所述第一可扩展的图网络模型进行训练,得到第二可扩展的图网络模型及其输出的第一外部特征;将所述待预测项目数据输入所述第二可扩展的图网络模型进行预测,得到第二外部特征;
样本获取模块,用于将所述第一内部特征和所述第一外部特征融合,得到第一融合特征,并将所述第一融合特征与所述历史项目缺陷数据的缺陷信息匹配,得到训练样本;将所述第二内部特征和第二外部特征融合,得到待预测样本,其中,融合函数包括向量加,向量内积和向量拼接,将所述第一内部特征和第一外部特征通过融合函数进行融合的计算公式为:
F{α*Xexternal+(1-α*Xinternal)},
其中,F{·}为融合函数,α为取值为0至1的权重因子,Xexternal为第一外部特征,Xinternal为第一内部特征;
多预测模型训练模块,用于构建第一多预测模型,将所述训练样本输入所述第一多预测模型进行训练,得到第二多预测模型;
缺陷信息预测模块,用于将所述待预测样本输入所述第二多预测模型进行预测,得到所述待预测项目数据的缺陷信息。
8.一种软件多缺陷信息预测设备,其特征在于,包括至少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行如权利要求1至6任一项所述的一种软件多缺陷信息预测方法。
9.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1至6任一项所述的一种软件多缺陷信息预测方法。
CN202311044645.0A 2023-08-18 2023-08-18 一种软件多缺陷信息预测方法与系统 Active CN116991459B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311044645.0A CN116991459B (zh) 2023-08-18 2023-08-18 一种软件多缺陷信息预测方法与系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311044645.0A CN116991459B (zh) 2023-08-18 2023-08-18 一种软件多缺陷信息预测方法与系统

Publications (2)

Publication Number Publication Date
CN116991459A CN116991459A (zh) 2023-11-03
CN116991459B true CN116991459B (zh) 2024-04-26

Family

ID=88533863

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311044645.0A Active CN116991459B (zh) 2023-08-18 2023-08-18 一种软件多缺陷信息预测方法与系统

Country Status (1)

Country Link
CN (1) CN116991459B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113608747A (zh) * 2021-08-18 2021-11-05 南京航空航天大学 一种基于图卷积神经网络的软件缺陷预测方法及终端
CN114185769A (zh) * 2021-11-16 2022-03-15 南京航空航天大学 基于双向长短期记忆神经网络的软件缺陷预测方法及终端
CN114445336A (zh) * 2021-12-24 2022-05-06 深圳供电局有限公司 配电设备缺陷检测方法、装置、计算机设备和存储介质
CN115439458A (zh) * 2022-09-21 2022-12-06 征图新视(江苏)科技股份有限公司 基于深度图注意力的工业图像缺陷目标检测算法
CN115564983A (zh) * 2022-05-20 2023-01-03 北京理工大学 目标检测方法、装置、电子设备、存储介质及其应用
WO2023024412A1 (zh) * 2021-08-25 2023-03-02 平安科技(深圳)有限公司 基于深度学习模型的视觉问答方法及装置、介质、设备
WO2023115343A1 (zh) * 2021-12-21 2023-06-29 深圳晶泰科技有限公司 数据处理方法、装置、模型训练方法和预测自由能方法
CN116415182A (zh) * 2023-01-12 2023-07-11 北京航空航天大学 基于因果和图注意力的电弧增材低碳钢疲劳裂纹预测方法
CN116521564A (zh) * 2023-05-12 2023-08-01 陕西师范大学 一种基于lstm的多词嵌入编码-门控融合机制的软件缺陷预测方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113608747A (zh) * 2021-08-18 2021-11-05 南京航空航天大学 一种基于图卷积神经网络的软件缺陷预测方法及终端
WO2023024412A1 (zh) * 2021-08-25 2023-03-02 平安科技(深圳)有限公司 基于深度学习模型的视觉问答方法及装置、介质、设备
CN114185769A (zh) * 2021-11-16 2022-03-15 南京航空航天大学 基于双向长短期记忆神经网络的软件缺陷预测方法及终端
WO2023115343A1 (zh) * 2021-12-21 2023-06-29 深圳晶泰科技有限公司 数据处理方法、装置、模型训练方法和预测自由能方法
CN114445336A (zh) * 2021-12-24 2022-05-06 深圳供电局有限公司 配电设备缺陷检测方法、装置、计算机设备和存储介质
CN115564983A (zh) * 2022-05-20 2023-01-03 北京理工大学 目标检测方法、装置、电子设备、存储介质及其应用
CN115439458A (zh) * 2022-09-21 2022-12-06 征图新视(江苏)科技股份有限公司 基于深度图注意力的工业图像缺陷目标检测算法
CN116415182A (zh) * 2023-01-12 2023-07-11 北京航空航天大学 基于因果和图注意力的电弧增材低碳钢疲劳裂纹预测方法
CN116521564A (zh) * 2023-05-12 2023-08-01 陕西师范大学 一种基于lstm的多词嵌入编码-门控融合机制的软件缺陷预测方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
基于代价敏感支持向量机的软件缺陷预测研究;任胜兵;《计算机工程与科学》;20181015;第40卷(第10期);1787-1795 *
基于概率模型检测的软件缺陷定位方法;任胜兵等;《计算机应用研究》;20210901;第38卷(第11期);3387-3392+3397 *
基于深度学习的源代码缺陷检测研究综述;邓枭等;《软件学报》;20230215;第34卷(第02期);625-654 *

Also Published As

Publication number Publication date
CN116991459A (zh) 2023-11-03

Similar Documents

Publication Publication Date Title
US10133650B1 (en) Automated API parameter resolution and validation
US9299031B2 (en) Active learning on statistical server name extraction from information technology (IT) service tickets
Maiti et al. Capturing, eliciting, predicting and prioritizing (CEPP) non-functional requirements metadata during the early stages of agile software development
Ahmed et al. Capbug-a framework for automatic bug categorization and prioritization using nlp and machine learning algorithms
CN112070138B (zh) 多标签混合分类模型的构建方法、新闻分类方法及系统
CN107273546B (zh) 仿冒应用检测方法以及系统
CN115357904B (zh) 一种基于程序切片和图神经网络的多类漏洞检测方法
US20230078134A1 (en) Classification of erroneous cell data
WO2024027279A1 (zh) 代码补全方法、装置及设备
CN112579466A (zh) 测试用例的生成方法、装置及计算机可读存储介质
CN115495755A (zh) 一种基于CodeBERT和R-GCN的源代码漏洞多分类检测的方法
CN114327609A (zh) 一种代码补全方法、模型和工具
CN117492703A (zh) 一种基于人工智能的软件开发方法、设备及介质
Tsoukalas et al. An ontology-based approach for automatic specification, verification, and validation of software security requirements: Preliminary results
Tanwar et al. Predicting vulnerability in large codebases with deep code representation
Camilleri et al. Modelling and analysis of normative documents
CN116991459B (zh) 一种软件多缺陷信息预测方法与系统
CN116821903A (zh) 检测规则确定及恶意二进制文件检测方法、设备及介质
CN115587029A (zh) 补丁的检测方法及装置、电子设备、计算机可读介质
CN115562645A (zh) 一种基于程序语义的配置故障预测方法
CA3104292C (en) Systems and methods for identifying and linking events in structured proceedings
CN117643036A (zh) 基于人工智能的认知测试脚本生成
US10120652B2 (en) System and method for representing software development requirements into standard diagrams
Liu et al. Prompt Learning for Multi-Label Code Smell Detection: A Promising Approach
CN117807691B (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