我希望Scaladoc为以下代码片段生成类型层次结构图:
trait A
trait B extends A
Run Code Online (Sandbox Code Playgroud)
但是当我执行时scaladoc <file>.scala
,没有显示任何类型层次结构 - 既不在内部A
也不在中B
.我怎样才能生成这样的图表?
kir*_*uku 13
首先,需要Scaladoc2,这是Scala 2.10的一部分.
如果安装了2.10,则还需要将-diagrams
选项传递给Scaladoc以生成图表.但是,如果您这样做,可能会出现以下错误消息:
Graphviz dot encountered an error when generating the diagram for:
_root_
These are usually spurious errors, but if you notice a persistant error on
a diagram, please use the -diagrams-debug flag and report a bug with the output.
Graphviz will be restarted...
Run Code Online (Sandbox Code Playgroud)
发生错误是因为Scaladoc本身不生成图表但尝试调用Graphviz来完成此工作.当我们添加-diagrams-debug
标志时,我们会得到确切的错误消息:
The following is the log of the failure:
Main thread in _root_: Exception: java.io.IOException: Cannot run program "dot": java.io.IOException: error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)
要解决这个问题,需要安装程序dot
,这是Graphviz的一部分.执行此操作后,应该能够scaladoc -diagrams <file>.scala
成功执行并在生成的文档中查看成员搜索栏上方的"类型层次结构"标记.
执行scaladoc -help
显示图表选项的更多信息:
-diagrams Create inheritance diagrams for classes, traits and packages.
-diagrams-dot-path <path> The path to the dot executable used to generate the inheritance diagrams. Eg: /usr/bin/dot
-diagrams-dot-restart <n> The number of times to restart a malfunctioning dot process before disabling diagrams (default: 5)
-diagrams-dot-timeout <n> The timeout before the graphviz dot util is forcefully closed, in seconds (default: 10)
-diagrams-max-classes <n> The maximum number of superclasses or subclasses to show in a diagram
-diagrams-max-implicits <n> The maximum number of implicitly converted classes to show in a diagram
Run Code Online (Sandbox Code Playgroud)