【技术实现步骤摘要】
一种面向开源软件供应链的跨生态软件检测方法及装置
[0001]本专利技术属于计算机
,涉及一种面向开源软件供应链的跨生态软件检测方法及装置
。
技术介绍
[0002]对于现代软件开发来说,开发过程中不可避免地需要查找和利用开源软件供应链中的第三方库
。
开源软件供应链是一个业务系统在开发和运行过程中,涉及到的所有开源软件上游社区
(Upstream)、
源码包
(Source Package)、
二进制包
(Binary)、
包管理器
(Package Manager)、
存储仓库
(Repository)
,以及开发者
(Developer)
和维护者
(Maintainer)、
社区
(Community)、
基金会
(Foundation)
等,按照依赖
、
组合等形成的供应关系网络
。
引入一个成熟易用的第三方库不仅可以大大减少非必要的冗余开发,更能避免从头开发过程中出现各类难以排查的错误
。
然而,由于不同的第三方库使用不同编程语言实现,当开发人员希望使用一个其它编程语言实现的软件库时,不得不面临跨越不同生态间技术障碍的难题
。
为了促进软件库包的跨生态应用,部分维护人员开始为他们的库发布不同的软件生态版本,第三方开发者也为热门软件库开发了不同编程语言的
APIr/>接口绑定库
。
这些工作使得各语言软件生态开始交织在一起形成一个复杂的
、
跨技术栈的跨生态系统
。
[0003]为了帮助开发者快速找到满足需求的跨生态软件包,如何查找发现对应的跨生态软件包是一个很有意义的任务
。
目前,针对跨生态软件包的研究处于初级阶段,发现跨生态软件包通常基于规则方法
。
大部分针对跨生态包的相关研究利用
GitHub、Gitee
等存储仓库作为跨生态软件存在的主要证据,即通过检测来自不同生态的软件是否对应于同一存储仓库来判断它们是否为对应的跨生态软件
。
然而,并非所有的维护者都将跨生态软件的不同生态版本发布到同一存储库中,第三方开发者编写的跨生态绑定库也通常会使用独立的存储仓库
。
因此,应该依据匹配方法寻找更高召回率的跨生态软件发现方法,避免开发者无法找到期望的跨生态软件
。
技术实现思路
[0004]针对上述当前使用规则方法无法充分检测跨生态软件的问题,本专利技术提出了一种面向开源软件供应链的跨生态软件检测方法,该方法基于图匹配神经网络的软件实体对齐,检测跨生态软件,从而有效提升跨生态软件对匹配的准确度,促进跨生态软件库的发现,提升开发者针对不熟悉的编程语言生态中查找目标软件库的效率
。
[0005]为实现上述目的,本专利技术采用如下技术方案:
[0006]一种面向开源软件供应链的跨生态软件检测方法,包括:
[0007]生成待检测生态圈的软件图谱和目标生态圈的软件图谱;
[0008]获取待检测生态圈的软件图谱中任一软件节点
e
i
的邻域子图;
[0009]获取目标生态圈的软件图谱中与所述软件节点
e
i
的邻域子图相似度最高的
TopK
个邻域子图;
[0010]基于所述
TopK
个邻域子图,得到所述软件节点
e
i
在目标生态圈中的跨生态软件检测结果
。
[0011]进一步地,所述获取目标生态的软件图谱中与所述软件节点
e
i
的邻域子图相似度最高的
TopK
个邻域子图,包括:
[0012]构建训练数据集,所述训练数据集包括若干个不同生态圈的软件数据;
[0013]利用软件数据间存在的证据,构建跨生态软件的对齐种子数据集;
[0014]生成每一生态圈的软件数据对应的软件图谱样本;
[0015]构建跨图邻域信息匹配模型,并基于预训练嵌入训练损失
O
E
和跨图匹配训练损失
Oc
进行所述跨图邻域信息匹配模型的训练;其中,所述跨图邻域信息匹配模型用于:
[0016]基于注意力机制的图神经网络,计算每一软件图谱样本中软件节点的初始嵌入向量表示;
[0017]将对齐种子数据集中的软件节点作为中心节点,对其邻居节点进行采样,以构建该中心节点的邻域子图;
[0018]结合所述初始嵌入向量表示,进行邻域子图的跨图邻域信息更新,以得到软件图谱样本中软件节点的跨图嵌入向量表示;
[0019]聚合跨图嵌入向量表示,得到邻域子图的向量表示,并基于邻域子图的向量表示,计算任两个软件图谱样本中软件节点间的相似度;
[0020]基于训练后的跨图邻域信息匹配模型,得到目标生态的软件图谱中与所述软件节点
ei
的邻域子图相似度最高的
TopK
个邻域子图
。
[0021]进一步地,所述证据包括:
[0022]共同的存储仓库;
[0023]或,
[0024]共同的主页地址
、
相同的开发者或发布组织
、
相同的软件名称
、
相同的描述文本中的任意两种
。
[0025]进一步地,所述预训练嵌入训练损失进一步地,所述预训练嵌入训练损失其中,
S
e
表示对齐种子数据集,
S
′
e
代表通过负采样生成的非对齐软件对集合,
e
i
表示一软件图谱样本中的第
i
个软件节点,
e
j
表示另一软件图谱样本中的第
j
个软件节点,
dist
为距离评价函数,
γ
为间隔超参数
。
[0026]进一步地,所述跨图匹配训练损失进一步地,所述跨图匹配训练损失其中,
S
G
表示跨生态软件的对齐邻域子图对集合,
S
′
G
表示通过负采样生成的非对齐软件的邻域子图对集合,
e
i
表示一软件图谱样本中的第
i
个软件节点,
e
j
表示另一软件图谱样本中的第
j
个软件节点,
dist
为距离评价函数,
γ
为间隔超参数
。
[0027]进一步地,所述基于注意力机制的图神经网络,计算每一软件图谱样本中软件节点的初始嵌入向量表示,包括:
[0028]计算软件节点
e
i本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.
一种面向开源软件供应链的跨生态软件检测方法,其特征在于,所述方法包括:生成待检测生态圈的软件图谱和目标生态圈的软件图谱;获取待检测生态圈的软件图谱中任一软件节点
e
i
的邻域子图;获取目标生态圈的软件图谱中与所述软件节点
e
i
的邻域子图相似度最高的
TopK
个邻域子图;基于所述
TopK
个邻域子图,得到所述软件节点
e
i
在目标生态圈中的跨生态软件检测结果
。2.
如权利要求1所述的方法,其特征在于,所述获取目标生态的软件图谱中与所述软件节点
e
i
的邻域子图相似度最高的
TopK
个邻域子图,包括:构建训练数据集,所述训练数据集包括若干个不同生态圈的软件数据;利用软件数据间存在的证据,构建跨生态软件的对齐种子数据集;生成每一生态圈的软件数据对应的软件图谱样本;构建跨图邻域信息匹配模型,并基于预训练嵌入训练损失
O
E
和跨图匹配训练损失
Oc
进行所述跨图邻域信息匹配模型的训练;其中,所述跨图邻域信息匹配模型用于:基于注意力机制的图神经网络,计算每一软件图谱样本中软件节点的初始嵌入向量表示;将对齐种子数据集中的软件节点作为中心节点,对其邻居节点进行采样,以构建该中心节点的邻域子图;结合所述初始嵌入向量表示,进行邻域子图的跨图邻域信息更新,以得到软件图谱样本中软件节点的跨图嵌入向量表示;聚合跨图嵌入向量表示,得到邻域子图的向量表示,并基于邻域子图的向量表示,计算任两个软件图谱样本中软件节点间的相似度;基于训练后的跨图邻域信息匹配模型,得到目标生态的软件图谱中与所述软件节点
ei
的邻域子图相似度最高的
TopK
个邻域子图
。3.
如权利要求2所述的方法,其特征在于,所述证据包括:共同的存储仓库;或,共同的主页地址
、
相同的开发者或发布组织
、
相同的软件名称
、
相同的描述文本中的任意两种
。4.
如权利要求2所述的方法,其特征在于,所述预训练嵌入训练损失所述的方法,其特征在于,所述预训练嵌入训练损失其中,
S
e
表示对齐种子数据集,
S
′
e
代表通过负采样生成的非对齐软件对集合,
e
i
表示一软件图谱样本中的第
i
个软件节点,
e
j
表示另一软件图谱样本中的第
j
个软件节点,
dist
为距离评价函数,
γ
为间隔超参数
。5.
如权利要求2所述的方法,其特征在于,所述跨图匹配训练损失所述的方法,其特征在于,所述跨图匹配训练损失其中,
S
G
表示跨生态软件的对齐邻域子图对集合,
S
′
G
表示通过负采样生成的非对齐软件的邻域子图对集合,
e
i
表示一软件图谱样本中的第
i
个软件节点,
e
j
表示另一软件图谱样本中的第
j
个软件节点,
dist
为距离评价函数,
γ
为间隔超参数
。6.
如权利要求2所述的方法,其特征在于,所述基于注意力机制的图神经网络,计算每一软件图谱样本中软件节点的初始嵌入向量表示,包括:计算软件节点
e
i
到其邻居节点
e
j
之间的注意力系数
c
ij
;根据所述注意力系数
c
ij
,计算软件节点
e
i
与其邻居节点
e
j
的注意力权重
a
ij
;基于所述注意力权重
a
ij
和邻居节点的嵌入向量表示,对该软件节点
e
i
的嵌入向量表示进行更...
【专利技术属性】
技术研发人员:崔星,吴敬征,罗天悦,武延军,
申请(专利权)人:中国科学院软件研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。