0.1.1 • Published 2 years ago

@sidestream/solhint-plugin-makerdao v0.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years 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

2 years ago

0.1.0

2 years ago

0.0.1-alpha.1

2 years ago

0.0.1-alpha.0

2 years ago