0.1.1 • Published 10 months ago

@sidestream/solhint-plugin-makerdao v0.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

MakerDAO solidity linter

This repository contains linting rules and opinionated configuration for the code style enforced by MakerDAO protocol engineers. Technically, it's a set of solhint plugins and a configuration file that can be globally installed in your system and executed on demand of as a pre-commit hook.

Getting started

Use this package as a standalone cli tool

  1. Install solhint globaly via npm i -g solhint
  2. Install this repository via npm i -g solhint-plugin-makerdao@npm:@sidestream/solhint-plugin-makerdao
  3. Lint all solidity files in the current folder via npx solhint-plugin-makerdao ./**/*.sol

Add this linter to existing project

  1. Install solhint via npm i --save-dev solhint
  2. Install this repository via npm i --save-dev solhint-plugin-makerdao@npm:@sidestream/solhint-plugin-makerdao
  3. Create a new .solhint.json according to the documentation or use the one provided in this repository.
  4. Add lint script to the package.json with solhint ./**/*.sol
  5. Run npm run lint manually, in CI or before every commit

Rules

RuleDescription
vertically-aligned-commentsEnforce comments in the same block that start with // to start on the same column
vertically-aligned-declarationsEnforce contract scope declarations to have variable names start on the same column
vertically-aligned-state-var-visibilityEnforce visibility modifiers such as public to start on the same column in the declarations
no-newlines-between-function-signaturesForbid newlines in interface defenitions
capitalized-snake-only-for-constForbid CAPITALIZED_SNAKE_CASE for variables that are not constants
newlines-between-custom-and-native-declarationsEnforce newlines between variable declarations of custom and native types (e.g. IExampleContract and uint256 )
constructor-arguments-unserscoredEnforce underscores for constructor argument names
prefer-type-provided-maxenforce using type provided max values over conversions. I.e. type(uint256).max over uint256(-1)

Publishing to npm

  1. Login to npm (if not yet) via npm login
  2. Update version field inside package.json according to the semver
    • Run npm install to propagate changes to the package-lock.json
  3. Open a PR with the changes
  4. Publish the new version via npm publish --access public
0.1.1

10 months ago

0.1.0

1 year ago

0.0.1-alpha.1

1 year ago

0.0.1-alpha.0

1 year ago