クラス/ライブラリの2つのバージョンを比較して、それを呼び出すコードを壊す可能性のある変更があったかどうかを判断できるようにしたいと思います。たとえば、バージョンaのメソッドを持つクラスFooについて考えてみます。
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からの出力を分析することでこれを実行できることがわかりましたが、既存のツール(できれば非商用)があるはずです。ですから、自分で転がしたり、不必要に車輪の再発明をしたりする前に、誰かが何かを勧めてくれるかどうかを確認したかったのです。