2013-03-04 2 views
5

Quindi, il mio obiettivo finale è valutare l'accuratezza delle dipendenze in un file cabal, assicurando che tutte le entità che il progetto importa siano presenti nelle versioni che afferma di funzionare con.Recupera un elenco di tutte le importazioni in un progetto Haskell

Un buon inizio sarebbe trovare un elenco di tutte le entità importate utilizzate da un singolo file sorgente, opzionalmente con informazioni sul luogo da cui provengono.

Sono disposto a ignorare il caso delle istanze di classe per il momento, dal momento che rilevarne l'utilizzo non è così semplice.

La risposta ideale sarebbe un puntatore a uno strumento che fa esattamente questo, ma accetterò anche una risposta che mi indica le risorse di cui avrei bisogno di scriverne uno (GHC raccoglie queste informazioni? dovunque si può convincere a farlo?)

+3

Quanto arriva il flag '-ddump-minimum-import'? –

+0

È quasi tutto lì! (Interessante, quella bandiera è documentata ovunque?) –

+0

(Funziona anche in combinazione con -fno-code, che è bello) –

risposta

4

In definitiva, haskell-names dovrebbe essere in grado di fare cose del genere con il minimo sforzo. Un avvertimento è che dovresti ri-compilare "ogni pacchetto a cui fai riferimento usando haskell-names come" compilatore "per generare file di interfaccia. In futuro prevedo anche di distribuire interfacce precompilate per tutti i pacchetti di hackage (probabilmente da via hackage stessa).

In questo momento i nomi haskell sono in lavorazione e non possono ancora compilare base.

GHC API ha il vantaggio di avere già i file di interfaccia se sono stati installati i pacchetti, ma non sono sicuro che dia accesso all'elenco delle entità importate.