Most programming languages have tools to format source code according to convention: for example, Python has autopep8 and yapf, and Go has gofmt.
Does a similar tool exist for Solidity source code, ideally according to the Solidity Style Guide?
Ethereum Stack Exchange is a question and answer site for users of Ethereum, the decentralized application platform and smart contract enabled blockchain. It only takes a minute to sign up.
Sign up to join this communityMost programming languages have tools to format source code according to convention: for example, Python has autopep8 and yapf, and Go has gofmt.
Does a similar tool exist for Solidity source code, ideally according to the Solidity Style Guide?
I've recently published a Linter for Solidity which aims to comply the the official Style Guide.
Here's the repo
The architecture is pretty similar to that of ESLint so I'm trying to make it as easy-to-use and customizable (including plugging in of custom rules) as ESLint is.
Its under active development right now.
To get started, you could install it via npm:
npm install -g solium
Browse to the root directory of your project and run
solium --init
This creates .soliumrc.json
(determines which rules to enable and handles plugging in of custom rules) & .soliumignore
(specifies which files and folders to ignore)
To run the linter on a single file, simply use:
solium --file path/to/myfile.sol
To lint over your entire project (all .sol files), use:
solium
OR
solium --hot
to enable hot reloading.
Hopefully, this improves workflow & developer productivity, since I've been facing a lot of trouble developing for Ethereum platform, because of the lack of dev tools. Hope you find it useful!
There's a work in progress towards a plugin for prettier that formats solidity code: https://github.com/prettier-solidity/prettier-plugin-solidity As with prettier, the goal is to have an opinionated tool that takes your code, builds its AST and prints it again.
(Disclaimer: I'm one of the contributors)
If you use atom.io there is a linter: https://atom.io/packages/linter-solidity
And for syntax highlighting goodies: https://atom.io/packages/language-ethereum
https://github.com/alexstep/SublimeLinter-contrib-solium
Solium linter plugin for sublime text
The 2023 answer is to use forge fmt
. https://book.getfoundry.sh/reference/config/formatter
Do that once and be liberated from this issue
This is available now for IntelliJ (and related IDEs):
This is a linter that provides security, style and best practice validations.
You may install it with
npm install -g solhint
For validation you need put in arguments glob expression of path to your code
solhint *.sol
I believe this tool with be useful for your project!
You can use YAKINDU Soliditiy Tools, its open source and it has some other interesting features even if it is currently in beta phase.
https://medium.com/solidity-ide/yakindu-solidity-tools-beta-released-dbcc76307bc0