Java FindBugs能否用于标记使用';他被列入黑名单了吗?

Java FindBugs能否用于标记使用';他被列入黑名单了吗?,java,findbugs,Java,Findbugs,我们正在尝试将我们非常大的代码库从Guava11迁移到Guava14,并希望了解已删除或不推荐的API的使用情况。FindBugs可以执行这种检查吗?如果是这样,怎么做?一个解决方案就是使用Oracle的Java编译器javac来完成这项工作 如果使用API中删除的方法,将导致编译器错误,因此应该可以通过编译代码找到这些方法 不推荐使用的方法可以使用javac-deprecation选项找到。有关-弃用的详细信息,请参见: 您也可以将PMD用于此任务。有一些规则允许您查找不推荐的方法我认为jav

我们正在尝试将我们非常大的代码库从Guava11迁移到Guava14,并希望了解已删除或不推荐的API的使用情况。FindBugs可以执行这种检查吗?如果是这样,怎么做?

一个解决方案就是使用Oracle的Java编译器
javac
来完成这项工作

如果使用API中删除的方法,将导致编译器错误,因此应该可以通过编译代码找到这些方法

不推荐使用的方法可以使用javac
-deprecation
选项找到。有关
-弃用的详细信息,请参见:

您也可以将PMD用于此任务。有一些规则允许您查找不推荐的方法

我认为
javac
不会涉及的一个方面是,如果您无法更改第三方代码以添加
@deprecated
注释。如果您只是想避免使用未被标记为已弃用的方法,可以使用我为FindBugs编写的插件:


文档很少,所以您可能需要自己探索一下。它允许在属性文件中配置要避免的方法和类。我用它来反对
org.junit.Assert.assertThat

我们的代码库是一个巨大的模块森林,具有(当前)未知的依赖项和不同的构建方式。如果Guava 14被抛出,那么很多构建都会中断(可能有运行时错误),并且在它们的依赖关系被修复之前无法修复。那么问题是什么呢?您现在知道哪些依赖项需要修复。我也不确定我是否理解这个问题。你不必“在外面吃番石榴14”。在提交任何东西之前,只需在本地做编译。如果你考虑从番石榴11到14的长时间运行的任务,如果你不想在删除坏的用法时分叉太多,那么用“临时升级并尝试编译”来追踪它们是有意义的。如果你提到这些规则名称,我会很乐意的。