0

我想看看 Scala 编译器生成的控制流图。有没有办法这样做?我尝试在线搜索,但只找到了适用于 Java 的 Eclipse 插件,例如来自 www.drgarbage.com 的插件,但没有找到适用于 Scala 的插件。

谢谢

编辑:我获取了由 scalac 生成的 .class 文件,并使用 dr 垃圾插件打开该文件,以查看可视化为控制流图的字节码。但是 scalac 生成了 3 个不同的 .class 文件:Foo、Foo$ 和 Foo$delayedInit$body。我看到一堆不连贯的图,而 Foo$ 中只有一个图看起来是合理的。我尝试在线搜索 3 个 .class 文件之间的区别,但找不到任何东西。

4

2 回答 2

0

我没有意识到后端中 scala 的 IR(中间表示)实际上称为 icode。编译器中的选项 -Xprint-icode 实际上将 IR 显示为基本块。这就是我要找的。

于 2015-07-05T02:53:32.337 回答
0

编译器插件可以做到这一点。但是,它需要抽象出编译器引入的一些内部结构——这些内部结构比您对项目源代码外观的期望更具体。您可以使用此插件来获取为您提取的原始信息,而从原始数据中重新提取的工作仍在进行中,您必须sbt publishLocal先将此插件包含在您的 sbt 定义中。

于 2015-11-18T09:37:20.153 回答