在方法签名/字段中查找不兼容性的工具

M. *_*sup 8 java compatibility field method-signature

我希望能够比较类/库的两个版本,以确定是否有任何可能会破坏调用它的代码的更改.例如,考虑一些在版本a中有方法的类Foo:

public String readWidget(Object widget, Object helper);
Run Code Online (Sandbox Code Playgroud)

在版本b中,该方法变为:

public String readWidget(Object widget); //removed unnecessary helper object
Run Code Online (Sandbox Code Playgroud)

或者在字段的情况下类似的东西:

version a: public static Object sharedFoo;
version b: static Object sharedFoo; //moved to package private for version b
Run Code Online (Sandbox Code Playgroud)

我想要一个工具,将这些变化标记为潜在的不兼容性(但理想情况下不是相反的,即增加方法的可见性).现在我知道我可以通过反射或通过分析javap的输出来做到这一点,但是看起来应该有一个现有的工具(最好是非商业的).所以我想看看是否有人可以推荐一些东西,然后我犯了自己的错误/不必要地重新发明轮子.

min*_*das 2

Guava 使用JDiff来报告版本变化,也许你也觉得它很有用?