如何阻止使用google guava库中的beta类?

时间:2010-12-27 15:23:35

标签: java guava

我们几个月来一直在制作中使用Google系列。我们想开始使用番石榴来增加其他功能。但是,我害怕将番石榴带入我们的产品堆栈b / c一些开发人员可能会开始使用'beta'类。

我们的代码中有各种单元测试,但在这一点上,我不希望包含'beta'类b / c它将来会发生变化。

如果项目包含任何'beta'番石榴类,有没有简单的方法可以检测?

6 个答案:

答案 0 :(得分:5)

Overstock.com最近released一个Findbugs插件,用于标记@Beta类,方法或字段的使用。

答案 1 :(得分:2)

在您的单元测试中,在使用任何beta类(或任何不受欢迎的类)时设置一个方面来记录和/或失败。

答案 2 :(得分:1)

显然,Google Guava有@Beta注释,表明您不想使用哪些类或方法。

不幸的是,这个注释是@Retention(value=CLASS)我从未使用过,但因为它应该保存在.class文件中,这可能意味着它仍然可以用于Class.getDeclaredAnnotations()。如果不是,您将不得不使用CGLIB或类似的字节码级别库来查找它。

鉴于您可能需要检测CI应用程序或向应用添加检查类加载器以检测beta API的使用情况

答案 3 :(得分:1)

如果您正在使用eclipse,access rules是一种选择。无论何时导入或使用受限制的类,都会出现编译时错误。

答案 4 :(得分:0)

这是Guava's Beta Classes的列表。在使用guava类之前,您必须告诉其他开发人员检查此链接。

答案 5 :(得分:0)

如果你有一个beta类列表,你可以使用Gili的链接,我认为你可以使用反射。然后它变得非常简单 - 只需看看这个答案:

Can you find all classes in a package using reflection?

我可能只是把它放在单元测试中,如果它看到你不喜欢的课程,单元测试就会失败。