基于可视化图像的代码克隆检测方法、系统、设备及介质

文档序号:33812872发布日期:2023-04-19 14:22阅读:来源:国知局

技术特征:

1.基于可视化图像的代码克隆检测方法,其特征在于,包括下述步骤:

2.根据权利要求1所述基于可视化图像的代码克隆检测方法,其特征在于,所述去除所述.java文件中代码的注释,包括单行注释、多行注释以及文档注释。

3.根据权利要求1所述基于可视化图像的代码克隆检测方法,其特征在于,所述将所述代码函数文件中的代码字符转为ascii码,再将ascii码的值填充为rgb三原色色值,获得rgb像素点,像素点组合成可视化彩色图像,得到代码可视化图像;具体为:

4.根据权利要求1所述基于可视化图像的代码克隆检测方法,其特征在于,所述通过smote算法合成新的克隆代码可视化图像是指:如果克隆代码可视化图像的数量远小于非克隆代码可视化图像的数量,则采用smote算法,对克隆代码可视化图像中的每个样本x,从样本x近邻中随机选一个克隆代码可视化图像y,然后将x,y合成为新的克隆代码可视化图像,从而降低过拟合的风险;然后将克隆代码可视化图像标签为1,非克隆代码可视化图像标签为0。

5.根据权利要求1所述基于可视化图像的代码克隆检测方法,其特征在于,所述transformer编码模块,具体的:在transformer子网络中包括若干个结构相同的transformer编码模块;其中,transformer编码模块包括多头自注意模块和多层感知机模块;

6.根据权利要求1所述基于可视化图像的代码克隆检测方法,其特征在于,所述稀疏注意力模块,具体的:若transformer子网络包含l个transformer编码模块,稀疏注意力模块利用前l-1个transformer编码模块学习到的权重对最后的transformer编码模块输入的隐含特征进行筛选;由于高层次特征的抽象性,注意力图难以表示对应输入可视化图像块的特征信息;因此,使用先前所有transformer编码模块学习到的注意力图信息,结合压缩激励模块,自主学习每个注意力图的权重,即稀疏注意力模块首先将先前得到的注意力图信息通过平均池化融合为二维矩阵,然后使用两个全连接层来建模注意力图信息之间的相关性,获得每个注意力图的权重值;最后,将权重值归一化后与注意力图加权求和,以获得最终的注意力权重。

7.根据权利要求1所述基于可视化图像的代码克隆检测方法,其特征在于,所述transformer子网络将克隆代码可视化图像对或非克隆代码可视化图像对映射至高维特征空间,输出对应的表征,根据所述表征利用contrastive loss损失函数计算得到表征距离;具体为:

8.基于可视化图像的代码克隆检测系统,其特征在于,应用于权利要求1-7中任一项所述的基于可视化图像的代码克隆检测方法,包括数据集制作模块、代码可视化模块、数据预处理模块、克隆检测模型构建模块以及克隆检测模块;

9.一种电子设备,其特征在于,所述电子设备包括:

10.一种计算机可读存储介质,存储有程序,其特征在于,所述程序被处理器执行时,实现权利要求1-7任一项所述的基于可视化图像的代码克隆检测方法。


技术总结
本发明公开了一种基于可视化图像的代码克隆检测方法、系统、设备及介质,包括:去除Java代码中的注释,并调用javaparser中的VoidVisitorAdapter,将.java文件中的代码函数分离出来;将代码函数文件中的代码字符转为ASCII码,再将ASCII码的值填充为RGB三原色色值,获得RGB像素点,像素点组合成可视化彩色图像,得到代码的可视化图像;将代码可视化图像划分为克隆代码可视化图像和非克隆代码可视化图像;将代码可视化图像输入至预先设立的克隆检测模型进行训练,得到训练好的克隆检测模型;将待检测的代码可视化图像输入至训练好的克隆检测模型进行检测,得到检测结果。本发明将代码转换为可视化图像能够较为完整地保留代码信息,避免因图的中间形式转换而导致代码信息丢失。

技术研发人员:邱少健,彭梦晴,胡叶红,王劭晟,黄梦阳,黄晖豪,李琦伟
受保护的技术使用者:华南农业大学
技术研发日:
技术公布日:2024/1/13
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1