2013-03-04 12 views
5

私の最終的な目標は、プロジェクトがインポートするすべてのエンティティが、動作すると主張するバージョンに存在することを保証することによって、カバールファイルの依存関係の精度を評価することですと。Haskellプロジェクトのすべてのインポートのリストを取得する

単一のソースファイルで使用されるすべてのインポートされたエンティティのリストを見つけることができます。必要に応じて、そのソースの情報も表示されます。

私は、その使用を検出することがそれほど簡単ではないので、現時点でクラスインスタンスのケースを無視したいと思います。

理想的な答えは、正確にこれを行うツールでのポインタですが、自分で書く必要があるリソースで私を指摘する回答も受け入れます(GHCはこの情報を収集しますか?どこでも?そうするように説得することはできますか?)

+3

'-ddump-minimal-imports'フラグはどのくらいの距離にありますか? –

+0

それはそこの方法のほとんどです! –

+0

(-fno-codeとの組み合わせでうまくいきます) –

答えて

4

最終的には、haskell-namesは最小限の労力でそのようなことができるはずです。 インターフェイスファイルを生成するために、haskell-names独自の「コンパイラ」を使って参照するすべてのパッケージを再コンパイルする必要があることに注意してください。将来的には、すべてのhackageパッケージ(おそらく、hackage自体から)のために、あらかじめコンパイルされたインターフェースを配布する予定です。

現在、haskell-namesは処理中であり、baseはまだコンパイルできません。

GHC APIには、パッケージをインストールしている場合は既にインターフェイスファイルがありますが、インポートされたエンティティのリストにアクセスできるかどうかはわかりません。

関連する問題