我们几个月来一直在制作中使用Google系列。我们想开始使用番石榴来增加其他功能。但是,我害怕将番石榴带入我们的产品堆栈b / c一些开发人员可能会开始使用'beta'类。
我们的代码中有各种单元测试,但在这一点上,我不希望包含'beta'类b / c它将来会发生变化。
如果项目包含任何'beta'番石榴类,有没有简单的方法可以检测?
答案 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?
我可能只是把它放在单元测试中,如果它看到你不喜欢的课程,单元测试就会失败。