2013-03-04 16 views
5

Tak więc, moim ostatecznym celem jest ocena dokładności zależności w pliku cabal, poprzez upewnienie się, że wszystkie podmioty importowane przez projekt istnieją w wersjach, które twierdzi, że działają z.Pobierz listę wszystkich importów w projekcie Haskell

Dobrym początkiem byłoby znalezienie listy wszystkich zaimportowanych encji użytych w jednym pliku źródłowym, opcjonalnie z informacją, skąd pochodzą.

Jestem gotów zignorować przypadek wystąpienia klasy na chwilę obecną, ponieważ wykrywanie ich użycia nie jest tak proste.

Idealna odpowiedź byłaby wskaźnikiem w narzędziu, które robi dokładnie to, ale przyjmuję również odpowiedź, która wskazuje mi na zasoby, które bym musiał napisać sam (czy GHC zbiera te informacje? To zrzuca to w dowolnym miejscu? Czy można go przekonać?)

+3

Jak daleko odbierzesz flagę '-ddump-minim-import'? –

+0

To jest większość drogi! (W interesie, czy ta flaga została udokumentowana gdziekolwiek?) –

+0

(Działa również w połączeniu z -fno-kodem, co jest miłe) –

Odpowiedz

4

Ostatecznie, powinien móc wykonywać podobne czynności przy minimalnym wysiłku. Jedynym zastrzeżeniem jest to, że musisz ponownie skompilować każdy pakiet, do którego odwołujesz się, używając własnego "kompilatora" w celu wygenerowania plików interfejsu. W przyszłości zamierzam również dystrybuować wstępnie skompilowane interfejsy do wszystkich pakietów hackage (prawdopodobnie z samego hackage'a).

W tej chwili nazwy haskell są w toku i nie można jeszcze skompilować base.

Interfejs API GHC ma tę zaletę, że masz już pliki interfejsu, jeśli masz zainstalowane pakiety, ale nie jestem pewien, czy daje dostęp do listy zaimportowanych elementów.

Powiązane problemy