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

Eya*_*yal 12 scala sbt

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

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

我正在使用Scala 2.9.2和SBT 0.11.2

nau*_*nau 14

您可以尝试以下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)