Инструмент для поиска несовместимости в сигнатурах / полях методов

Я хотел бы иметь возможность сравнить две версии класса / библиотеки, чтобы определить, были ли какие-либо изменения, которые могут нарушить код, вызывающий его. Например, рассмотрим некоторый класс Foo, у которого есть метод в версии a:

public String readWidget(Object widget, Object helper);

, а в версии b метод становится:

public String readWidget(Object widget); //removed unnecessary helper object

или что-то подобное в случае поля:

version a: public static Object sharedFoo;
version b: static Object sharedFoo; //moved to package private for version b

Мне нужен инструмент, который будет отмечать эти изменяется как потенциальная несовместимость (но в идеале не наоборот, т. е. увеличивает видимость метода). Теперь я знаю, что могу сделать это с помощью отражений или анализа вывода javap, однако, похоже, должен быть существующий инструмент (желательно некоммерческий). Так что я хотел посмотреть, может ли кто-нибудь что-то порекомендовать, прежде чем я совершу ошибку, катаясь самостоятельно / изобретая колесо без надобности.

8
задан Anish Gupta 17 July 2012 в 10:21
поделиться