3.2.2 • Public • Published

    Fork from Protofire

    Donate to Protofire! Donate with Ethereum

    The new bandage NPM version Coverage Status MIT licensed dependencies Status devDependencies Status

    这是一个用于检查 Solidity 代码语法错误以及缺陷的项目. 这个项目提供了 安全 and 代码风格 的检查.

    本项目从 https://github.com/protofire/sohint fork 过来,目标是与浏览器完全兼容。


    你可以通过 npm 进行安装:

    npm install -g solhint
    # verify that it was installed correctly 
    solhint --version


    First initialize a configuration file, if you don't have one:

    solhint --init

    This will create a .solhint.json file with the default rules enabled. Then 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

    Run solhint without arguments to get more information:

    Usage: solhint [options] <file> [...other_files]
    Linter for Solidity programming language
      -V, --version                           output the version number
      -f, --formatter [name]                  report formatter name (stylish, table, tap, unix)
      -w, --max-warnings [maxWarningsNumber]  number of allowed warnings
      -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
      --fix                                   automatically fix problems
      --init                                  create configuration file for solhint
      -h, --help                              output usage information
      stdin [options]                         linting of source code data provided to STDIN


    You can use a .solhint.json file to configure Solhint for the whole project.

    To generate a new sample .solhint.json file in current folder you can do:

    solhint --init 

    This file has the following format:

        "extends": "solhint:recommended",
        "plugins": [],
        "rules": {
          "avoid-suicide": "error",
          "avoid-sha3": "warn"

    A full list of all supported rules can be found here.

    To ignore files that do not require validation you can use a .solhintignore file. It supports rules in the .gitignore format.


    Extendable rulesets

    The default rulesets provided by solhint are the following:

    • solhint:default
    • solhint:recommended

    Use one of these as the value for the "extends" property in your configuration file.

    Configure the 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 specific rules on a given line. For example:

      // solhint-disable-next-line not-rely-on-time, not-rely-on-block-hash
      uint pseudoRand = uint(keccak256(abi.encodePacked(now, blockhash(block.number))));

    Disable validation on current line:

      uint pseudoRand = uint(keccak256(abi.encodePacked(now, blockhash(block.number)))); // solhint-disable-line

    Disable specific rules on current line:

       uint pseudoRand = uint(keccak256(abi.encodePacked(now, blockhash(block.number)))); // solhint-disable-line not-rely-on-time, not-rely-on-block-hash

    You can disable a rule for a group of lines:

      /* solhint-disable avoid-tx-origin */
      function transferTo(address to, uint amount) public {
        require(tx.origin == owner);
      /* solhint-enable avoid-tx-origin */

    Or disable all validations for a group of lines:

      /* solhint-disable */
      function transferTo(address to, uint amount) public {
        require(tx.origin == owner);
      /* solhint-enable */


    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


    Related documentation you may find here.

    IDE Integrations

    Table of Contents

    • Roadmap: The core project's roadmap - what the core team is looking to work on in the near future.
    • Contributing: The core Solhint team ❤️ 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.


    Who uses Solhint?

    OpenZeppelin POA Network - Public EVM Sidechain 0x GNOSIS



    The Solidity parser used is @solidity-parser/parser.



    Back us

    Solhint is free to use and open-sourced. If you value our effort and feel like helping us to keep pushing this tool forward, you can send us a small donation. We'll highly appreciate it :)

    Donate with Ethereum

    Related projects

    • eth-cli: CLI swiss army knife for Ethereum developers.


    npm i @terasum/solhint-portable

    DownloadsWeekly Downloads






    Unpacked Size

    330 kB

    Total Files


    Last publish


    • terasum