2013-03-04 2 views
5

궁극적 인 목표는 프로젝트가 가져 오는 모든 항목이 작동하도록 주장하는 버전에 존재하는지 확인하여 파일에서 종속성의 정확성을 평가하는 것입니다 와.Haskell 프로젝트의 모든 가져 오기 목록 가져 오기

단일 소스 파일에서 사용하는 모든 가져온 엔티티의 목록을 찾는 것이 좋습니다. 선택 사항은 출처에 대한 정보도 선택적으로 포함 할 수 있습니다.

나는 그 순간에 클래스 인스턴스의 경우를 무시하려고합니다. 왜냐하면 그 사용을 감지하는 것이 그리 간단하지 않기 때문입니다.

이상적인 대답은이 작업을 정확하게 수행하는 도구에 대한 포인터 일 수 있지만, 직접 작성해야하는 자원에서 나를 가리키는 답변도 수락합니다 (GHC는이 정보를 수집합니까? 어디서나 그렇게 할 수 있습니까?)

+3

'-ddump-minimal-imports' 플래그가 얼마나 걸리는가? –

+0

그게 대부분의 방법입니다! (흥미가 없다면 어디에서나 그 깃발이 문서화되어 있습니까?) –

+0

(-fno-code와 함께 사용하면 효과적입니다) –

답변

4

궁극적으로 haskell-names은 최소한의 노력으로 그러한 작업을 수행 할 수 있어야합니다. 인터페이스 파일을 생성하기 위해 haskell-names 자신의 "컴파일러"를 사용하여 참조하는 모든 패키지를 "다시 컴파일"해야한다는 점이 하나의 경고입니다. 앞으로도 모든 hackage 패키지 (아마도 hackage 자체를 통해)에 대해 사전 컴파일 된 인터페이스를 배포 할 계획입니다.

지금은 haskell-names가 진행 중이므로 base을 아직 컴파일 할 수 없습니다.

GHC API에는 패키지를 설치 한 경우 인터페이스 파일이 이미 있지만 가져온 엔티티 목록에 액세스 할 수 있는지 여부가 확실하지 않은 장점이 있습니다.