1.一种依赖关系检测方法,其特征在于,包括:
扫描磁盘中特定Java项目中所有项目文件之间的文件夹引用关系,以得出所述Java项目的所有内部依赖关系;
扫描所述Java项目中的所有import语句,得出所述import语句中所有的文件夹引用关系,以得到所述Java项目的所有依赖关系;
在所述import语句中记录了所述Java项目的所有所述依赖关系,所述依赖关系包括所述Java项目的所述内部依赖关系与外部依赖关系;以所述内部依赖关系作为剔除参照参数,对所述依赖关系中包含的所述内部依赖关系进行剔除,得到所述Java项目的所有外部依赖关系;
将所有所述外部依赖关系以树形结构形式进行输出;
其中,所述扫描磁盘中特定Java项目所有项目文件之间的文件夹引用关系,以得出所述特定Java项目的所有内部依赖关系的步骤,包括:检测所述项目文件的具体文件格式,并根据所述具体文件格式到预设扫描规则列表中查找对应的具体扫描规则;在所述预设扫描规则列表中,不同的所述具体文件格式对应不同的所述具体扫描规则;
根据所述具体扫描规则对所述项目文件进行扫描,扫描磁盘中所述Java项目所有项目文件时,将所述项目文件中的起始行代码作为所述内部依赖关系的起点,然后遍历得出所述项目文件的文件夹引用关系,并以树形结构逻辑进行表示输出,以得出所述Java项目的所有所述内部依赖关系。
2.根据权利要求1所述的依赖关系检测方法,其特征在于,所述遍历得出所述项目文件的文件夹引用关系,并以树形结构逻辑进行表示输出的步骤,包括:获取所述项目文件中所有的文件夹节点或者包路径节点,并根据所述文件夹节点或所述包路径节点的字符串的ascii码进行排序,形成节点队列;
按照所述节点队列的排序,逐个选取所述文件夹节点或所述包路径节点作为引用起点进行遍历,得出所述文件夹引用关系;
以树形结构逻辑进行遍历时,实时检测所述文件夹引用关系中每个所述文件夹节点或所述包路径节点的出现次数;
若同一所述文件夹节点或所述包路径节点出现的次数大于等于两次,则判定该所述文件夹节点或所述包路径节点在所述Java项目中形成了循环依赖关系,并将所述循环依赖关系进行剔除。
3.根据权利要求1所述的依赖关系检测方法,其特征在于,在所述将所有所述外部依赖关系以树形结构形式进行输出的步骤之后,还包括:根据所述外部依赖关系,对所述Java项目中引用的所有外部文件包分别进行第一文件包hash值计算,所述第一文件包hash值由对所述外部文件包的包含内容进行hash计算得到;
以所述第一文件包hash值代替所述外部依赖关系中的外部文件包名称,以所述第一文件包hash值的形式对所述外部依赖关系进行描述表示。
4.根据权利要求3所述的依赖关系检测方法,其特征在于,所述根据所述外部依赖关系,对所述Java项目中引用的所有外部文件包分别进行第一文件包hash值计算的步骤,包括:在以树形结构表示的所述外部依赖关系中选定一个节点,按照树形结构展开逐个节点获取所述Java项目中引用的所述外部文件包;
采用MD5或SHA-1对所述外部文件包进行hash计算,得到所述第一文件包hash值;
重复以上步骤,直至遍历所有节点,停止获取所述外部文件包。
5.根据权利要求1所述的依赖关系检测方法,其特征在于,在所述将所有所述外部依赖关系以树形结构形式进行输出的步骤之后,还包括:根据所述外部依赖关系,扫描所有外部文件包在所述Java项目中的文件引用关系,得到所述Java项目在所述外部文件包中直接引用的特定class文件,并将所述文件引用关系添加到所述外部依赖关系中,以树形结构形式进行输出,得到所述Java项目的外部文件依赖关系;
根据所述外部文件依赖关系,采用默克尔树算法分别计算出所述特定class文件的文件hash值、所述外部文件包的第二文件包hash值以及所述Java项目的项目hash值,并以默克尔树的形式进行输出。
6.根据权利要求1所述的依赖关系检测方法,其特征在于,在所述扫描所述Java项目中的所有import语句,得出所述import语句中所有的文件夹引用关系,以得到所述Java项目的所有依赖关系的步骤之前,还包括:实时与代码仓库进行同步,获得所述Java项目中的所有构建代码,所述构建代码包括所述import语句;所述构建代码通过git、svn或者文件方式存储于所述代码仓库中。
7.一种依赖关系检测装置,其特征在于,包括:
第一扫描模块,用于扫描磁盘中特定Java项目中所有项目文件之间的文件夹引用关系,以得出所述Java项目的所有内部依赖关系;
第二扫描模块,用于扫描所述Java项目中的所有import语句,得出所述import语句中所有的文件夹引用关系,以得到所述Java项目的所有依赖关系;在所述import语句中记录了所述Java项目的所有所述依赖关系,所述依赖关系包括所述Java项目的所述内部依赖关系与外部依赖关系;
剔除模块,用于在所述第二扫描模块扫描所述import语句同时或之后,以所述内部依赖关系作为剔除参照参数,对所述依赖关系中包含的所述内部依赖关系进行剔除,得到所述Java项目的所有外部依赖关系;
输出模块,用于将所有所述外部依赖关系以树形结构形式进行输出;
其中,所述第一扫描模块具体用于检测所述项目文件的具体文件格式,并根据所述具体文件格式到预设扫描规则列表中查找对应的具体扫描规则;在所述预设扫描规则列表中,不同的所述具体文件格式对应不同的所述具体扫描规则;
根据所述具体扫描规则对所述项目文件进行扫描,扫描磁盘中所述Java项目所有项目文件时,将所述项目文件中的起始行代码作为所述内部依赖关系的起点,然后遍历得出所述项目文件的文件夹引用关系,并以树形结构逻辑进行表示输出,以得出所述Java项目的所有所述内部依赖关系。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
9.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。