一种源代码分类方法、装置及电子设备和存储介质制造方法及图纸

技术编号:35545071 阅读:20 留言:0更新日期:2022-11-12 15:23
本申请公开了一种源代码分类方法、装置及一种电子设备和计算机可读存储介质,该方法包括:获取目标源代码;提取目标源代码的目标单词类型信息,并基于目标单词类型信息生成目标源代码的目标特征向量;将目标特征向量输入训练完成的分类模型中,以预测目标源代码的类型。由此可见,本申请提供的源代码分类方法,提高了分类的准确度,降低了性能要求。降低了性能要求。降低了性能要求。

【技术实现步骤摘要】
一种源代码分类方法、装置及电子设备和存储介质


[0001]本申请涉及计算机
,更具体地说,涉及一种源代码分类方法、装置及一种电子设备和一种计算机可读存储介质。

技术介绍

[0002]不同于Office和Windows PE文件等结构化文件,源代码文件在文件开头部分并没有标识其文件类型的唯一文件类型后缀。在文件后缀名未知的条件下,各种编程语言的源代码被操作系统统一地看做文本类型文件。文件后缀名在网络传输、解压和存储中并非必要,且可简便地通过文件改名添加,因此无后缀名的源代码文件广泛存在。
[0003]反病毒系统根据文件类型对被测文件分流处理,不同类型的文件被分流至不同的检测流程,不同的检测流程对应不同的检测算法,从而实现精细化的病毒检测功能,提升病毒检测效果。例如,反病毒系统对VBScript源代码和PowerShell源代码可能采用了不同的检测算法。如果将一个VBScript病毒文件误识别为PowerShell源代码,则该文件送入检测PowerShell病毒的检测流程,很可能造成漏报。
[0004]在相关技术中,通过词法分析(Lexical Analysis)和语法分析(Syntax Analysis)进行源代码类型的识别。词法分析将字符序列转换为单词序列,语法分析在词法分析的基础上构建由输入单词组成的抽象语法树,并进行语法检查。具体地,根据程序设计语言G的标准,构造语法分析器m,若被测文件P能够被m识别,则判定P是G的源代码。但是,词法分析对系统性能要求较高,另外对于一些病毒脚本,其故意在文件的尾部加入不符合语法的语句,导致上述方案无法识别源代码类型。
[0005]因此,如何在源代码类型识别时提高准确度、降低性能要求是本领域技术人员需要解决的技术问题。

技术实现思路

[0006]本申请的目的在于提供一种源代码分类方法、装置及一种电子设备和一种计算机可读存储介质,在源代码类型识别时提高了准确度、降低了性能要求。
[0007]为实现上述目的,本申请提供了一种源代码分类方法,包括:
[0008]获取目标源代码;
[0009]提取所述目标源代码的目标单词类型信息,并基于所述目标单词类型信息生成所述目标源代码的目标特征向量;
[0010]将所述目标特征向量输入训练完成的分类模型中,以预测所述目标源代码的类型。
[0011]其中,所述提取所述目标源代码的目标单词类型信息,包括:
[0012]对所述目标源代码进行词法分析,以将所述目标源代码转换为目标单词序列;
[0013]确定所述目标单词序列中每个单词所属的单词类型,并基于每个单词所属的单词类型提取所述目标源代码的目标单词类型信息。
[0014]其中,所述单词类型包括关键字、标识符和符号中任一项或任几项的组合。
[0015]其中,所述单词类型信息包括每个单词所属的单词类型和/或所有所述单词类型有序n元组。
[0016]其中,所述单词类型有序n元组包括单词类型有序二元组、单词类型有序三元组和单词类型有序四元组中任一项或任几项的组合。
[0017]其中,还包括:
[0018]获取训练集,并对所述训练集中的每个训练源代码进行类型标注;
[0019]提取每个所述训练源代码的训练单词类型信息,并基于每个所述训练单词类型信息生成对应的训练源代码的训练特征向量;
[0020]利用所述训练源代码和对应的训练特征向量训练分类模型,以得到训练完成的分类模型。
[0021]其中,所述训练源代码的类型包括C程序、C++程序、Java程序、Python程序、PowerShell程序、JavaScript程序、VBScript程序、Bash程序和Go程序中任一项或任几项的组合。
[0022]为实现上述目的,本申请提供了一种源代码分类装置,包括:
[0023]获取模块,用于获取目标源代码;
[0024]提取模块,用于提取所述目标源代码的目标单词类型信息,并基于所述目标单词类型信息生成所述目标源代码的目标特征向量;
[0025]预测模块,用于将所述目标特征向量输入训练完成的分类模型中,以预测所述目标源代码的类型。
[0026]为实现上述目的,本申请提供了一种电子设备,包括:
[0027]存储器,用于存储计算机程序;
[0028]处理器,用于执行所述计算机程序时实现如上述源代码分类方法的步骤。
[0029]为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述源代码分类方法的步骤。
[0030]通过以上方案可知,本申请提供的一种源代码分类方法,包括:获取目标源代码;提取所述目标源代码的目标单词类型信息,并基于所述目标单词类型信息生成所述目标源代码的目标特征向量;将所述目标特征向量输入训练完成的分类模型中,以预测所述目标源代码的类型。
[0031]在本申请中,将源代码表示为特征向量,通过机器学习算法训练的分类模型完成对源代码类型的识别,提高了源代码类型识别的准确度。另外,源代码的特征向量基于其单词类型信息生成,在一定程度上达到了语法分析的效果,但不承担语法分析的性能负担。由于在特征表示时未使用语法分析,因此能够天然地能够容忍源代码的语法错误。由此可见,本申请提供的源代码分类方法,提高了分类的准确度,降低了性能要求。本申请还公开了一种源代码分类装置及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。
[0032]应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
[0033]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
[0034]图1为根据一示例性实施例示出的一种源代码分类方法的流程图;
[0035]图2为根据一示例性实施例示出的一种训练分类模型的流程图;
[0036]图3为根据一示例性实施例示出的一种源代码分类装置的结构图;
[0037]图4为根据一示例性实施例示出的一种电子设备的结构图。
具体实施方式
[0038]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。另外,在本申请实施例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种源代码分类方法,其特征在于,包括:获取目标源代码;提取所述目标源代码的目标单词类型信息,并基于所述目标单词类型信息生成所述目标源代码的目标特征向量;将所述目标特征向量输入训练完成的分类模型中,以预测所述目标源代码的类型。2.根据权利要求1所述源代码分类方法,其特征在于,所述提取所述目标源代码的目标单词类型信息,包括:对所述目标源代码进行词法分析,以将所述目标源代码转换为目标单词序列;确定所述目标单词序列中每个单词所属的单词类型,并基于每个单词所属的单词类型提取所述目标源代码的目标单词类型信息。3.根据权利要求2所述源代码分类方法,其特征在于,所述单词类型包括关键字、标识符和符号中任一项或任几项的组合。4.根据权利要求2所述源代码分类方法,其特征在于,所述单词类型信息包括每个单词所属的单词类型和/或所有所述单词类型有序n元组。5.根据权利要求4所述源代码分类方法,其特征在于,所述单词类型有序n元组包括单词类型有序二元组、单词类型有序三元组和单词类型有序四元组中任一项或任几项的组合。6.根据权利要求1至5中任一项所述源代码分类方法,其特征在于,还包括:获取训练集,并对所述训练集中的每个训练源代码进行类型标注;...

【专利技术属性】
技术研发人员:闫华位凯志古亮
申请(专利权)人:深信服科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1