在Scala和SBT中调试长编译时间

时间:2012-10-16 17:56:59

标签: scala sbt

在我的Scala / SBT项目中,我有一个文件最多需要5(!)分钟才能编译。所有其他的都可以在几秒钟内编译。这使得开发非常痛苦。

我确定我在滥用一些Scala结构,但我不知道如何调试它。如何在Scala中调试长编译时间?

我正在使用Scala 2.9.2和SBT 0.11.2

1 个答案:

答案 0 :(得分:13)

您可以尝试以下Scala编译器选项:

  • -Ystatistics打印编译器统计信息

找一个花费最多时间的阶段。然后,试试那些:

  • -Xprint:<phase>打印出“或所有”之后的程序
  • -Yshow-trees与-print:phase
  • 一起使用时显示详细的树
  • -Ydebug输出调试信息
  • -Ypmat-debug跟踪所有模式匹配器活动。

要直接从sbt控制台启用这些设置,您可以使用set scalacOptions in ThisBuild += "-Ystatistics",也可以使用多个set scalacOptions in ThisBuild ++= Seq("-Yshow-trees", "-Ydebug)