CN115080430A - 代码夹带检测方法、装置、计算机设备和存储介质 - Google Patents
代码夹带检测方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115080430A CN115080430A CN202210742997.2A CN202210742997A CN115080430A CN 115080430 A CN115080430 A CN 115080430A CN 202210742997 A CN202210742997 A CN 202210742997A CN 115080430 A CN115080430 A CN 115080430A
- Authority
- CN
- China
- Prior art keywords
- demand data
- new version
- requirement
- code
- data
- 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
Images
Classifications
-
- 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
- G06F11/3672—Test management
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
-
- 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
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种代码夹带检测方法、装置、计算机设备和存储介质,该方法包括获取业务需求数据;对业务需求数据进行分词处理,得到多个关键词;根据各关键词,分别构建历史需求数据和新版本需求数据对应的关键词向量,并计算历史需求数据和新版本需求数据之间的相似分数;根据相似分数,确定新版本需求数据的需求类型,以及确定新版本需求数据中与需求类型关联的代码夹带风险等级。本发明实施例通过计算新版本需求数据与历史需求数据的相似分数,确定新版本需求数据的需求类型,从而快速定位与需求关联的代码,以确定代码夹带风险,实现了代码夹带的自动化检测,且仅对与需求关联的代码进行检测,提高了检测效率。
Description
技术领域
本发明涉及安全监控领域,尤其涉及一种代码夹带检测方法、装置、计算机设备和存储介质。
背景技术
在软件测试过程中,需要对开发的源代码文件进行测试,其测试过程中会遇到代码夹带引起线上问题。其通常在计算机正常的程序传播当中将额外的一段代码夹带着,对计算机的网络安全造成破坏。另外,当前版本里多了当前版本不需要的代码,这些代码对当前版本没有任何用处,可能影响当前版本的功能和性能等,这种情况也被称为代码夹带。而发生这种代码夹带的典型场景是某些功能开发了一半,但是要发布了,这样未完成部分功能对应的代码就是夹带的代码。而为了避免这部分未完成代码的干扰,需要采取屏蔽手段,以让它们不干扰已经完成的部分,并避免夹带的代码对计算机的网络安全造成破坏。
通常在检测代码夹带风险过程中,主要是人工在开发过程中直接检测代码是否存在夹带风险,但人工检测时,其检测人员是开发人员,难以做到公正识别团队的私自行为;且在客观情况下,从一个版本的数千行代码中发现是否存在代码夹带风险也是比较耗时且困难度较高的事情。因此,如何实现代码夹带风险的自动化检测是个亟需解决的问题。
发明内容
第一方面,本发明提供一种代码夹带检测方法,包括:
获取业务需求数据,其中,所述业务需求数据包括历史需求数据和新版本需求数据;
对所述业务需求数据进行分词处理,得到多个关键词;
根据各所述关键词,分别构建所述历史需求数据和所述新版本需求数据对应的关键词向量;
根据所述关键词向量,计算所述历史需求数据和所述新版本需求数据之间的相似分数;
根据所述相似分数,确定所述新版本需求数据的需求类型,以及确定所述新版本需求数据中与所述需求类型关联的代码夹带风险等级。
在可选的实施方式中,所述根据各所述关键词,分别构建所述历史需求数据和所述新版本需求数据对应的关键词向量包括:
计算各个所述关键词之间的语义相似度,将所述语义相似度大于预定相似阈值的多个关键词通过同一关键词进行归类描述;
对所述历史需求数据和所述新版本需求数据中的关键词进行关键词映射,得到映射关系;
根据所述映射关系,对各个所述关键词进行数字下标映射,并统计各个所述关键词的出现次数;
根据每个所述关键词的数字下标和所述出现次数,分别对应构建所述历史需求数据和所述新版本需求数据的关键词向量。
在可选的实施方式中,所述根据所述关键词向量,计算所述历史需求数据和所述新版本需求数据之间的相似分数包括:
提取所述历史需求数据和所述新版本需求数据中数字下标一致的关键词所对应的关键词向量,作为一个关键词向量组;
计算每组所述关键词向量组的余弦相似度;
当所述余弦相似度落在预定的余弦相似度与相似分数的映射区间内,则对应确定所述历史需求数据和所述新版本需求数据之间的相似分数。
在可选的实施方式中,所述根据所述相似分数,确定所述新版本需求数据的需求类型包括:
当所述相似分数大于等于预定分数阈值时,确定所述新版本需求数据的需求类型为迭代需求;
当所述相似分数小于预定分数阈值时,确定所述新版本需求数据的需求类型为新需求。
在可选的实施方式中,所述新版本需求数据的需求类型为迭代需求时,所述确定所述新版本需求数据中与所述需求类型关联的代码夹带风险等级包括:
计算所述新版本需求数据中与所述迭代需求关联的代码的第一虚拟节点重合度;
当所述第一虚拟节点重合度落在预定的重合度与风险等级的映射区间内,则对应确定所述迭代需求的代码夹带风险等级。
在可选的实施方式中,所述新版本需求数据的需求类型为新需求时,所述确定所述新版本需求数据中与所述需求类型关联的代码夹带风险等级包括:
计算所述新版本需求数据中与所述新需求关联的代码的第二虚拟节点重合度;
当所述第二虚拟节点重合度落在预定的重合度与风险等级的映射区间内,则对应确定所述新需求的代码夹带风险等级。
在可选的实施方式中,所述对所述业务需求数据进行分词处理,得到多个关键词包括:
采用分词算法对所述业务需求数据进行分词处理,得到多个分词;
对每个所述分词进行词性标注,得到各所述分词对应的词性;
基于预定停用词表和所述词性,剔除所述多个分词中的停用词,得到多个关键词。
第二方面,本发明提供一种代码夹带检测装置,包括:
获取模块,用于获取业务需求数据,其中,所述业务需求数据包括历史需求数据和新版本需求数据;
分词模块,用于对所述业务需求数据进行分词处理,得到多个关键词;
构建模块,用于根据各所述关键词,分别构建所述历史需求数据和所述新版本需求数据对应的关键词向量;
计算模块,用于根据所述关键词向量,计算所述历史需求数据和所述新版本需求数据之间的相似分数;
确定模块,用于根据所述相似分数,确定所述新版本需求数据的需求类型,以及确定所述新版本需求数据中与所述需求类型关联的代码夹带风险等级。
第三方面,本发明提供一种计算机设备,所述计算机设备包括存储器和至少一个处理器,所述存储器存储有计算机程序,所述处理器用于执行所述计算机程序以实施前述的代码夹带检测方法。
第四方面,本发明提供一种计算机存储介质,其存储有计算机程序,所述计算机程序被执行时,实施前述的代码夹带检测方法。
本发明实施例具有如下有益效果:
本发明实施例提供了一种代码夹带检测方法,包括获取业务需求数据;对业务需求数据进行分词处理,得到多个关键词;根据各关键词,分别构建历史需求数据和新版本需求数据对应的关键词向量,并计算历史需求数据和新版本需求数据之间的相似分数;根据相似分数,确定新版本需求数据的需求类型,以及确定新版本需求数据中与需求类型关联的代码夹带风险等级。本发明实施例通过计算新版本需求数据与历史需求数据的相似分数,确定新版本需求数据的需求类型,从而通过需求类型快速定位新版本需求数据中与需求关联的代码,根据与需求关联的代码以确定代码夹带风险,实现了代码夹带的自动化检测,且检测过程中可仅对与需求关联的代码进行检测,提高了检测效率。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1示出了本发明实施例中代码夹带检测方法的第一个实施方式示意图;
图2示出了本发明实施例中代码夹带检测方法的第二个实施方式示意图;
图3示出了本发明实施例中代码夹带检测方法的第三个实施方式示意图;
图4示出了本发明实施例中代码夹带检测方法的第四个实施方式示意图;
图5示出了本发明实施例中代码夹带检测装置的结构示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
在系统或软件开发过程中,需要对开发的源代码文件进行测试,以保证代码的正常运行。在其测试过程中,可能会遇到代码夹带的问题,在计算机正常的程序传播当中夹带着额外的一段代码,该额外的代码可能会对其他部分的代码产生干扰,并且夹带的代码也有可能对计算机网络的安全造成破坏。而在一些特殊应用场景中,例如,银行等应用场景下,由于其行业的特殊性,对计算机网络有着较高的安全性要求,因此,在对银行等特殊领域的应用软件、平台或系统进行开发时,需要额外注意软件代码夹带的问题,以保证银行等特殊应用场景中计算机程序及网络的高度安全。
实施例1
基于此,请参照图1,本发明实施例提供了一种代码夹带检测方法,下面对该代码夹带检测方法进行详细说明。
S10,获取业务需求数据。
首先,利用接口等技术获取开发程序中软件测试所需的所有业务需求数据,其中,该业务需求数据包括历史需求数据和新版本需求数据;历史需求数据包括以往历史版本需求、故事、代码类,方法片段等数据,新版本需求数据为当前需求版本对应的版本需求、故事、代码类,方法片段等数据。
例如,提取一条历史版本需求和新版本需求进行解释说明,其历史版本需求为:接触日历管理版的列表时间维度字段补齐;新版本需求为:接触日历管理版增加历史的时间维度。
S20,对业务需求数据进行分词处理,得到多个关键词。
在一种可行的实施方式中,如图2所示,步骤S20可具体包括如下步骤:
S21,采用分词算法对业务需求数据进行分词处理,得到多个分词。
S22,对每个分词进行词性标注,得到各分词对应的词性。
S23,基于预定停用词表和词性,剔除多个分词中的停用词,得到多个关键词。
采用分词算法对业务需求数据进行分词处理,得到多个分词,以便后续能够基于各分词进行关键词提取,即采用分词算法将业务需求数据中的历史需求数据和新版本需求数据分别进行分词处理,对应得到多个分词,其中,该分词算法可选用基于条件随机场的分词算法等,该分词算法在此不做限定。
对每个分词都进行词性标注,其中,词性(词类)是一个语言学术语,是一种语言中词的语法分类,是以语法特征(包括句法功能和形态变化)为主要依据、兼顾词汇意义对词进行划分的结果,现代汉语的词可以分为12种词类。从组合和聚合关系来说,一个词类是指:在一个语言中,众多具有相同句法功能、能在同样的组合位置中出现的词,聚合在一起形成的范畴。词类是最普遍的语法的聚合。词类划分具有层次性。如汉语中,词可以分成实词和虚词,实词中又包括体词、谓词等,体词中又可以分出名词和代词等。因此,对分词进行词性标注时,标注的词性可包括名词、代词、动词、形容词、数词、量词、副词、介词、连词、冠词等,从而得到每个分词对应的词性。
根据预设的停用词表和所标注的词性,剔除多个分词中的停用词,其中,该停用词为在文本检索过程中出现频率很高但又没有相关内容的单词。具体可将各分词及其词性与停用词表中的所有停用词一一对比,提取出停用词,并进行剔除,得到具有实体意义的词语。
例如,历史需求数据为:接触日历管理版的列表时间维度字段补齐;新版本需求数据为:接触日历管理版增加历史的时间维度。对历史需求数据和新版本需求数据进行整理,可输出关键词:接触,日历,管理版,日历,列表,时间,维度,字段,补齐。
在本实施方式中,因最终获得的多个词语中不包括如停用词等无分析价值的词语,减少了分词后的词语数量,从而减少了关键词识别的后续过程中需要分析处理的分词数量,从而有效地提高了关键词的识别效率。
S30,根据各关键词,分别构建历史需求数据和新版本需求数据对应的关键词向量。
分别将历史需求数据和新版本需求数据中对应的关键词进行向量化表示,得到对应的关键词向量。
在一种可行的实施方式中,如图3所示,步骤S30可具体包括如下步骤:
S31,计算各个关键词之间的语义相似度,将语义相似度大于预定相似阈值的多个关键词通过同一关键词进行归类描述。
在分别构建历史需求数据和新版本需求数据对应的关键词向量时,首先需要分别对历史需求数据和新版本需求数据中的多个关键词进行整理,例如,将语义相似的多个关键词进行整合。将各个关键词置于向量化空间中,通过向量空间模型计算各个关键词之间的语义相似度,其中,该语义相似度计算方法包括但不限于内积法、余弦法、系数法、Jaccard系数法等,其具体计算方法在此不做限定。
在分别得到历史需求数据和新版本需求数据中各个关键词之间的语义相似度后,分别将历史需求数据和新版本需求数据中语义相似度大于预定相似度阈值的多个关键词整合作为一个关键词。多个关键词之间的语义相似度大于相似度阈值,表示这些关键词的语义相近,可能是一个词汇的多种表达方式,因此,可将其看作是一个关键词,即将语义相近的各个关键词通过同一关键词进行归类描述。例如:历史需求数据中同时出现“添加”、“新增”的关键词,则将该“添加”、“新增”这两个关键词统一看作是一个表示“新增”含义的关键词,该关键词在历史需求数据中的出现频率为两次。
S32,对历史需求数据和新版本需求数据中的关键词进行关键词映射,得到映射关系。
对历史需求数据和新版本需求数据中语义相似(语义相近)的关键词进行关键词映射,得到历史需求数据和新版本需求数据之间的映射关系,也即是,计算历史需求数据和新版本需求数据之间各个关键词的语义相似度,从而识别出历史需求数据中与新版本需求数据中的关键词语义相似的关键词,为该语义相似的关键词建立映射关系。
S33,根据映射关系,对各个关键词进行数字下标映射,并统计各个关键词的出现次数。
根据各个关键词之间的映射关系,对历史需求数据和新版本需求数据之间的各个关键词建立数字下标映射,即对历史需求数据和新版本需求数据中的每个关键词都建立数字下标,其中,历史需求数据和新版本需求数据中语义相似的关键词所对应的数字下标一致。
在对各关键词建立数字下标时,也可将历史需求数据和新版本需求数据中的共同关键词提取出来,先对其建立数字下标,而后再对其他关键词顺延建立数字下标。
例如,将历史需求数据为接触日历管理版的列表时间维度字段补齐,以及新版本需求数据为接触日历管理版增加历史的时间维度中的各个关键词建立数字下标。
其中,该关键词包括:接触,日历,管理版,增加,历史,列表,时间,维度,字段,补齐。
各关键词的数字下标为:{接触:1;日历:2;管理版:3;列表:4;字段:5;补齐:6;增加:7;历史:8;时间:9;维度:10}。
因此,历史需求数据中各关键词的数字下标为:{接触:1;日历:2;管理版:3;列表:4;字段:5;补齐:6;时间:9;维度:10}。
新版本需求数据中各关键词的数字下标为:{接触:1;日历:2;管理版:3;增加:7;历史:8;时间:9;维度:10}。
在对各个关键词都建立好数字下标之后,依次统计各个关键词分别在历史需求数据和新版本需求数据中的出现次数,例如,关键词“接触”分别在历史需求数据和新版本需求数据中的出现次数都为1次;关键词“历史”在历史需求数据中的出现次数为0次,关键词“历史”在新版本需求数据中的出现次数为1次。
S34,根据每个关键词的数字下标和出现次数,分别对应构建历史需求数据和新版本需求数据的关键词向量。
根据每个关键词的数字下标,以及每个关键词分别在历史需求数据和新版本需求数据中的出现次数,对应构建各个关键词分别在历史需求数据和新版本需求数据中的关键词向量。
例如,关键词“接触”在历史需求数据中所对应的关键词向量为(1,1);关键词“接触”在新版本需求数据中所对应的关键词向量为(1,1);关键词“历史”在历史需求数据中所对应的关键词向量为(8,0);关键词“历史”在新版本需求数据中所对应的关键词向量为(8,1)。
作为一种可行的实施方式,在构建关键词向量时,还可以根据各个关键词对应的数字下标和出现次数,分别建立历史需求数据和新版本需求数据的关键词数组,即将各个关键词对应的数字下标作为关键词数组的下标,各个关键词的出现次数作为关键词数组的元素,而后再根据该关键词数组,得到每个关键词的关键词向量。
例如,关键词“接触”的下标是1,但在历史需求数据和新版本需求数据中都只出现了1次,因此,历史需求数据和新版本需求数据中的数组第一位都是1,其他位置以此类推,可得到历史需求数据的关键词数组和新版本需求数据的关键词数组如下:
历史需求数据=[1,1,1,1,1,1,0,0,1,1];
新版本需求数据=[1,1,1,0,0,0,1,1,1,1]。
而在该历史需求数据中,关键词“接触”所对应的关键词向量为(1,1),关键词“历史”所对应的关键词向量为(8,0);在新版本需求数据中,关键词“接触”所对应的关键词向量为(1,1),关键词“历史”所对应的关键词向量为(8,1)。
S40,根据关键词向量,计算历史需求数据和新版本需求数据之间的相似分数。
计算历史需求数据和新版本需求数据中数字下标一致的关键词向量之间的相似度,将各个关键词向量的相似度进行平均计算,得到历史需求数据和新版本需求数据之间的相似度,对应得到历史需求数据和新版本需求数据之间的相似分数。
在一种可行的实施方式中,如图4所示,步骤S40可具体包括如下步骤:
S41,提取历史需求数据和新版本需求数据中数字下标一致的关键词所对应的关键词向量,作为一个关键词向量组。
提取历史需求数据和新版本需求数据中数字下标一致的关键词所对应的关键词向量,例如,提取在历史需求数据中数字下标为1的关键词“接触”所对应的关键词向量(1,1),以及新版本需求数据中数字下标为1的关键词“接触”所对应的关键词向量(1,1),将这两个关键词向量作为一个关键词向量组。与此同理,可得到历史需求数据和新版本需求数据中数字下标一致的关键词所对应的所有关键词向量组。
S42,计算每组关键词向量组的余弦相似度。
计算每组关键词向量组中两个关键词向量之间的余弦相似度,也即是通过计算两个关键词向量的夹角余弦值来评估这两个关键词向量之间的相似度。其中,余弦相似度是通过测量两个关键词向量之间夹角的余弦值来度量它们之间的相似度。例如,0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而,两个关键词向量之间夹角的余弦值确定两个关键词向量是否大致指向相同的方向。两个关键词向量有相同方向的指向时,余弦相似度的值为1;两个关键词向量夹角为90°时,余弦相似度的值为0;两个关键词向量指向完全相反的方向时,余弦相似度的值为-1。
另外,还可以采用相似度模型计算每组关键词向量组中关键词向量之间的相似度,其相似度模型是通过神经网络训练得到的,其具体获取过程在此不做限定。
S43,当余弦相似度落在预定的余弦相似度与相似分数的映射区间内,则对应确定历史需求数据和新版本需求数据之间的相似分数。
计算得到所有关键词向量组的余弦相似度之后,将各个余弦相似度和预定的余弦相似度与相似分数的映射区间进行比对。当该余弦相似度的值落在其中一个映射区间内,则可根据该映射区间的映射关系,对应确定该余弦相似度对应的相似分数;也即是对应确定该余弦相似度所对应的关键词向量组的相似分数,将各个关键词向量组的相似分数进行平均计算,得到历史需求数据和新版本需求数据之间的相似分数,该相似分数表示历史需求数据和新版本需求数据之间的相似性强度。其中,相似度的值越高,则相似分数越高。
作为一种可行的实施方式,还可以采用相似度模型直接计算历史需求数据和新版本需求数据所对应的关键词数组之间的相似度,从而对应得到历史需求数据和新版本需求数据之间的相似分数。
S50,根据相似分数,确定新版本需求数据的需求类型,以及确定新版本需求数据中与需求类型关联的代码夹带风险等级。
计算得到历史需求数据和新版本需求数据之间的相似分数后,当相似分数大于等于预定分数阈值时,即可确定新版本需求数据的需求类型为迭代需求;当相似分数小于预定分数阈值时,确定新版本需求数据的需求类型为新需求。其中,预定分数阈值的取值在此不做限定,可根据实际情况进行相应设定,迭代需求是指新版本需求与历史需求存在高度相关的需求,新需求为新版本需求与历史需求高度不相关的需求。
计算新版本需求数据中与迭代需求关联的代码的第一虚拟节点重合度;当第一虚拟节点重合度落在预定的重合度与风险等级的映射区间内,则对应确定迭代需求的代码夹带风险等级。
具体地,通过diff算法(Diff algorithm算法)计算新版本需求数据中与迭代需求关联的代码的虚拟节点重合度,将其作为第一虚拟节点重合度。其中,该diff算法采用循环递归的方法对代码中各节点进行同层级比较,计算得到第一虚拟节点重合度。将第一虚拟节点重合度和预定的重合度与风险等级的映射区间进行比对。当该第一虚拟重合度的值落在其中一个映射区间内,则可根据该映射区间的映射关系,对应确定该第一虚拟重合度对应的代码夹带风险等级;也即是对应确定新版本需求数据中迭代需求的代码夹带风险等级。其中,第一虚拟重合度越低,表示代码夹带风险等级越高,则对应的迭代需求的代码夹带风险越高。
计算新版本需求数据中与新需求关联的代码的第二虚拟节点重合度;当第二虚拟节点重合度落在预定的重合度与风险等级的映射区间内,则对应确定新需求的代码夹带风险等级。
具体地,通过diff算法(Diff algorithm算法)计算新版本需求数据中与新需求关联的代码的虚拟节点重合度,将其作为第二虚拟节点重合度。其中,该diff算法采用循环递归的方法对代码中各节点进行同层级比较,计算得到第二虚拟节点重合度。将第二虚拟节点重合度和预定的重合度与风险等级的映射区间进行比对。当该第二虚拟重合度的值落在其中一个映射区间内,则可根据该映射区间的映射关系,对应确定该第二虚拟重合度对应的代码夹带风险等级;也即是对应确定新版本需求数据中新需求的代码夹带风险等级。其中,第二虚拟重合度越低,表示代码夹带风险等级越高,则对应的新需求的代码夹带风险越高。
其中,本实施例在确定新版本需求数据中的需求类型后,可根据需求类型查找到与该需求关联的关联代码,而后计算该关联代码的虚拟节点重合度,以确定代码夹带风险,通过该需求类型可快速定位与需求关联的关联代码,过滤掉无需进行检测的常规的方法类代码,以减少代码夹带检测的代码数量,从而提高代码夹带检测的效率。
在一种可行的实施方式中,当进行代码夹带检测时,可采用代码夹带检测模型直接对新版本需求数据进行代码夹带的检测,该代码夹带检测模型通过内部数据库中已存储的历史需求数据,对历史需求数据和新版本需求数据进行分词处理,得到多个关键词,并分别构建历史需求数据和新版本需求数据对应的关键词向量,而后根据关键词向量计算历史需求数据和新版本需求数据之间的相似度,根据该相似度确定新版本需求的需求类型,并计算与新版本需求关联的代码的虚拟节点重合度,而后根据该虚拟节点重合度评估新版本需求数据中代码夹带风险程度。
进一步地,该代码夹带检测模型的获取过程为,将历史需求数据和新版本需求数据作为训练语料,并采用神经网络对该训练语料进行模型训练,以识别新版需求数据相较于历史需求数据的代码夹带风险,从而得到代码夹带检测模型;通过该代码夹带检测模型可对当前的新版本需求数据进行代码夹带检测。
本发明实施例通过计算新版本需求数据与历史需求数据的相似分数,根据相似分数确定新版本需求数据的需求类型,从而通过需求类型快速定位新版本需求数据中与需求关联的代码,根据与需求关联的代码以确定代码夹带风险,间接剔除不需要检测的常规代码,实现了代码夹带的自动化检测,且检测过程中减少了所需检测的代码量,提高了检测效率;后续可通过对所识别出的代码夹带情况及时进行处理,避免代码夹带对计算机网络造成破坏,提高了计算机程序及网络的安全性。
实施例2
请参照图5,本发明实施例提供一种代码夹带检测装置,该装置包括:
获取模块51,用于获取业务需求数据,其中,所述业务需求数据包括历史需求数据和新版本需求数据;
分词模块52,用于对所述业务需求数据进行分词处理,得到多个关键词;
构建模块53,用于根据各所述关键词,分别构建所述历史需求数据和所述新版本需求数据对应的关键词向量;
计算模块54,用于根据所述关键词向量,计算所述历史需求数据和所述新版本需求数据之间的相似分数;
确定模块55,用于根据所述相似分数,确定所述新版本需求数据的需求类型,以及确定所述新版本需求数据中与所述需求类型关联的代码夹带风险等级。
上述的代码夹带检测装置对应于实施例1的代码夹带检测方法,实施例1中的任何可选项也适用于本实施例,这里不再详述。
本发明实施例还提供了一种计算机设备,该计算机设备包括存储器和至少一个处理器,存储器存储有计算机程序,处理器用于执行计算机程序以实施上述实施例的代码夹带检测方法。
存储器可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据(比如关键词向量、相似分数等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有机器可运行指令,计算机可运行指令在被处理器调用和运行时,计算机可运行指令促使处理器运行上述实施例的代码夹带检测方法的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种代码夹带检测方法,其特征在于,包括:
获取业务需求数据,其中,所述业务需求数据包括历史需求数据和新版本需求数据;
对所述业务需求数据进行分词处理,得到多个关键词;
根据各所述关键词,分别构建所述历史需求数据和所述新版本需求数据对应的关键词向量;
根据所述关键词向量,计算所述历史需求数据和所述新版本需求数据之间的相似分数;
根据所述相似分数,确定所述新版本需求数据的需求类型,以及确定所述新版本需求数据中与所述需求类型关联的代码夹带风险等级。
2.根据权利要求1所述的代码夹带检测方法,其特征在于,所述根据各所述关键词,分别构建所述历史需求数据和所述新版本需求数据对应的关键词向量包括:
计算各个所述关键词之间的语义相似度,将所述语义相似度大于预定相似阈值的多个关键词通过同一关键词进行归类描述;
对所述历史需求数据和所述新版本需求数据中的关键词进行关键词映射,得到映射关系;
根据所述映射关系,对各个所述关键词进行数字下标映射,并统计各个所述关键词的出现次数;
根据每个所述关键词的数字下标和所述出现次数,分别对应构建所述历史需求数据和所述新版本需求数据的关键词向量。
3.根据权利要求2所述的代码夹带检测方法,其特征在于,所述根据所述关键词向量,计算所述历史需求数据和所述新版本需求数据之间的相似分数包括:
提取所述历史需求数据和所述新版本需求数据中数字下标一致的关键词所对应的关键词向量,作为一个关键词向量组;
计算每组所述关键词向量组的余弦相似度;
当所述余弦相似度落在预定的余弦相似度与相似分数的映射区间内,则对应确定所述历史需求数据和所述新版本需求数据之间的相似分数。
4.根据权利要求1所述的代码夹带检测方法,其特征在于,所述根据所述相似分数,确定所述新版本需求数据的需求类型包括:
当所述相似分数大于等于预定分数阈值时,确定所述新版本需求数据的需求类型为迭代需求;
当所述相似分数小于预定分数阈值时,确定所述新版本需求数据的需求类型为新需求。
5.根据权利要求3所述的代码夹带检测方法,其特征在于,所述新版本需求数据的需求类型为迭代需求时,所述确定所述新版本需求数据中与所述需求类型关联的代码夹带风险等级包括:
计算所述新版本需求数据中与所述迭代需求关联的代码的第一虚拟节点重合度;
当所述第一虚拟节点重合度落在预定的重合度与风险等级的映射区间内,则对应确定所述迭代需求的代码夹带风险等级。
6.根据权利要求3所述的代码夹带检测方法,其特征在于,所述新版本需求数据的需求类型为新需求时,所述确定所述新版本需求数据中与所述需求类型关联的代码夹带风险等级包括:
计算所述新版本需求数据中与所述新需求关联的代码的第二虚拟节点重合度;
当所述第二虚拟节点重合度落在预定的重合度与风险等级的映射区间内,则对应确定所述新需求的代码夹带风险等级。
7.根据权利要求1所述的代码夹带检测方法,其特征在于,所述对所述业务需求数据进行分词处理,得到多个关键词包括:
采用分词算法对所述业务需求数据进行分词处理,得到多个分词;
对每个所述分词进行词性标注,得到各所述分词对应的词性;
基于预定停用词表和所述词性,剔除所述多个分词中的停用词,得到多个关键词。
8.一种代码夹带检测装置,其特征在于,包括:
获取模块,用于获取业务需求数据,其中,所述业务需求数据包括历史需求数据和新版本需求数据;
分词模块,用于对所述业务需求数据进行分词处理,得到多个关键词;
构建模块,用于根据各所述关键词,分别构建所述历史需求数据和所述新版本需求数据对应的关键词向量;
计算模块,用于根据所述关键词向量,计算所述历史需求数据和所述新版本需求数据之间的相似分数;
确定模块,用于根据所述相似分数,确定所述新版本需求数据的需求类型,以及确定所述新版本需求数据中与所述需求类型关联的代码夹带风险等级。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器和至少一个处理器,所述存储器存储有计算机程序,所述处理器用于执行所述计算机程序以实施权利要求1-7中任一项所述的代码夹带检测方法。
10.一种计算机存储介质,其特征在于,其存储有计算机程序,所述计算机程序被执行时,实施根据权利要求1-7中任一项所述的代码夹带检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210742997.2A CN115080430A (zh) | 2022-06-27 | 2022-06-27 | 代码夹带检测方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210742997.2A CN115080430A (zh) | 2022-06-27 | 2022-06-27 | 代码夹带检测方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115080430A true CN115080430A (zh) | 2022-09-20 |
Family
ID=83254951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210742997.2A Pending CN115080430A (zh) | 2022-06-27 | 2022-06-27 | 代码夹带检测方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115080430A (zh) |
-
2022
- 2022-06-27 CN CN202210742997.2A patent/CN115080430A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3819785A1 (en) | Feature word determining method, apparatus, and server | |
WO2016188279A1 (zh) | 一种故障谱的生成、基于故障谱的检测方法和装置 | |
Natt och Dag et al. | A feasibility study of automated natural language requirements analysis in market-driven development | |
CN108875040A (zh) | 词典更新方法及计算机可读存储介质 | |
CN107844533A (zh) | 一种智能问答系统及分析方法 | |
CN110543356A (zh) | 异常任务检测方法、装置、设备及计算机存储介质 | |
CN110581864B (zh) | 一种sql注入攻击的检测方法及装置 | |
CN113609261B (zh) | 基于网络信息安全的知识图谱的漏洞信息挖掘方法和装置 | |
CN115186650B (zh) | 数据检测方法及相关装置 | |
Dunn | Frequency vs. association for constraint selection in usage-based construction grammar | |
CN116720515A (zh) | 基于大语言模型的敏感词审核方法、存储介质及电子设备 | |
WO2016068690A1 (en) | Method and system for automated semantic parsing from natural language text | |
CN116932753A (zh) | 日志分类方法、装置、计算机设备、存储介质和程序产品 | |
US7343280B2 (en) | Processing noisy data and determining word similarity | |
Bender et al. | To extend or not to extend? complementary documents | |
CN115080430A (zh) | 代码夹带检测方法、装置、计算机设备和存储介质 | |
CN115422000A (zh) | 异常日志处理方法及装置 | |
CN110929501B (zh) | 文本分析方法和装置 | |
Li | Feature and variability extraction from natural language software requirements specifications | |
CN114417883A (zh) | 一种数据处理方法、装置及设备 | |
RU2500024C2 (ru) | Способ автоматизированного определения языка и (или) кодировки текстового документа | |
Lai et al. | An unsupervised approach to discover media frames | |
Jain et al. | A framework for adaptive deep reinforcement semantic parsing of unstructured data | |
CN112182235A (zh) | 一种构建知识图谱的方法、装置、计算机设备及存储介质 | |
KR101697992B1 (ko) | 다중 개발자 네트워크 기반의 버그 정정 개발자 추천 시스템 및 방법 |
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 |