1.一种基于编码特征的SQL代码抄袭检测方法,其特征在于,步骤包括:S1.编码特征提取:输入指定编码任务下所有的待检测SQL代码,分别提取出各待检测SQL代码中用于表征编写者在当前SQL编码任务下编码特性的特定编码特征,以及提取用于表征编写者在当前SQL编码任务下所展现出的泛化性编码特性的泛化编码特征;
S2.抄袭群体检测:将提取得到的所有特定编码特征进行聚类,根据聚类结果确定得到抄袭群体,将所述特定编码特征属于同一类的待检测SQL代码作为一个抄袭群体;
S3.泛化特征匹配:分别获取所述抄袭群体中各待检测SQL代码进行判断,判断时将待检测SQL代码的泛化编码特征与待检测SQL代码所对应的编写者的历史泛化编码特征进行比较,所述历史泛化编码特征由对应编写者多个历史SQL代码数据提取得到的泛化编码特征计算得到,根据判断结果判定待检测SQL代码是否属于抄袭或是被抄袭;
S4.抄袭检测输出:将各所述抄袭群体中各待检测SQL代码的抄袭判定结果输出。
2.根据权利要求1所述的基于编码特征的SQL代码抄袭检测方法,其特征在于:所述特定编码特征包括SQL关键字特征、SCHEMA特征、函数特征、关系运算符特征、括号特征、空格特征、缩进特征、换行特征中任意一种或两种以上的组合。
3.根据权利要求1所述的基于编码特征的SQL代码抄袭检测方法,其特征在于:所述泛化编码特征包括泛化关键字特征、泛化括号特征、泛化换行特征、泛化空格特征、泛化缩进特征、字段名修饰特征中任意一种或两种以上的组合。
4.根据权利要求1或2或3所述的基于编码特征的SQL代码抄袭检测方法,其特征在于,所述步骤S2的步骤包括:
S21.将提取得到的所有特定编码特征进行归一化处理,得到处理后的特定编码特征;
S22.对所述处理后的特定编码特征进行聚类,输出聚类得到的聚类簇;
S23.对得到的所述聚类簇进行判断,若目标聚类簇中元素的数量超过预设阈值,将目标聚类簇判定为所述抄袭群体,输出检测到的抄袭群体。
5.根据权利要求4所述的基于编码特征的SQL代码抄袭检测方法,其特征在于,所述步骤S22中采用凝聚式层次聚类算法进行聚类。
6.根据权利要求1或2或3所述的基于编码特征的SQL代码抄袭检测方法,其特征在于,所述步骤S3中,通过比较待检测SQL代码与对应的历史泛化编码特征之间的相似度值,判断待检测SQL代码是否属于抄袭或是被抄袭。
7.根据权利要求6所述的基于编码特征的SQL代码抄袭检测方法,其特征在于,所述步骤S3的具体步骤包括:
S31.遍历各个所述抄袭群体中所有待检测SQL代码,获取一个待检测SQL代码作为当前SQL代码,转入步骤S32;
S32.获取当前SQL代码以及当前SQL代码所对应的编写者的历史泛化编码特征,并计算获取的当前SQL代码与对应的所述历史泛化编码特征之间的相似度值;
S33.对计算得到的所述相似度值进行判断,若所述相似度值超过预设阈值,则判定当前SQL代码为抄袭;否则判定当前SQL代码为被抄袭,并使用所述泛化编码特征更新当前SQL代码对应编码者的历史泛化编码特征;
S34.取下一个待检测SQL代码作为当前SQL代码,返回步骤S32,直至遍历完所述抄袭群体中所有待检测SQL代码。
8.一种基于编码特征的SQL代码抄袭检测系统,其特征在于,包括:编码特征提取模块,用于输入指定编码任务下所有的待检测SQL代码,分别提取出各待检测SQL代码中用于表征编写者在当前SQL编码任务下编码特性的特定编码特征,以及提取用于表征编写者在当前SQL编码任务下所展现出的泛化性编码特性的泛化编码特征;
抄袭群体检测模块,用于将提取得到的所有特定编码特征进行聚类,根据聚类结果确定得到抄袭群体,将所述特定编码特征属于同一类的待检测SQL代码作为一个抄袭群体;
泛化特征匹配模块,用于分别获取所述抄袭群体中各待检测SQL代码进行判断,判断时将待检测SQL代码的泛化编码特征与待检测SQL代码所对应的编写者的历史泛化编码特征进行比较,所述历史泛化编码特征由对应编写者多个历史SQL代码数据提取得到的泛化编码特征计算得到,根据判断结果判定待检测SQL代码是否属于抄袭或被抄袭;
抄袭检测输出模块,用于将各所述抄袭群体中各待检测SQL代码的抄袭判定结果输出。
9.一种基于编码特征的SQL代码抄袭检测系统,包括处理器以及存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序,其特征在于,所述处理器用于执行所述计算机程序,以执行如权利要求1~7中任意一项所述方法。
10.一种存储有计算机程序的计算机可读存储介质,所述计算机程序执行时实现如权利要求1~7中任意一项所述的方法。