如何从Scala代码生成控制流图?

时间:2015-05-31 18:48:47

标签: eclipse scala compiler-construction control-flow-graph

我想看看Scala编译器生成的控制流图。有办法吗?我尝试在线搜索,但只发现了Eclipse的Eclipse插件,如www.drgarbage.com的插件,但Scala没有插件。

由于

编辑:我接受了scalac生成的.class文件,并用dr垃圾插件打开,看到字节码可视化为控制流图。但是scalac制作了3个不同的.class文件:Foo,Foo $和Foo $ delayedInit $ body。我看到一堆断开连接的图形,只有Foo $中的一个图形看起来合理。我尝试在线搜索3 .class文件之间的区别,但无法找到任何内容。

2 个答案:

答案 0 :(得分:0)

我没有意识到后端scala的IR(中间表示)实际上叫做icode。编译器-Xprint-icode中的选项实际上显示IR被分成基本块。这就是我想要的。

答案 1 :(得分:0)

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

相关问题