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

死代码和/或如何从Haskell源代码生成交叉引用,haskell,ghc,dead-code,code-elimination,Haskell,Ghc,Dead Code,Code Elimination,我的代码库中有一些未使用的功能,但很难识别。在我探索其问题空间和可能的解决方案的过程中,代码在过去一年中不断发展。我需要做的是找到未使用的代码,这样我就可以摆脱它。如果它在可导出名称的基础上处理问题,我很高兴。GHC有处理未导出未使用代码的警告。任何特定于此任务的工具都会引起兴趣 然而,我对一个全面的交叉引用工具很好奇。我可以用这样的工具找到未使用的代码。几年前,当我在C和汇编语言中工作时,我发现一个好的外部参照是一个非常方便的工具,对于许多不同的用途都很有用 我用谷歌搜索一无所获。显然,在Ha

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

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


我用谷歌搜索一无所获。显然,在Haskell中,交叉引用的主要含义是在有文化的编程中。虽然可能会有一些有用的东西。

我不知道有这样的工具,所以在过去我做了一点修改

如果您有一个全面的测试套件,那么可以在启用GHC跟踪的情况下运行它。使用
-fhpc
编译并使用
hpc标记
生成带注释的源代码。这将为您提供未使用的代码和未测试的代码的结合,您可能希望解决这两个问题


可以为您提供您可能也会发现有用的信息。

现在有一种工具可用于此目的:


它从2017年就开始出现了,虽然它有局限性,但对于大型代码库肯定有帮助。

谢谢。我曾考虑过代码覆盖路线,但我想看看是否有更好的方法。也许这是我需要的最快的路线。SourceGraph是我从未听说过的东西。我试图安装它,但有一堆版本不兼容。唉。我将在周一或周二尝试解决这些问题(除非代码覆盖率工作正常)。我无法让Graphalyze编译,SourceGraph依赖于它。太糟糕了,因为它看起来好像提供了很多有用的信息。我看过代码覆盖率工具,我将能够从它的输出中回答我的直接问题。所以,我的问题得到了回答。谢谢