Solhint Versions Save

Solhint is an open-source project to provide a linting utility for Solidity code.

v.4.5.4

1 week ago

[4.5.4] - 2024-04-10

Fixed

  • gas-custom-errors improved logic to ranged pragma versions #573
  • gas-indexed-events #573

v.4.5.2

1 month ago

[4.5.2] - 2024-03-15

Updated

  • Update Readme file to include all autofix rules
  • Update docker file
  • Update package json file

[4.5.0] - 2024-03-15

Updated

  • Update dependencies in package json #548
  • Custom errors rules checks from 0.8.4 forward before warning #555
  • Parser support up to Solidity 0.8.22 (*)

(*) Note: Solhint can work with latest Solidity versions. If new grammar/syntax is added or changed, it could give some false positives or miss a rule. But overall functionality will work as expected.

Added

  • New Rule: Interface starts with i #557

Gas Consumption Rules

  • New Rule: [GC] Mutlitoken1155 rule #541
  • New Rule: [GC] Small strings check #542
  • New Rule: [GC] Indexed events #543
  • New Rule: [GC] Calldata parameters #544
  • New Rule: [GC] Increment by one #545
  • New Rule: [GC] Struct packing #546
  • New Rule: [GC] Name Return Values #552
  • New Rule: [GC] Custom Errors #553 #555
  • New Rule: [GC] Dot Length in Loops #559
  • New Rule: [GC] Gas Strict Inequalities #560

Fixed

  • explicit-types logic improved and bug free #551
  • payable fallback Improved behavior #561

BREAKING CHANGES

  • named-return-values rule was renamed to gas-named-return-values and now it is part of Gas Consumption ruleset #552
  • custom-errors rule was renamed to gas-custom-errors and now it is part of Gas Consumption ruleset #553
  • Return error 0 when executed correctly #554
  • Default severity modified to WARN instead of OFF for foundry-test-functions and named-parameters-mapping rules #556

v4.5.0

1 month ago

Updated

  • Update dependencies in package json #548
  • Custom errors rules checks from 0.8.4 forward before warning #555
  • Parser support up to Solidity 0.8.22 (*)

(*) Note: Solhint can work with latest Solidity versions. If new grammar/syntax is added or changed, it could give some false positives or miss a rule. But overall functionality will work as expected.

Added

  • New Rule: Interface starts with i #557

Gas Consumption Rules

  • New Rule: [GC] Mutlitoken1155 rule #541
  • New Rule: [GC] Small strings check #542
  • New Rule: [GC] Indexed events #543
  • New Rule: [GC] Calldata parameters #544
  • New Rule: [GC] Increment by one #545
  • New Rule: [GC] Struct packing #546
  • New Rule: [GC] Name Return Values #552
  • New Rule: [GC] Custom Errors #553 #555
  • New Rule: [GC] Dot Length in Loops #559
  • New Rule: [GC] Gas Strict Inequalities #560

Fixed

  • explicit-types logic improved and bug free #551
  • payable fallback Improved behavior #561

BREAKING CHANGES

  • named-return-values rule was renamed to gas-named-return-values and now it is part of Gas Consumption ruleset #552
  • custom-errors rule was renamed to gas-custom-errors and now it is part of Gas Consumption ruleset #553
  • Return error 0 when executed correctly #554
  • Default severity modified to WARN instead of OFF for foundry-test-functions and named-parameters-mapping rules #556

v4.1.1

3 months ago

[4.1.1] - 2024-01-08

Fixed

  • Fix changelog typos

[4.1.0] - 2024-01-08

Updated

  • Included Sarif formatter #530 (Thanks to @eshaan7)
  • Cache npm on workflows #534

Added

  • Official Docker Image #524 (Thanks to @keypee)
  • Autofix for payable-fallback rule #528
  • Autofix for quotes rule #529
  • Autofix for avoid-suicide rule #531
  • Autofix for contract-name-camelcase rule #532
  • Autofix for event-name-camelcase rule #533

Fixed

  • Fix private vars leading underscore on libraries #525

v4.0.0

5 months ago

JOIN OUR DISCORD SERVER: HERE

