Lint your Solidity contracts with Solhint
Solhint is an open source project for linting Solidity code. This project provides both Security and Style Guide validations.
Installation
You can install Solhint using npm:
npm install -g solhint
## verify that it was installed correctly
solhint -V
Usage
For linting Solidity files you need to run Solhint with one or more Globs as arguments. For example, to lint all files inside contracts
directory, you can do:
solhint "contracts/**/*.sol"
To lint a single file:
solhint contracts/MyToken.sol
Solhint command description:
Usage: solhint [options] <file> [...other_files]
Linter for Solidity programming language
Options:
-V, --version output the version number
-f, --formatter [name] report formatter name (stylish, table, tap, unix)
-w, --max-warnings [maxWarningsNumber] number of warnings to trigger nonzero
-c, --config [file_name] file to use as your .solhint.json
-q, --quiet report errors only - default: false
--ignore-path [file_name] file to use as your .solhintignore
-h, --help output usage information
Commands:
stdin [options] put source code to stdin of this utility
init-config create sample solhint config in current folder
Configuration
You use a .solhint.json
file to configure Solhint globally. This file has the following
format:
{
"extends": "solhint:default",
"plugins": [],
"rules": {
"avoid-throw": false,
"avoid-suicide": "error",
"avoid-sha3": "warn"
}
}
To ignore files / folders that do not require validation you may use .solhintignore
file. It supports rules in
.gitignore
format.
node_modules/
additional-tests.sol
Configure linter with comments
You can use comments in the source code to configure solhint in a given line or file.
For example, to disable all validations in the line following a comment:
// solhint-disable-next-line
uint[] a;
You can disable a single rule on a given line. For example, to disable validation of fixed compiler version in the next line:
// solhint-disable-next-line compiler-fixed, compiler-gt-0_4
pragma solidity ^0.4.4;
Disable validation on current line:
pragma solidity ^0.4.4; // solhint-disable-line
Disable validation of fixed compiler version validation on current line:
pragma solidity ^0.4.4; // solhint-disable-line compiler-fixed, compiler-gt-0_4
You can disable a rule for a group of lines:
/* solhint-disable avoid-throw */
if (a > 1) {
throw;
}
/* solhint-enable avoid-throw */
Or disable all validations for a group of lines:
/* solhint-disable */
if (a > 1) {
throw;
}
/* solhint-enable */
Rules
Security Rules
Full list with all supported Security Rules
Style Guide Rules
Full list with all supported Style Guide Rules
Best Practices Rules
Full list with all supported Best Practices Rules
More details
- Read the full Solhint documentation.
- Roadmap: The core project's roadmap - what the core team is looking to work on in the near future.
- Contributing: The core Solhint team :heart: contributions. This describes how you can contribute to the Solhint Project.
- Shareable configs: How to create and share your own configurations.
- Writing plugins: How to extend Solhint with your own rules.
IDE Integrations
- Sublime Text 3
- Atom
- Vim
- JetBrains IDEA, WebStorm, CLion, etc.
- VS Code: Solidity by Juan Blanco
- VS Code: Solidity Language Support by CodeChain.io
- Kauri original title: Lint your Solidity contracts with Solhint
- Kauri original link: https://kauri.io/lint-your-solidity-contracts-with-solhint/2ff86d30589b4832ad90f6c87c08fbea/a
- Kauri original author: Kauri Team (@kauri)
- Kauri original Publication date: 2019-06-05
- Kauri original tags: linting, solhint, best-practise-
- Kauri original hash: QmPZ2PzAwgAAamV6LXz4hHpLQaGyRgUaWpwhiEZSEaP17P
- Kauri original checkpoint: QmUP9qZg9vxiTYmDyCRfVzpyYLQbtd6r3GAM7CyqCFhShv