CN116127417A - 一种代码缺陷检测模型构建方法、装置、设备及存储介质 - Google Patents
一种代码缺陷检测模型构建方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116127417A CN116127417A CN202310349605.0A CN202310349605A CN116127417A CN 116127417 A CN116127417 A CN 116127417A CN 202310349605 A CN202310349605 A CN 202310349605A CN 116127417 A CN116127417 A CN 116127417A
- Authority
- CN
- China
- Prior art keywords
- code
- defect detection
- detection model
- model
- code defect
- 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
- 230000007547 defect Effects 0.000 title claims abstract description 238
- 238000001514 detection method Methods 0.000 title claims abstract description 214
- 238000010276 construction Methods 0.000 title claims description 13
- 238000000034 method Methods 0.000 claims abstract description 63
- 238000012549 training Methods 0.000 claims abstract description 63
- 238000004422 calculation algorithm Methods 0.000 claims description 24
- 230000002776 aggregation Effects 0.000 claims description 23
- 238000004220 aggregation Methods 0.000 claims description 23
- 238000004364 calculation method Methods 0.000 claims description 22
- 230000008569 process Effects 0.000 claims description 22
- 230000008439 repair process Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 14
- 238000011161 development Methods 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 10
- 238000002372 labelling Methods 0.000 claims description 8
- 238000012706 support-vector machine Methods 0.000 claims description 7
- 238000004140 cleaning Methods 0.000 claims description 5
- 238000012795 verification Methods 0.000 claims description 5
- 230000003993 interaction Effects 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000010224 classification analysis Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000006870 function Effects 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
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000000611 regression analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- 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/3668—Software testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Quality & Reliability (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种代码缺陷检测模型构建方法、装置、设备及存储介质,涉及信息技术领域,包括:基于自身的代码版本管理系统对企业内部的源代码进行数据标注,得到标注后的源代码;基于自身的当前检测模型以及标注后的源代码进行训练,并判断训练后的检测模型是否全局收敛;如果否则将添加差分隐私后的检测模型上传至中央服务器,以便预设中央服务器聚合接收到的若干个添加差分隐私后的检测模型后得到新的检测模型;将中央服务器下发的新的检测模型作为自身的当前检测模型,重新跳转至基于自身的当前检测模型以及标注后的源代码进行训练的步骤,直至模型全局收敛时确定目标检测模型。本申请利用企业内部的源代码来训练模型,提高了模型的可靠性。
Description
技术领域
本发明涉及信息技术领域,特别涉及一种代码缺陷检测模型构建方法、装置、设备及存储介质。
背景技术
随着信息技术的不断发展,软件系统的复杂度也随之增长,因此构成软件系统的源代码中不可避免的存在着大量的代码缺陷。代码缺陷是指源代码中存在的,导致最终产品无法满足软件需求和其规格要求,需要进行修复的瑕疵和问题。代码缺陷制约了软件的应用和发展,也带来了一系列安全性问题。
传统的代码缺陷检测手段依赖于人工代码审查、语法分析、控制流分析等方法,存在效率和准确率不高的问题。随着人工智能技术的发展,各种机器学习算法被应用于代码缺陷检测领域,但是机器学习算法预测的准确性依赖于用于训练的数据的质量,而源代码作为企业的核心资产,通常不会进行数据共享,使用开源代码进行训练得到的模型,应用在企业内部的源代码时存在缺陷预测准确度不高的问题。
发明内容
有鉴于此,本发明的目的在于提供一种代码缺陷检测模型构建方法、装置、设备及存储介质,能够有效解决现有技术训练过程中源代码的安全性问题,进而能够有效提高模型检测的准确性以及模型的可靠性。其具体方案如下:
第一方面,本申请提供了一种代码缺陷检测模型构建方法,应用于预先部署于企业内部的边缘计算设备,包括:
基于预设数据标注规则以及自身的代码版本管理系统对企业内部的源代码进行数据标注,得到标注后的所述源代码;
基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作,并判断训练后的所述代码缺陷检测模型是否全局收敛,如果否则对训练后的所述代码缺陷检测模型添加差分隐私;
将添加差分隐私后的所述代码缺陷检测模型上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型进行聚合计算,得到新的所述代码缺陷检测模型;
将所述预设中央服务器下发的新的所述代码缺陷检测模型作为自身的当前代码缺陷检测模型,重新跳转至所述基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作的步骤,直至模型全局收敛时确定相应的目标代码缺陷检测模型。
可选的,所述基于预设数据标注规则以及自身的代码版本管理系统对企业内部的源代码进行数据标注之前,还包括:
通过预设人机交互接口获取用户上传的企业内部的源代码,并基于自身的代码版本管理系统对所述源代码进行日常的迭代开发。
可选的,所述基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作,包括:
通过利用自身的当前代码缺陷检测模型根据支持向量机算法以及标注后的所述源代码进行相应的模型训练操作。
可选的,所述将添加差分隐私后的所述代码缺陷检测模型上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型进行聚合计算,包括:
基于训练后的所述代码缺陷检测模型对所述源代码进行缺陷预测,并基于预测结果生成相应的模型权重;
将添加差分隐私后的所述代码缺陷检测模型以及所述模型权重上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型以及对应的所述模型权重进行聚合计算。
可选的,所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型以及对应的所述模型权重进行聚合计算,包括:
所述预设中央服务器利用联邦平均算法并基于若干个添加差分隐私后的所述代码缺陷检测模型以及对应的所述模型权重进行相应的聚合计算。
可选的,所述基于预设数据标注规则以及自身的代码版本管理系统对自家企业的源代码进行数据标注的过程中,还包括:
通过运行包含SZZ算法的软件对所述代码版本管理系统内保存的所有的代码变更历史记录进行扫描,以基于预设关键字识别出缺陷修复相关的变更历史记录,得到若干个缺陷修复历史记录;
利用所述代码版本管理系统的差异查找算法,确定与各所述缺陷修复历史记录所对应的代码位置,以获取相应的修复前的缺陷引入代码;
对与各所述缺陷修复历史记录对应的所述缺陷引入代码进行噪声数据清洗操作。
可选的,所述判断训练后的所述代码缺陷检测模型是否全局收敛,包括:
基于训练后的所述代码缺陷检测模型对所述源代码进行缺陷预测,通过对得到的预测结果进行评估来判断训练后的所述代码缺陷检测模型是否全局收敛;
或,基于训练后的所述代码缺陷检测模型对预设验证数据集进行缺陷预测,并通过对得到的预测结果进行评估来判断训练后的所述代码缺陷检测模型是否全局收敛。
第二方面,本申请提供了一种代码缺陷检测模型构建装置,应用于预先部署于企业内部的边缘计算设备,包括:
数据标注模块,用于基于预设数据标注规则以及自身的代码版本管理系统对企业内部的源代码进行数据标注,得到标注后的所述源代码;
模型训练模块,用于基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作,并判断训练后的所述代码缺陷检测模型是否全局收敛,如果否则对训练后的所述代码缺陷检测模型添加差分隐私;
模型聚合模块,用于将添加差分隐私后的所述代码缺陷检测模型上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型进行聚合计算,得到新的所述代码缺陷检测模型;
模型确定模块,用于将所述预设中央服务器下发的新的所述代码缺陷检测模型作为自身的当前代码缺陷检测模型,重新跳转至所述基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作的步骤,直至模型全局收敛时确定相应的目标代码缺陷检测模型。
第三方面,本申请提供了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述的代码缺陷检测模型构建方法的步骤。
第四方面,本申请提供了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的代码缺陷检测模型构建方法的步骤。
可见,本申请中,基于预设数据标注规则以及自身的代码版本管理系统对企业内部的源代码进行数据标注,得到标注后的所述源代码;基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作,并判断训练后的所述代码缺陷检测模型是否全局收敛,如果否则对训练后的所述代码缺陷检测模型添加差分隐私;将添加差分隐私后的所述代码缺陷检测模型上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型进行聚合计算,得到新的所述代码缺陷检测模型;将所述预设中央服务器下发的新的所述代码缺陷检测模型作为自身的当前代码缺陷检测模型,重新跳转至所述基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作的步骤,直至模型全局收敛时确定相应的目标代码缺陷检测模型。能够有效解决现有技术训练过程中源代码的安全性问题,进而能够有效提高模型检测的准确性以及模型的可靠性。本申请通过联邦学习利用企业内部的源代码进行模型训练,并在训练后判断是否模型全局收敛,如果否则更新模型并再次进行模型训练,在此过程中,所述源代码始终保存在预先部署于企业内部的边缘计算设备中,且上传的模型添加了差分隐私,这样一来,本申请的有益效果在于不仅能够有效解决现有技术训练过程中源代码的安全性问题,保证了源代码的安全性,还有效提高了模型检测的准确性以及模型的可靠性,从而提升了用户体验感。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种代码缺陷检测模型构建方法流程图;
图2为本申请提供的一种代码缺陷检测模型构建装置结构示意图;
图3为本申请提供的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
传统的代码缺陷检测手段依赖于人工代码审查、语法分析等方法,存在效率和准确率不高的问题。目前,各种机器学习算法被广泛应用于代码缺陷检测,但是这样一来预测的准确性依赖于用于训练的数据的质量,而源代码作为企业的核心资产通常不会进行数据共享,但使用开源代码进行训练得到的模型又存在准确度不高的问题。为此,本申请提供了一种代码缺陷检测模型构建方案,能够有效解决现有技术训练过程中源代码的安全性问题,进而能够有效提高模型检测的准确性以及模型的可靠性。
参见图1所示,本发明实施例公开了一种代码缺陷检测模型构建方法,应用于预先部署于企业内部的边缘计算设备,包括:
步骤S11、基于预设数据标注规则以及自身的代码版本管理系统对企业内部的源代码进行数据标注,得到标注后的所述源代码。
本实施例中,所述边缘计算设备可以是一台具备训练模型能力的服务器,同时在所述服务器内安装代码版本管理系统,如gitlab(一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务)等。所述边缘计算设备部署在企业内部的网络中,仅通过特定的端口与预设中央服务器联通。所述企业对所述边缘计算设备的硬件、软件、网络具有完全的控制权,从而确保了企业源代码资产的安全性和保密性。进一步的,所述边缘计算设备与企业内部的开发环境保持联通,企业内部的开发人员可以在该设备的代码版本管理系统上进行日常的功能开发、缺陷修复、代码提交等工作。具体的,所述基于预设数据标注规则以及自身的代码版本管理系统对企业内部的源代码进行数据标注之前,还可以包括:通过预设人机交互接口获取用户上传的企业内部的源代码,并基于自身的代码版本管理系统对所述源代码进行日常的迭代开发。因此,在基于企业内部的所述源代码进行模型训练时并不影响企业内部的所述开发人员对所述源代码的日常使用。
需要理解的是,本实施例中,所述基于预设数据标注规则以及自身的代码版本管理系统对自家企业的源代码进行数据标注的过程中,具体还可以包括:通过运行包含SZZ(Jacek Sliwerski·Thomas Zimmermann·Andreas Zeller,斯里维尔斯基·齐默尔曼·泽勒)算法的软件对所述代码版本管理系统内保存的所有的代码变更历史记录进行扫描,以基于预设关键字识别出缺陷修复相关的变更历史记录,得到若干个缺陷修复历史记录;利用所述代码版本管理系统的差异查找算法,确定与各所述缺陷修复历史记录所对应的代码位置,以获取相应的修复前的缺陷引入代码;对与各所述缺陷修复历史记录对应的所述缺陷引入代码进行噪声数据清洗操作。其中,具体是通过利用Annotation Graph(注释图)工具对所述代码版本控制系统中的所述代码变更历史记录进行扫描。所述AnnotationGraph工具是一种对软件代码的变更过程进行追踪的工具,通过代码版本控制系统的diff算法来完成历史上对代码的修改、增加、删除的操作。同时,可以理解的是,所述噪声数据具体是指在上述过程中被错误标记为缺陷引入代码,实际并未引入任何缺陷的数据集,即错误标注的结果。这样一来,在完成数据清洗后,基于对清洗后的数据进行标记,能够有效提高所训练的模型的检测准确性。
步骤S12、基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作,并判断训练后的所述代码缺陷检测模型是否全局收敛,如果否则对训练后的所述代码缺陷检测模型添加差分隐私。
本实施例中,所述基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作,具体可以包括:通过利用自身的当前代码缺陷检测模型根据支持向量机算法以及标注后的所述源代码进行相应的模型训练操作。其中,所述支持向量机算法具体可以为SVM(Support Vector Machine)算法,是常见的一种判别方法,在机器学习领域是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析。需要理解的是,本实施例具体是基于联邦学习进行模型构建的,也即本实施例的具体实施过程中涉及多个企业,而各企业在参与联邦学习时,需要在自身的边缘计算设备中完成模型的初始化以及相应的训练参数的初始化,之后基于自身的当前代码缺陷检测模型、当前训练参数以及标注后的所述源代码进行模型训练操作。
进一步,本实施例中,所述判断训练后的所述代码缺陷检测模型是否全局收敛,具体可以包括:基于训练后的所述代码缺陷检测模型对所述源代码进行缺陷预测,通过对得到的预测结果进行评估来判断训练后的所述代码缺陷检测模型是否全局收敛;或,基于训练后的所述代码缺陷检测模型对预设验证数据集进行缺陷预测,并通过对得到的预测结果进行评估来判断训练后的所述代码缺陷检测模型是否全局收敛。其中,所述预设验证数据集具体可以是由企业内部的开发人员预先设置的数据集。这样一来,通过对预测的结果进行评估便可实现对模型是否全局收敛的检测,并且评估过程可以从多个维度展开,例如缺陷检测的准确率、查全率、正确率等。具体的评估维度可以由用户预先基于自身实际需求进行设置,也可以由系统默认设置。
步骤S13、将添加差分隐私后的所述代码缺陷检测模型上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型进行聚合计算,得到新的所述代码缺陷检测模型。
本实施例中,所述将添加差分隐私后的所述代码缺陷检测模型上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型进行聚合计算,包括:基于训练后的所述代码缺陷检测模型对所述源代码进行缺陷预测,并基于预测结果生成相应的模型权重;将添加差分隐私后的所述代码缺陷检测模型以及所述模型权重上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型以及对应的所述模型权重进行聚合计算。可知,本实施例在向所述预设中央服务器上传添加差分隐私后的所述代码缺陷检测模型时,还需上传与所述代码缺陷检测模型所对应的模型权重,以便所述预设中央服务器利用联邦平均算法并基于若干个添加差分隐私后的所述代码缺陷检测模型以及对应的所述模型权重计算梯度,以完成相应的聚合计算。
步骤S14、将所述预设中央服务器下发的新的所述代码缺陷检测模型作为自身的当前代码缺陷检测模型,重新跳转至所述基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作的步骤,直至模型全局收敛时确定相应的目标代码缺陷检测模型。
本实施例中,在获取所述预设中央服务器下发的新的所述代码缺陷检测模型的同时,还获取了所述预设中央服务器下发的与新的所述代码缺陷检测模型对应的新的所述训练参数。之后不仅需要将所述预设中央服务器下发的新的所述代码缺陷检测模型作为自身的当前代码缺陷检测模型,还需将新的所述训练参数作为自身的当前训练参数,并重新跳转至所述基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作的步骤,重复上述过程直至检测到模型全局收敛时确定相应的目标代码缺陷检测模型。
由此可见,本申请实施例中,基于预设数据标注规则以及自身的代码版本管理系统对企业内部的源代码进行数据标注,得到标注后的所述源代码;基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作,并判断训练后的所述代码缺陷检测模型是否全局收敛,如果否则对训练后的所述代码缺陷检测模型添加差分隐私;将添加差分隐私后的所述代码缺陷检测模型上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型进行聚合计算,得到新的所述代码缺陷检测模型;将所述预设中央服务器下发的新的所述代码缺陷检测模型作为自身的当前代码缺陷检测模型,重新跳转至所述基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作的步骤,直至模型全局收敛时确定相应的目标代码缺陷检测模型。能够有效解决现有技术训练过程中源代码的安全性问题,进而能够有效提高模型检测的准确性以及模型的可靠性。本申请通过联邦学习利用企业内部的源代码进行模型训练,并在训练后判断是否模型全局收敛,如果否则更新模型并再次进行模型训练,在此过程中,所述源代码始终保存在预先部署于企业内部的边缘计算设备中,且上传的模型添加了差分隐私,这样一来,本申请的有益效果在于不仅能够有效解决现有技术训练过程中源代码的安全性问题,保证了源代码的安全性,还有效提高了模型检测的准确性以及模型的可靠性,从而提升了用户体验感。
参见图2所示,本申请实施例还相应公开了一种代码缺陷检测模型构建装置,应用于预先部署于企业内部的边缘计算设备,包括:
数据标注模块11,用于基于预设数据标注规则以及自身的代码版本管理系统对企业内部的源代码进行数据标注,得到标注后的所述源代码;
模型训练模块12,用于基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作,并判断训练后的所述代码缺陷检测模型是否全局收敛,如果否则对训练后的所述代码缺陷检测模型添加差分隐私;
模型聚合模块13,用于将添加差分隐私后的所述代码缺陷检测模型上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型进行聚合计算,得到新的所述代码缺陷检测模型;
模型确定模块14,用于将所述预设中央服务器下发的新的所述代码缺陷检测模型作为自身的当前代码缺陷检测模型,重新跳转至所述基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作的步骤,直至模型全局收敛时确定相应的目标代码缺陷检测模型。其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
由此可见,本申请中,基于预设数据标注规则以及自身的代码版本管理系统对企业内部的源代码进行数据标注,得到标注后的所述源代码;基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作,并判断训练后的所述代码缺陷检测模型是否全局收敛,如果否则对训练后的所述代码缺陷检测模型添加差分隐私;将添加差分隐私后的所述代码缺陷检测模型上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型进行聚合计算,得到新的所述代码缺陷检测模型;将所述预设中央服务器下发的新的所述代码缺陷检测模型作为自身的当前代码缺陷检测模型,重新跳转至所述基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作的步骤,直至模型全局收敛时确定相应的目标代码缺陷检测模型。能够有效解决现有技术训练过程中源代码的安全性问题,进而能够有效提高模型检测的准确性以及模型的可靠性。本申请通过联邦学习利用企业内部的源代码进行模型训练,并在训练后判断是否模型全局收敛,如果否则更新模型并再次进行模型训练,在此过程中,所述源代码始终保存在预先部署于企业内部的边缘计算设备中,且上传的模型添加了差分隐私,这样一来,本申请的有益效果在于不仅能够有效解决现有技术训练过程中源代码的安全性问题,保证了源代码的安全性,还有效提高了模型检测的准确性以及模型的可靠性,从而提升了用户体验感。
在一些具体实施例中,所述代码缺陷检测模型构建装置,具体还可以包括:
源代码日常开发单元,用于通过预设人机交互接口获取用户上传的企业内部的源代码,并基于自身的代码版本管理系统对所述源代码进行日常的迭代开发。
在一些具体实施例中,所述模型训练模块12,具体可以包括:
代码缺陷检测模型训练单元,用于通过利用自身的当前代码缺陷检测模型根据支持向量机算法以及标注后的所述源代码进行相应的模型训练操作。
在一些具体实施例中,所述模型聚合模块13,具体可以包括:
模型权重生成单元,用于基于训练后的所述代码缺陷检测模型对所述源代码进行缺陷预测,并基于预测结果生成相应的模型权重;
模型更新子模块,用于将添加差分隐私后的所述代码缺陷检测模型以及所述模型权重上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型以及对应的所述模型权重进行聚合计算。
在一些具体实施例中,所述模型更新子模块,具体可以包括:
第一模型聚合单元,用于所述预设中央服务器利用联邦平均算法并基于若干个添加差分隐私后的所述代码缺陷检测模型以及对应的所述模型权重进行相应的聚合计算。
在一些具体实施例中,所述数据标注模块11,具体还可以包括:
变更历史记录识别单元,用于通过运行包含SZZ算法的软件对所述代码版本管理系统内保存的所有的代码变更历史记录进行扫描,以基于预设关键字识别出缺陷修复相关的变更历史记录,得到若干个缺陷修复历史记录;
缺陷引入代码确定单元,用于利用所述代码版本管理系统的差异查找算法,确定与各所述缺陷修复历史记录所对应的代码位置,以获取相应的修复前的缺陷引入代码;
噪声数据清洗单元,用于对与各所述缺陷修复历史记录对应的所述缺陷引入代码进行噪声数据清洗操作。
在一些具体实施例中,所述模型训练模块12,具体可以包括:
第一模型收敛判断单元,用于基于训练后的所述代码缺陷检测模型对所述源代码进行缺陷预测,通过对得到的预测结果进行评估来判断训练后的所述代码缺陷检测模型是否全局收敛;
第二模型收敛判断单元,用于或,基于训练后的所述代码缺陷检测模型对预设验证数据集进行缺陷预测,并通过对得到的预测结果进行评估来判断训练后的所述代码缺陷检测模型是否全局收敛。
进一步的,本申请实施例还公开了一种电子设备,图3是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图3为本申请实施例提供的一种电子设备20的结构示意图。该电子设备 20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的代码缺陷检测模型构建方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的代码缺陷检测模型构建方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的代码缺陷检测模型构建方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的技术方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种代码缺陷检测模型构建方法,其特征在于,应用于预先部署于企业内部的边缘计算设备,包括:
基于预设数据标注规则以及自身的代码版本管理系统对企业内部的源代码进行数据标注,得到标注后的所述源代码;
基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作,并判断训练后的所述代码缺陷检测模型是否全局收敛,如果否则对训练后的所述代码缺陷检测模型添加差分隐私;
将添加差分隐私后的所述代码缺陷检测模型上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型进行聚合计算,得到新的所述代码缺陷检测模型;
将所述预设中央服务器下发的新的所述代码缺陷检测模型作为自身的当前代码缺陷检测模型,重新跳转至所述基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作的步骤,直至模型全局收敛时确定相应的目标代码缺陷检测模型。
2.根据权利要求1所述的代码缺陷检测模型构建方法,其特征在于,所述基于预设数据标注规则以及自身的代码版本管理系统对企业内部的源代码进行数据标注之前,还包括:
通过预设人机交互接口获取用户上传的企业内部的源代码,并基于自身的代码版本管理系统对所述源代码进行日常的迭代开发。
3.根据权利要求1所述的代码缺陷检测模型构建方法,其特征在于,所述基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作,包括:
通过利用自身的当前代码缺陷检测模型根据支持向量机算法以及标注后的所述源代码进行相应的模型训练操作。
4.根据权利要求1所述的代码缺陷检测模型构建方法,其特征在于,所述将添加差分隐私后的所述代码缺陷检测模型上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型进行聚合计算,包括:
基于训练后的所述代码缺陷检测模型对所述源代码进行缺陷预测,并基于预测结果生成相应的模型权重;
将添加差分隐私后的所述代码缺陷检测模型以及所述模型权重上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型以及对应的所述模型权重进行聚合计算。
5.根据权利要求4所述的代码缺陷检测模型构建方法,其特征在于,所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型以及对应的所述模型权重进行聚合计算,包括:
所述预设中央服务器利用联邦平均算法并基于若干个添加差分隐私后的所述代码缺陷检测模型以及对应的所述模型权重进行相应的聚合计算。
6.根据权利要求1所述的代码缺陷检测模型构建方法,其特征在于,所述基于预设数据标注规则以及自身的代码版本管理系统对自家企业的源代码进行数据标注的过程中,还包括:
通过运行包含SZZ算法的软件对所述代码版本管理系统内保存的所有的代码变更历史记录进行扫描,以基于预设关键字识别出缺陷修复相关的变更历史记录,得到若干个缺陷修复历史记录;
利用所述代码版本管理系统的差异查找算法,确定与各所述缺陷修复历史记录所对应的代码位置,以获取相应的修复前的缺陷引入代码;
对与各所述缺陷修复历史记录对应的所述缺陷引入代码进行噪声数据清洗操作。
7.根据权利要求1至6任一项所述的代码缺陷检测模型构建方法,其特征在于,所述判断训练后的所述代码缺陷检测模型是否全局收敛,包括:
基于训练后的所述代码缺陷检测模型对所述源代码进行缺陷预测,通过对得到的预测结果进行评估来判断训练后的所述代码缺陷检测模型是否全局收敛;
或,基于训练后的所述代码缺陷检测模型对预设验证数据集进行缺陷预测,并通过对得到的预测结果进行评估来判断训练后的所述代码缺陷检测模型是否全局收敛。
8.一种代码缺陷检测模型构建装置,其特征在于,应用于预先部署于企业内部的边缘计算设备,包括:
数据标注模块,用于基于预设数据标注规则以及自身的代码版本管理系统对企业内部的源代码进行数据标注,得到标注后的所述源代码;
模型训练模块,用于基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作,并判断训练后的所述代码缺陷检测模型是否全局收敛,如果否则对训练后的所述代码缺陷检测模型添加差分隐私;
模型聚合模块,用于将添加差分隐私后的所述代码缺陷检测模型上传至预设中央服务器,以便所述预设中央服务器基于从各所述边缘计算设备接收到的若干个添加差分隐私后的所述代码缺陷检测模型进行聚合计算,得到新的所述代码缺陷检测模型;
模型确定模块,用于将所述预设中央服务器下发的新的所述代码缺陷检测模型作为自身的当前代码缺陷检测模型,重新跳转至所述基于自身的当前代码缺陷检测模型以及标注后的所述源代码进行模型训练操作的步骤,直至模型全局收敛时确定相应的目标代码缺陷检测模型。
9.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至7任一项所述的代码缺陷检测模型构建方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的代码缺陷检测模型构建方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310349605.0A CN116127417A (zh) | 2023-04-04 | 2023-04-04 | 一种代码缺陷检测模型构建方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310349605.0A CN116127417A (zh) | 2023-04-04 | 2023-04-04 | 一种代码缺陷检测模型构建方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116127417A true CN116127417A (zh) | 2023-05-16 |
Family
ID=86303051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310349605.0A Pending CN116127417A (zh) | 2023-04-04 | 2023-04-04 | 一种代码缺陷检测模型构建方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116127417A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930277A (zh) * | 2016-07-11 | 2016-09-07 | 南京大学 | 一种基于缺陷报告分析的缺陷源代码定位方法 |
CN110442457A (zh) * | 2019-08-12 | 2019-11-12 | 北京大学深圳研究生院 | 基于联邦学习的模型训练方法、装置及服务器 |
CN112148595A (zh) * | 2020-09-03 | 2020-12-29 | 北京科技大学 | 一种去除重复变更的软件变更级缺陷预测方法 |
CN113761525A (zh) * | 2021-09-07 | 2021-12-07 | 广东电网有限责任公司江门供电局 | 基于联邦学习的智能入侵检测方法和系统 |
CN114897837A (zh) * | 2022-05-16 | 2022-08-12 | 华北电力大学(保定) | 基于联邦学习与自适应差分的电力巡检图像缺陷检测方法 |
CN115309647A (zh) * | 2022-08-11 | 2022-11-08 | 南京工业大学 | 一种基于联邦学习的软件缺陷预测隐私保护方法 |
CN115774875A (zh) * | 2022-12-02 | 2023-03-10 | 武汉纺织大学 | 基于差分隐私联邦深度学习的安卓恶意应用检测方法 |
-
2023
- 2023-04-04 CN CN202310349605.0A patent/CN116127417A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930277A (zh) * | 2016-07-11 | 2016-09-07 | 南京大学 | 一种基于缺陷报告分析的缺陷源代码定位方法 |
CN110442457A (zh) * | 2019-08-12 | 2019-11-12 | 北京大学深圳研究生院 | 基于联邦学习的模型训练方法、装置及服务器 |
CN112148595A (zh) * | 2020-09-03 | 2020-12-29 | 北京科技大学 | 一种去除重复变更的软件变更级缺陷预测方法 |
CN113761525A (zh) * | 2021-09-07 | 2021-12-07 | 广东电网有限责任公司江门供电局 | 基于联邦学习的智能入侵检测方法和系统 |
CN114897837A (zh) * | 2022-05-16 | 2022-08-12 | 华北电力大学(保定) | 基于联邦学习与自适应差分的电力巡检图像缺陷检测方法 |
CN115309647A (zh) * | 2022-08-11 | 2022-11-08 | 南京工业大学 | 一种基于联邦学习的软件缺陷预测隐私保护方法 |
CN115774875A (zh) * | 2022-12-02 | 2023-03-10 | 武汉纺织大学 | 基于差分隐私联邦深度学习的安卓恶意应用检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110297911B (zh) | 物联网(iot)计算环境中认知数据管护的方法和系统 | |
CN106445652B (zh) | 用于智能云计划和停用的方法和系统 | |
EP3814976A1 (en) | Artificial intelligence assisted content authoring for automated agents | |
US10977030B2 (en) | Predictive code clearance by a cognitive computing system | |
US20140279739A1 (en) | Resolving and merging duplicate records using machine learning | |
US20170323216A1 (en) | Determining retraining of predictive models | |
US20210350234A1 (en) | Techniques to detect fusible operators with machine learning | |
US11055204B2 (en) | Automated software testing using simulated user personas | |
Chen et al. | Semisupervised anomaly detection of multivariate time series based on a variational autoencoder | |
Ji et al. | Data-driven simulation model for quality-induced rework cost estimation and control using absorbing Markov chains | |
US20230325397A1 (en) | Artificial intelligence based problem descriptions | |
US20210110248A1 (en) | Identifying and optimizing skill scarcity machine learning algorithms | |
US20230117225A1 (en) | Automated workflow analysis and solution implementation | |
US11775867B1 (en) | System and methods for evaluating machine learning models | |
CN111159241A (zh) | 一种点击转化预估方法及装置 | |
CN110059743B (zh) | 确定预测的可靠性度量的方法、设备和存储介质 | |
US20210149793A1 (en) | Weighted code coverage | |
WO2023077989A1 (en) | Incremental machine learning for a parametric machine learning model | |
US20230409460A1 (en) | System and method for optimizing performance of a process | |
CN116127417A (zh) | 一种代码缺陷检测模型构建方法、装置、设备及存储介质 | |
US20230152787A1 (en) | Performance optimization of complex industrial systems and processes | |
AU2021251463B2 (en) | Generating performance predictions with uncertainty intervals | |
US20220253690A1 (en) | Machine-learning systems for simulating collaborative behavior by interacting users within a group | |
US11275902B2 (en) | Intelligent dialog re-elicitation of information | |
US11860769B1 (en) | Automatic test maintenance leveraging machine learning algorithms |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20230516 |
|
RJ01 | Rejection of invention patent application after publication |