死代码和/或如何从Haskell源生成交叉引用

时间:2013-08-23 18:28:08

标签: haskell ghc

我的代码库中有一些未使用的功能,但很难识别。在我探索其问题空间和可能的解决方案时,代码在过去一年中得到了发展。我需要做的是找到未使用的代码,这样我就可以摆脱它。如果它以可导出的名称处理问题,我很高兴.GHC有警告处理未导出的未使用的代码。任何特定于此任务的工具都会引起关注。

但是,我对一个全面的交叉引用工具很好奇。我可以用这样的工具找到未使用的代码。多年前,当我在C和汇编程序中工作时,我发现一个好的外部参照是一个非常方便的工具,可用于许多不同的目的。

我无法使用Google搜索。显然在Haskell中,交叉引用的主要意义在于文学编程。虽然也许会有所帮助。

2 个答案:

答案 0 :(得分:7)

我不知道这样的工具,所以在过去我做过一些黑客攻击。

如果您有一个全面的测试套件,则可以在启用GHC的code coverage跟踪的情况下运行它。使用-fhpc进行编译并使用hpc markup生成带注释的源代码。这为您提供了未使用的代码和未经测试的代码的联合,无论如何,这些代码都可能是您想要解决的。

SourceGraph可以为您提供您可能认为有用的a bunch of information

答案 1 :(得分:1)

现在有一个用于此目的的工具:https://hackage.haskell.org/package/weeder

自2017年以来一直存在,尽管它有局限性,但对于大型代码库肯定有帮助。