sclass
v2.0.5
Published
Solidity to Class Diagram Interpreter
Downloads
21
Maintainers
Readme
S Class
Solidity to Class Diagram Interpreter
Parses Solidity files using @nomicfoundation/slang and generates mermaid markdown, or rendered files (SVG, PNG, PDF, MD, MMD) class diagrams.
Supports Foundry projects, doesn't support Hardhat project (create issue to request hardhat support)
Getting Started
sudo npm i -g sclass
sclass --helpUsage example
sclass src/FlattenedContract.sol --format svg --output FlattenedContract.svgor with short flags
sclass src/FlattenedContract.sol -f svgwhich will output a scheme in svg format with name 'FlattenedContract.svg'.
You can view the FlattenedContract.svg in any web browser or using this preview extension
Configuration
Configuration of diagram generation is evaluated via cli flags
inputContracts
Array of file names without .sol extension of contracts to be included in the diagram, you can put your contracts in /contracts folder and add them here
excludeContracts
If you want to exclude some contracts, you can setup object with following fields:
- interfaces: boolean - whether to exclude interfaces
- libraries: boolean - whether to exclude libraries
// TODO: remove collections and replace it with parsing imports
- collections: array of collection file names to exclude
ℹ️ Note: Collections are groups of related contracts that can be defined in
src/collections. We've already have LayerZero, OpenZeppelin and Stargate collections. You can create your own collections by adding new file insrc/collectionsfolder. - contracts: array of contract names to exclude
You don't need to create a new collection, you can just add contract names here
- exceptions: array of contract names to be included in the diagram despite of being excluded by other fields
excludeFunctions
Object with following fields:
- regExps: array of regular expressions to exclude functions by name
- exceptions: array of function names to be included in the diagram despite of being excluded by other fields
disableFunctionParamType
Boolean - whether to disable function parameter type rendering
Also filters out OpenZeppelin, LayerZero and Stargate contracts.
Use cases
- Contracts high level review
- Finding unused variables, functions
- Finding deprecated code blocks
Error handling
If interpreter stumbles across unhandled code variation it will put "empty" to type/name or throw Error with data about unhandled invariant.
Doesn't support nested mappings.
Possible features
- Enforcing code style and best practices
- defining comments formatting
- enforcing internal variable and function name to start with "_"
- validating requirements existence for address (null address) in functions with address param
- Generating full inheritance tree for contract
- Generating other types of Mermaid diagrams from Solidity code (Flowchart, Sequence, Use Case, Entity Relationship)
- Linking diagram elements to source code to use diagram as a navigation
Other tools by 0xCompose
- sspec - smart contract specification generator for Foundry
