sbt はタスク間の依存関係を維持し、結果のグラフはかなり簡単に推論できます。一方、ソース コードをざっと見ると、インクリメンタル コンパイル ロジックはより不透明に見えます。次のことができるようになりたいです。
- 「このインターフェイスを [このように] 変更した場合、何が無効になるでしょうか?」と同じことを言います。
- さまざまなクラス インターフェイスの変更がビルドの残りの部分にどのように影響するかを示すグラフを作成します。Scala での暗黙的な依存関係が複雑になる可能性があることを考えると、scala のインポート依存関係をグラフ化することは、これに特に適した近似ではありません。インクリメンタル コンパイルを行うには、sbt がこの情報を何らかの形で維持する必要があるように思われるので、その情報にアクセスする方法を「ただ」見つけて、それが私のユース ケースに適した形になっていることを祈る必要があります。
これらのいずれかが実現可能ですか?私は sbt プラグインを書くことに反対しているわけではありませんが、進め方についてのヒントをいただければ幸いです。
編集: は有望なようRelation
です。usesInternalSrc(dep: File): Set[File]
これで sbt の依存関係に関するすべての知識が得られるでしょうか?
編集 2: さらに有望なのはDotGraph
、sbt ソース ツリー内にオブジェクトがあることです。ドキュメントはなく、Google には人間が読めるテキストがありません。使い方がわかったら、回答を投稿します。