我有一个相对复杂的java项目,有很多可能没有使用的类。
代码库的静态分析与某些类相关,但有些是动态加载的(网络服务,持久数据等)
是否有方法可以获取jvm中主动使用的已弃用类列表,因此我可以知道是否使用了这些类?
[我知道可能会有#34;卧铺课程"只使用很少,但这是我可以承担的风险]
答案 0 :(得分:1)
您可以尝试使用-deprecation(或-Xlint:deprecation)进行编译,以查看已弃用的API的使用,如果您必须使用源代码(我猜您已经拥有它)
答案 1 :(得分:1)
JVM可以选择打印有关所有已使用类的信息。例如:
java -verbose:class ...
您仍然需要通过其他方式过滤掉已弃用的内容。
答案 2 :(得分:1)
我能想到以下几点:
以
形式为每个类添加静态初始值设定项静态{
//在这里你可以获得创意:
//要么写一个文件,每个类打印其名称
//或者System.err输出类名,然后稍后获取整个输出。
}
如果你懒得手动添加这段代码,你可以编写简单的程序,将这个初始化程序附加到以.java结尾的所有文件。
这是获取正在使用的所有类的列表的简单方法(我认为)。 祝你好运!
答案 3 :(得分:1)
过去我曾使用过像UCDetector这样的工具。但这需要人工评估,这对大型项目来说可能是痛苦的。您可以进行如下文本分析:
对于静态代码分析,列出已使用IDE已提供源的已弃用方法。
WARNING
并检查其他项目。Deprecation
使用列表组合在一起,将内容复制为文本,您可以使用它来进一步准备脚本/ excel进行分析from the type
"和" is deprecated
"使用制表符The method
"和" from the type
" with制表符)。 对于使用反射等的动态代码,没有单一的子弹方法。您可以使用方法名称过滤基本内容。
The method
"和#34; from the type
"替换为制表符。 答案 4 :(得分:0)
全部删除它们并尝试运行您的应用程序。每次为其中一个获得ClassNotFoundException
时,请将其写下来并重新添加课程。冲洗并重复。