【技术实现步骤摘要】
代码克隆检测方法、装置以及电子设备
本申请涉及软件克隆
,具体涉及一种代码克隆检测方法。本申请同时涉及一种代码克隆检测装置,以及一种电子设备。
技术介绍
随着软件系统规模的日趋扩大化和复杂化,软件开发工作也越来越繁重,在软件开发过程中,软件开发人员经常参照已有代码来实现类似功能,或者直接通过复制粘贴来“复用”已有代码,生成许多语义和功能上类似的代码,这就是代码克隆。尽管这种重用代码的方式在某种程度上能提高软件开发效率,但代码克隆却导致软件Bug(漏洞)的扩散,同时也导致软件维护难度加大,甚至会触发许可违规的风险;因此,代码克隆检测也随着软件的维护和发展变得愈加重要。目前,已提出许多代码克隆检测的方法和工具,这些方法和工具主要可分为三类:基于文本的代码克隆检测、基于标记的代码克隆检测以及基于树的代码克隆检测。其中,基于文本的代码克隆检测工具主要有NiCadCloneDetector,该工具首先对源代码进行了少量预处理,即格式化和标准化排版,然后通过简单的文本行比较来对潜在克隆代码进行动态聚类。基于标记的代码克隆检 ...
【技术保护点】
1.一种代码克隆检测方法,其特征在于,包括:/n获取至少两个版本的源代码组成的源代码集;/n将所述至少两个版本的源代码分别转换为对应的代码特征向量;/n将所述至少两个版本的源代码对应的代码特征向量输入集成分类模型进行克隆检测,获得克隆检测结果。/n
【技术特征摘要】
1.一种代码克隆检测方法,其特征在于,包括:
获取至少两个版本的源代码组成的源代码集;
将所述至少两个版本的源代码分别转换为对应的代码特征向量;
将所述至少两个版本的源代码对应的代码特征向量输入集成分类模型进行克隆检测,获得克隆检测结果。
2.根据权利要求1所述的代码克隆检测方法,其特征在于,所述将所述至少两个版本的源代码分别转换为对应的代码特征向量,包括:
针对所述源代码集中至少两个版本的源代码,执行如下操作:
基于代码字符语料库,提取所述源代码包含的所述代码字符语料库中的代码字符单元;
构建所述代码字符单元的语义向量;
根据所述代码字符单元的语义向量生成所述源代码的语义矩阵;
将所述源代码的语义矩阵转换为语义向量,作为所述源代码对应的代码特征向量。
3.根据权利要求1所述的代码克隆检测方法,其特征在于,所述集成分类模型,采用如下方式训练获得:
获取原始训练代码集中至少两个版本的训练源代码;
将所述至少两个版本的训练源代码分别转换为对应的训练特征向量;
利用转换获得的至少两个训练特征向量进行模型训练。
4.根据权利要求3所述的代码克隆检测方法,其特征在于,所述利用转换获得的至少两个训练特征向量进行模型训练子步骤执行之前,包括:
对所述原始训练代码集中正向训练数据和负向训练数据进行平衡处理;
其中,所述正向训练数据是指所述至少两个版本的训练源代码存在克隆代码,所述负向训练数据是指所述至少两个版本的训练源代码不存在克隆代码。
5.根据权利要求4所述的代码克隆检测方法,其特征在于,所述对所述原始训练代码集中正向训练数据和负向训练数据进行平衡处理,包括:
计算所述原始训练代码集中正向训练数据与负向训练数据之比;
若所述正向训练数据与负向训练数据之比小于目标比,则在所述原始训练代码集随机选择负向训练数据加入所述原始训练代码集;
若所述正向训练数据与负向训练数据之比大于目标比,则在所述原始训练代码集随机选择正向训练数据加入所述原始训练代码集。
6.根据权利要求3所述的代码克隆检测方法,其特征在于,所述将所述至少两个版本的...
【专利技术属性】
技术研发人员:傅珉,杨昕立,鄢萌,李元平,章修琳,吴芮,杨小虎,
申请(专利权)人:浙江大学,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。