因此,我的最终目标是通过确保项目导入的所有实体都存在于其声称使用的版本中来评估cabal文件中依赖项的准确性。
一个好的开始是找到单个源文件使用的所有导入实体的列表,可选地提供有关它们来自何处的信息。
我现在愿意忽略类实例的情况,因为检测它们的使用并不是那么简单。
理想的答案是指向一个完全如此的工具,但我也会接受一个答案,指出我需要自己编写的资源(GHC会收集这些信息吗?它会把它转移到任何地方吗? ?可以说服这样做吗?)
答案 0 :(得分:4)
最终,haskell-names应该能够以最少的努力做到这一点。 需要注意的是,您需要重新“编译”您使用haskell-names自己的“编译器”引用的每个包,以生成接口文件。在未来,我还计划为所有hackage包分发预编译接口(可能来自via hackage本身)。
现在haskell-names正在进行中,无法编译base
。
GHC API的优势在于,如果已经安装了软件包,则已经拥有了接口文件,但我不确定它是否可以访问导入实体列表。