Java Dependence Analysis(Java静态依赖分析)

2023-09-13 08:21:17

前言

在Java项目项目中,经常会面临依赖升级,依赖变更的情况。通常情况下,无法做到全面的检查,java8以上版本自带的jdeps命令可以对依赖进行分析,但受限于JDK的版本,jdeps功能有一定差异,虽然可以检测到类依赖确实,但通常无法检查到方法的缺失。此工具就是为了全面的解决依赖问题,可以提供成员变量类型、方法参数、方法返回值、方法异常捕获、字节码指令中涉及到类和方法的内容的全面检查
最终通过该工具与jdeps工具的配合,在对项目进行依赖升级后,可以及早的发现项目风险。比如:在处理某一依赖漏洞,只针对某一个依赖升级,关联依赖无法升级的情况。

命令行工具

使用Java8以上版本自带的jdeps也可以进行依赖检查,但是没有那么细致。
在实际使用中,可以将jdeps与该工具协同使用。
JDA源代码地址:https://github.com/lipangeng/Java-Dependence-Analysis

此工具为一个jar文件,通过java -jar的方式运行,并且将异常信息输出至控制台。
示例命令JDA_DEBUG=false JDA_FILTER='com.*' java -jar jda-0.0.1.jar /Users/lipangeng/Downloads/app-upload/WEB-INF/classes /Users/lipangeng/Downloads/app-upload/WEB-INF/lib/*
环境变量 JDA_DEBUG:控制是否打开Debug
环境变量 JDA_FILTER: Java的正则控制,如果缺失的类满足该正则条件,则会在最后打印报告时打印出来,不满足的条件的一律不打印。
环境变量 JDA_OUT: 默认为result.json,会将结果输出为json文件,并且可以在可视化界面中打开该文件,进行可视化查看,可以通过https://jda.lipg.cn访问。
命令行参数: 为classpath,可以为class文件目录,可以为jar文件,可以以/*结尾,加载目录下全部的jar/zip。

运行效果

jdeps 运行效果
JDA运行效果
JDA可视化效果

  • 作者:李盼庚
  • 原文链接:https://blog.csdn.net/LiPanGeng/article/details/125204932
    更新时间:2023-09-13 08:21:17