今天想把已经写好的合约使用UML梳理一下,因为使用到了接囗、库、抽象合约及合约,所以想使用UML梳理一下更清晰。本来想用Viso,但是在其它语言里没有库(library)的概念,所以查了一下如何表示,结果意外发现了一个好功能,Sol2UML,原来Remix插件也支持这个功能,非常简单易用,这真是大大节约了手写生成类图的时间。下面来演示一下:
1、Remix生成UML图
插件 SOLIDITY 2 UML - 生成UML图
(1)编译并部署好合约
(2)使用插件 SOLIDITY 2 UML 生成UML类图
步骤
- 在Remix左下方点击 "插件管理" 图标
- 在上方搜索框搜索关键字 “sol”
- 搜索结果中有SOLIDITY 2 UML插件,点击 “Activate” 按钮
(3)查看生成的UML类图
对应右侧会显示Solidity 2 UML标签,生成合约对应的UML类图,此图是一个.svg文件,可以将其下载保存。
这里有个问题,就是 import 导入文件中的合约、接囗或库不在这个生成的UML中。
插件 SOLHINT LINTER - 警告提示
前提:编译并部署好合约
(1)使用插件 SOLHINT LINTER
在插件中搜索sol时,可以看到SOLHINT LINTER插件
(2)查看警告结果
点击“Activate” 按钮,可以看到左侧出现提示警告条数,可查看具体有哪些警告提示,点击一条警告信息,会定位到相应的代码行。我写的合约警告提示太多了,需要好好优化一下了。
2、以太坊浏览器查看sol2uml
(1)打开开源合约
以太坊浏览器也可以直接查看sol2uml,找到一个开源的合约,点击“Contract”,会看到有个 “More Options” 按钮
(2)选择 “Sol2Uml” 功能
点击“More Options” 按钮,选择下拉列表中的 “Sol2Uml” 选项
(3)查看UML图
弹出一个新的浏览器标签页,显示生成的UML图
3、本地配置Sol2Uml(未成功)
查看文档时,看到可以通过npm 引用sol2uml包生成UML图,想在本地尝试一下,但执行第一条命令就没成功,在此只做个记录。参考地址:Morioh
npm link sol2uml --only=production
错误如下:
此错误目前未解决,后面命令没有继续执行。