👌

Solidity コントラクトの UML クラス図を出力する

2024/05/10に公開

クラス図の作成方法

sol2umlを使います。
以下のコマンドを使ってsol2umlをインストールしてください。

npm i sol2uml

自分の場合、sol2umlをプロジェクトにインストールすると依存関係でエラーが発生したので、グローバルにインストールしました。

npm i -g sol2uml

うまくいったら以下のコマンドが正常に動くと思います。

sol2uml -h

クラス図を出力します

sol2uml Solidityファイルのディクトリのパス -o ./outputfile.svg

or

sol2uml Solidityファイルのパス -o ./outputfile.svg

問題発生!!

RangeError: Maximum call stack size exceeded

ぐぬぬ。。。
solidity-flattenerというパッケージも使えるみたいですが、今回は、hardhat flattenを使います。

npx hardhat flatten > ./Flattened.sol

これで、Flattened.solが出力されました。
あとは

sol2uml ./Flattened.sol -o ./outputfile.svg

ブラウザにsvgファイルを表示させます。

open -a Google\ Chrome ./outputfile.svg 

参考

https://scrapbox.io/reading-defi-contracts/Solidity_コントラクトの_UML_クラス図を出力する
https://hardhat.org/hardhat-runner/docs/advanced/flattening
https://github.com/naddison36/sol2uml/issues/183

Discussion