[TOC]
The toolchain includes the following components, where the versions are the latest ones that we tested:
- Solidity 0.8.22 (via solc-js)
- OpenZeppelin Contracts (submodule) v5.0.2
- CMTAT v2.4.0
- RuleEngine v2.0.0
This part describe the list of libraries present in the file package.json.
This section concerns the packages installed in the section devDependencies of package.json
Hardhat plugin for integration with Foundry
Ethlint Solidity static analyzer.
A Prettier plugin for automatically formatting your Solidity code.
Generate UML for smart contracts
Program that extracts documentation for a Solidity project.
Utility tool for smart contract systems.
OpenZeppelin Contracts OpenZeppelin Contracts The version of the library used is available in the READEME
Warning:
- Submodules are not automatically updated when the host repository is updated.
- Only update the module to a specific version, not an intermediary commit.
Solidity-docgen is a program that extracts documentation for a Solidity project.
npx hardhat docgen
Generate UML for smart contracts
You can generate UML for smart contracts by running the following command:
npm run-script uml
npm run-script uml:testOr only specified contracts
npx sol2uml class -i -c src/IncomeVault.sol
The related component can be installed with npm install (see package.json).
Several bash scripts are available to generate the documentation in ./script .
To generate graphs with Surya, you can run the following command
npm run-script surya:graphOR
npx surya graph src/IncomeVault.sol | dot -Tpng > surya_graph_IncomeVault.pngnpm run-script surya:reportSlither is a Solidity static analysis framework written in Python3
slither . --checklist --filter-paths "openzeppelin-contracts|test|CMTAT|forge-std" > slither-report.mdWe use the following tools to ensure consistent coding style:
npm run-script lint:sol:prettier
npm run-script lint:sol
npm run-script lint:sol:fix
npm run-script lint:sol:test
npm run-script lint:sol:test:fix
The related components can be installed with npm install (see package.json).