solidity-inspector
Forked from solidity-structure to extract aditional info as modifiers, access control modifiers, full natspec and other arbitrary info to make tools or documentation.
Parse structure of ethereum solidity contract, including enums,constructor, structs. Based on Solidity Parser library from ConsenSys.
The goal of it is to take Solidity code as input and return an object as output that can be used to describe all parts of Solidity smart contract.
Usage in code
const SolidityStructure = ; // Parse Solidity code as a string:let result = SolidityStructure; // Or, parse a file:let result = SolidityStructure;
Usage in command line
(suppose solidity-structure
package installed globally )
$ solidity-structure MyContract.sol > contract-structure.json
Examples
Contract constructor structure
Solidity contract HasConstructor
pragma solidity ^044; /*** Contract with constructor*/contract WithConstructor /** * My constructor long long description * @dev my constructor short description * @param uintParam Description of item 1 * @param uintParam2 */ { //empty }
Structure of constructor
name: 'WithConstructor' title: 'my constructor short description' description: 'My constructor long long description' paramsSeq: 'uintParam' 'stringParam' 'uintParam2' params: uintParam: name : 'uintParam' description: 'Description of item 1' type: 'uint' typeHint: null stringParam: name: 'stringParam' type: 'string' uintParam2: name : 'uintParam2' description: '' type: 'uint' typeHint: null
Contract enum structure
Solidity contract HasEnum
pragma solidity ^044; /*** Contract has enum*/contract HasEnum /** * My enum lon long description * @dev my enum short description * @param item1 Description of item 1 * @param item2 * @param item4 Item 4 some description */ enum MyEnum item1 item2 item3 item4
Structure of enum
MyEnum: name: 'MyEnum' title: 'my enum short description' description: 'My enum lon long description' members: 'item1' 'item2' 'item3' 'item4' params: item1: description: 'Description of item 1' item2: description : '' item4: description: 'Item 4 some description'
Other examples can be found in tests