私の目的は、プロジェクトのパブリックAPIクラスのすべての推移的依存関係をリストアップし、コード変更があった場合それらの依存関係に例えばインタフェースを介してのみ使用される実装クラスを含むJavaクラスの推移的な依存関係をすべて見つけてください
:
だから、class MyApi {
MyDao md;
public void methodA() {
//do something with md;
}
}
interface MyDao { }
class MyDaoImpl implements MyDao { }
私はMyDaoImplが変更されている(コミット履歴から言う)と私はMyApi.methodAがMyDaoImplを使用しています知っている、そして私のテストは、それをチェックするに焦点を当てるべきであることがわかっている場合。 MyDaoとMyDaoImplの両方を含むMyApi.methodA()の依存関係のリストが必要です。
これまでのところ2つのツール、https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jdeps.htmlとhttp://depfind.sourceforge.net/を試しましたが、それらは有望ですが、問題を完全に解決していないようです。どちらのツールでも、クラスがインターフェイスに依存する場合、そのインターフェイスの実装を推移的な依存関係として含める方法はありません。
大幅なカスタマイズを行うことなく、任意のツールからこの情報を引き出す方法はありますか?
メソッドに 'md = new MyDaoImpl()'を追加する必要があります。さもなければ、 'MyDaoImpl'はあなたのappliに接続していません。 – Nathan
実際のコードでは、実装クラスをインジェクトするためにスプリングを使用しているため、新しいMyDaoImpl()は実際にはありません。私は、コードに直接作成されていない場合でも、MyApiが使用しているインタフェースの実装をすべて取り込む方法を探しています。 – ab2000