[4.0] - 2023-10-01

Updated

  • Enhance explicit types sensitivity #493 (Thanks to @vladyan18)
  • Docs on private-vars-leading-underscore rule to clarify its functionality
  • Changelog and docs for no-empty-blocks rule to clarify its functionality
  • Require package with full path #515 (Thanks to @zouguangxian)

Added

  • Check for updates on Solhint version to keep users up to date. There's an option to disable this check (--disc) #506
  • fix option now shows the report on screen #509
  • save option to store report on disk with the standard or the specified format #509
  • Autofix for explicit-types rule #504
  • Autofix for no-console rule #513
  • Autofix for private-vars-leading-underscore rule #511

Fixed

3.6.2

8 months ago

[3.6.2] - 2023-08-17

Added

  • New Rule: one-contract-per-file - Enforces the use of ONE contract per file #487

Fixed

  • foundry-test-functions - Modified regex to include invariant and statefulFuzz tests #484
  • quotes - To allow quotes inside double quotes and viceversa #485
  • JSON - Formatter returning JS object instead of standard json #490

3.6.1

8 months ago

[3.6.1] - 2023-08-11

BREAKING CHANGE

  • RULE: not-rely-on-time was REMOVED from RECOMMENDED ruleset
    This was long overdue.
    Beware!! If you are relying on this rule and it is not explicitly configured (meaning there's only solhint:recommended option).
    You should add this rule manually:
  {
    "extends": "solhint:recommended",
    "rules": { 
        "not-rely-on-time": "warn", 
        "compiler-version": "off" 
    },
  }

If not explicitly added, this rule will not be executed.

SPECIAL ATTENTION

  • RULE: compiler-version default was updated from ^0.5.2 to ^0.8.0

Added

  • New Rule: Enforces the use of Custom Errors over Require and Revert statements #475
  • New Rule: Enforces the test_ prefix on a file for Foundry users #476
  • New Rule: Enforces the naming of function return values #478
  • Notes option on docs to add more information of each rule. See foundry-test-functions. #476

Fixed

  • func-named-parameters - false positives on builtin functions #472
  • ordering - treat initializer weight same as constructor #474
  • check-send-result - false positive on `erc777.send()`` function #477
  • explicit-types - default value is now taking into account when no value is specified in config #481
  • compiler-version - default value is now taking into account when no value is specified in config #483

Updates

  • Rule: check-send-result added config clarification in the new Notes section #482
  • Rule: compiler-version default was updated from ^0.5.2 to ^0.8.0 #483

Full Changelog: https://github.com/protofire/solhint/compare/3.5.1...3.6.1

3.5.1

8 months ago

[3.5.1] - 2023-08-04

Updated

  • Support ignoreConstructors option for no-empty-blocks #418
  • Bump json5 from 2.1.3 to 2.2.3 #376
  • Bump json-schema and jsprim #370
  • Bump semver from 6.3.0 to 7.5.2 #438
  • Corrected "Category" of quotes rule, added default rules list on readme #443
  • 'Deprecated' column on `rules.md`` #444
  • Information about maxCharacters allowed on reason-string rule #446
  • E2E tests for max-warnings #455
  • Replaced blacklist and whitelist words #459
  • Removed runtime dependencies on load-rules #462
  • Allowed $ symbol as part of naming #465
  • Disabled no-empty-blocks rule for receive() function #466

Added

  • New Rule: No unused imports #417
  • New Rule: To treat immutable as constants #458
  • New Rule: Explicit-types. To forbid/enforce full type or alias for variables declaration #467
  • New Rule: Naming of Function parameters. Enforce arguments naming #468
  • JSON formatter support #440
  • Rules List with list-rules command #449
  • E2E tests for formatters and new Compact formatter #457

Fixed

  • maxWarnings parameter waiting review #439
  • –fix option not working in avoid-throw rule #442
  • Formatter option fixed for stdin command #450

v3.4.1

1 year ago

Several fixes. Check CHANGELOG.md file for more information.

v3.4.0

1 year ago

Several fixes and new rules addition. Check CHANGELOG.md file for more information.