摘要

本发明将图对比学习思想引入到代码漏洞检测任务中,提出了一种基于图对比学习的代码漏洞检测方法,可分为初始节点表示获取和基于图对比学习的代码漏洞检测两个阶段。在初始节点表示获取中,首先根据代码生成抽象语法树,然后在抽象语法树的基础上添加多种代表节点之间关系的边,得到代码AST扩展图,最后使用word2vec生成初始节点表示。在基于图对比学习的代码漏洞检测阶段中过,首先通过图编码器来生成最终节点与最终图表示,然后利用这些表示之间信息的交互判断代码是否有漏洞。本发明使用无监督方式训练模型,因此无需数据标签即可检测代码漏洞,在包含多种语言代码漏洞的开源数据集SARD上的6种漏洞检测的对比实验验证了本发明的有效性。