Solidity コントラクトの UML クラス図を出力する
#Solidity #tool #flada
Solicity コントラクトを読んでいて、関連するクラスのクラス図があると理解が早まりそうだという時がある
https://github.com/naddison36/sol2uml
etherscan で表示できる
contract のページで More Options > Sol2Uml
https://etherscan.io/viewsvg?t=1&a=0x49a1cbb5d28cdedd55b7daa627f658fbd8cf1d23
ファイルが別れている場合などはオプションとして表示されなかったりする様子
https://etherscan.io/address/0x6847259b2b3a4c17e7c43c54409810af48ba5210#code
そういう時は自分の環境に sol2uml コマンドをインストールして実行すればいい
install 方法は https://github.com/naddison36/sol2uml#install
単に sol2uml ./contracts/ とかするとクラスが多すぎてみづらいので、sol2uml -b ContractName -o ContractName.svg のように使うといい
open -a Google\ Chrome ./ContractName.svg で CLI からブラウザで開ける
クラス図の凡例
線
実線
ストレージ変数
継承
破線
メモリ変数
インタフェース
矢印
白抜き
コントラクト・アブストラクトコントラクト・インタフェース
黒
変数(ストレージ変数もメモリ変数も)
using for
これここに整理されてていいのかはよくわからんが…
ダイアモンド
構造体、enum
サンプル
https://gyazo.com/305f153aa3fcadeb734f0facee00833f
PickleJar から IERC20 の "実線" かつ "黒" の矢印は、ストレージ変数として参照していることがわかる
PickleJar から ERC20 の "実線" かつ "白抜き" の矢印は、継承を表していることがわかる