Détail du package

solium

duaraghav86.7kMIT1.2.5

Linter to identify and fix Style & Security issues in Solidity

lint, static-analysis, solidity, abstract-syntax-tree

readme


Build Status Gitter chat

Ethlint (Formerly Solium) analyzes your Solidity code for style & security issues and fixes them.

See Documentation, Changelog and upcoming releases.

Before beginning to work on a contribution, please read the Guidelines.

Install

npm install -g ethlint
solium -V

For backward-compatibility, you can still use npm install -g solium.

If you're currently using the solium package for npm install, it is highly recommended that you move to ethlint. The solium package will not receive updates after December, 2019. There are no differences between the updates pushed to ethlint and solium packages.

Usage

In the root directory of your DApp:

solium --init

This creates 2 files for you:

  • .soliumignore - contains names of files and directories to ignore while linting
  • .soliumrc.json - contains configuration that tells Solium how to lint your project. You should modify this file to configure rules, plugins and sharable configs.

.soliumrc.json looks like:

{
  "extends": "solium:recommended",
  "plugins": ["security"],
  "rules": {
    "quotes": ["error", "double"],
    "indentation": ["error", 4],
    "linebreak-style": ["error", "unix"]
  }
}

To know which lint rules Solium applies for you, see Style rules and Security rules.


NOTE

Solium does not strictly adhere to Solidity Style Guide. It aims to promote coding practices agreed upon by the community at large.


Lint

solium -f foobar.sol
solium -d contracts/

Configure with comments

Comment Directives can be used to configure Solium to ignore specific pieces of code. They follow the pattern solium-disable<optional suffix>.

If you only use the directive, Solium disables all rules for the marked code. If that's not desirable, specify the rules to disable after the directive, separated by comma.

  • Disable linting on a specific line

    contract Foo {
      /* solium-disable-next-line */
      function() {
          bytes32 bar = 'Hello world';    // solium-disable-line quotes
    
          // solium-disable-next-line security/no-throw, indentation
                          throw;
      }
    }
  • Disable linting on entire file

/* solium-disable */

contract Foo {
    ...
}

Fix

Solium automatically fixes your code to resolve whatever issues it can.

solium -d contracts/ --fix

Our supporters

Ethereum Augur    Gitcoin

If Ethlint helped make your life simpler, please consider donating ETH to 0xacc661A56af9793a4437876a52F4Ad3fc3C443d6

IDE and Editor Integrations | Documentation | Demo Video

changelog

Changelog

1.2.5 (2019-09-14)

  • Fixed no-empty-blocks to not report inherited constructors with empty blocks (#264).
  • Added option errorMessageMaxLength for rule error-reason to specify a character limit on error message.

1.2.4 (2019-04-08)

  • Added rule no-trailing-whitespace to warn the user when code, comment or blank lines contain trailing whitespaces. This rule will supply the fix functionality in a future release.
  • Added getLines() sourceCode utility function for rule developers. This method returns the source code split into lines.
  • Added getComments() sourceCode utility function for rule developers. This method returns a list of AST Nodes representing comments in the source code.

1.2.3 (2019-02-11)

  • Added support for solium-disable-previous-line comment directive.
  • Added support for solium-enable comment directive. See configuring with comments. This feature currently has a limitation which has been documented in Known Issues.
  • Added Pull Request template.
  • Fixed rule no-empty-blocks to report function declarations with empty bodies. Fallback and payable functions and payable constructors are not reported if their body is empty. See #254.
  • Fixed rule quotes to stop reporting false positives due to brackets enclosing strings (see #240).
  • Modified rule uppercase to allow up to 2 leading and trailing underscores for a constant's name.

1.2.2 (2019-01-13)

  • Added support for parsing function declarations inside Inline Assembly blocks.
  • Added Issue Templates to the repository for Bug report, Feature request and Lint rule suggestion.
  • Added Contribution guidelines.
  • Changed .soliumignore-related warning messages to be more user-friendly.
  • Fixed bugs in parser related to Inline Assembly variable declaration.
  • Fixed uppercase rule to allow single-character names, where the character must be an alphabet.
  • Fixed indentation rule to allow Call expression arguments to start with circular bracket (#223).
  • Fixed BinaryExpression position bug in parser that led to #175 & #223.

1.2.1 (2019-01-01) :sparkler:

  • Added fix functionality to linebreak-style rule.
  • Added linebreak-style rule configuration to default .soliumrc.json.
  • Added support for tilde for specifying version literals in pragma statements.
  • Added rule constructor to warn the user when the deprecated style of constructor declaration is being used.
  • Added --fix-dry-run option to CLI to allow users to see a git-style diff of the changes the --fix option will make.
  • Fixed Hex literal parsing. Incorrect parsing caused the linter to crash in some cases.
  • Fixed source code util's getTextOnLine() to account for both linebreak-styles on both platforms (see issue)
  • Changed documentation URL to ethlint.readthedocs.io. solium.readthedocs.io is deprecated but will receive updates.
  • Moved deprecated rules in documentation into their own section.

1.2.0 (2018-12-25) :santa:

  • Deprecated the npm package solium. All updates will be pushed simultaneously to npm packages solium and ethlint. There is no difference between the software being pushed to these packages, but it is highly recommended that you move to the ethlint npm package.
  • Added Changelog
  • Added syntax support for Solidity 0.5.
  • Added ignore option for function-order rule (See issue)
  • Added file name in addition to stack trace in the output of --debug option.
  • Fixed the ignore feature to account for windows line endings in .soliumignore file. (Thanks to @romaric-juniet)
  • Fixed documentation errors.