1.一种内存溢出处理方法,其特征在于,包括:
获取待检测系统的源码文件,并对所述源码文件进行解析得到语法树结构;
基于预先设置的内存溢出检测规则对所述语法树结构进行检测,得到存在内存溢出风险的目标树节点;
对所述目标树节点进行修复,得到对源码文件进行内存溢出处理后的目标文件。
2.根据权利要求1所述的方法,其特征在于,对所述源码文件进行解析得到语法树结构,包括:
基于psi对所述源码文件进行解析,得到第一语法树结构;
基于pmd对所述源码文件进行解析,得到第二语法树结构。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据内存溢出风险的共性特征,抽取内存溢出风险对应的代码特征;
对所述代码特征进行分类,并根据分类结果确定内存溢出检测规则。
4.根据权利要求3所述的方法,其特征在于,其中,分类结果包括访问对象分类结果,
相应的,根据分类结果确定内存溢出检测规则,包括:
根据访问对象分类结果设置不同的访问接口,通过所述访问接口实现内存溢出检测规则的具体实现。
5.根据权利要求4所述的方法,其特征在于,所述访问对象分类结果包括:类对象、方法调用表达式对象、新定义变量表达式对象和赋值表达式对象。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
根据所述代码特征为每条内存溢出检测规则设置关联的修复方案。
7.根据权利要求6所述的方法,其特征在于,对所述目标树节点进行修复,包括:
确定检测所述目标树节点关联的目标内存溢出检测规则,并确定与所述目标内存溢出检测规则关联的目标修复方案;
根据所述目标修复方案对所述目标树节点进行修复。
8.根据权利要求7所述的方法,其特征在于,所述目标修复方案包括根据所述目标树节点的特征,在所述语法树结构中添加或修改所述目标树节点的子节点。
9.根据权利要求1所述的方法,其特征在于,每条内存溢出检测规则对应一个检测实现类;
相应的,基于预先设置的内存溢出检测规则对所述语法树结构进行检测,得到存在内存溢出风险的目标树节点,包括:
确定目标内存溢出检测规则对应的目标检测实现类;
将所述语法树结构以接口参数的形式传入所述目标检测实现类中,由所述目标检测实现类对所述语法树结构中的树节点进行检测,得到目标树节点。
10.根据权利要求9所述的方法,其特征在于,确定目标内存溢出检测规则对应的目标检测实现类,包括:
若所述目标内存溢出检测规则为类对象检测规则,则调用类对象检测实现类对所述语法树中的类对象树节点进行检测;
若所述目标内存溢出检测规则为方法对象检测规则,则调用方法对象检测实现类对所述语法树中的方法对象树节点进行检测;
若所述目标内存溢出检测规则为新定义变量对象检测规则,则调用新定义变量对象检测实现类对所述语法树中的新定义变量对象树节点进行检测;
若所述目标内存溢出检测规则为赋值表达式对象检测规则,则调用赋值表达式对象检测实现类对所述语法树中的赋值表达式对象树节点进行检测。
11.根据权利要求9所述的方法,其特征在于,由所述目标检测实现类对所述语法树结构中的树节点进行检测,包括:
通过所述目标检测实现类确定检测对象树节点,并根据检测对象确定同类型的上下文节点信息,
根据所述检测对象树节点和所述上下文节点信息对所述检测对象树节点进行检测。
12.根据权利要求1所述的方法,其特征在于,所述内存溢出检测规则中至少包括如下一项:规则描述信息、错误提示信息以及规则显示级别信息。
13.一种内存溢出处理装置,其特征在于,包括:
源码解析模块,用于获取待检测系统的源码文件,并对所述源码文件进行解析得到语法树结构;
语法树检测模块,用于基于预先设置的内存溢出检测规则对所述语法树结构进行检测,得到存在内存溢出风险的目标树节点;
节点修复模块,用于对所述目标树节点进行修复,得到对源码文件进行内存溢出处理后的目标文件。
14.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-12中任一所述的内存溢出处理方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-12中任一所述的内存溢出处理方法。