@sidestream/solhint-plugin-makerdao
v0.1.1
Published
This repository contains [linting](https://en.wikipedia.org/wiki/Lint_(software)) rules and opinionated configuration for the code style enforced by [MakerDAO](https://github.com/makerdao) protocol engineers. Technically, it's a set of [solhint](https://g
Downloads
35
Readme
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
- Install solhint globaly via
npm i -g solhint
- Install this repository via
npm i -g solhint-plugin-makerdao@npm:@sidestream/solhint-plugin-makerdao
- Lint all solidity files in the current folder via
npx solhint-plugin-makerdao ./**/*.sol
Add this linter to existing project
- Install solhint via
npm i --save-dev solhint
- Install this repository via
npm i --save-dev solhint-plugin-makerdao@npm:@sidestream/solhint-plugin-makerdao
- Create a new
.solhint.json
according to the documentation or use the one provided in this repository. - Add
lint
script to thepackage.json
withsolhint ./**/*.sol
- Run
npm run lint
manually, in CI or before every commit
Rules
| Rule | Description |
| :- | :- |
| vertically-aligned-comments | Enforce comments in the same block that start with //
to start on the same column |
| vertically-aligned-declarations | Enforce contract scope declarations to have variable names start on the same column |
| vertically-aligned-state-var-visibility | Enforce visibility modifiers such as public
to start on the same column in the declarations |
| no-newlines-between-function-signatures | Forbid newlines in interface defenitions |
| capitalized-snake-only-for-const | Forbid CAPITALIZED_SNAKE_CASE for variables that are not constants |
| newlines-between-custom-and-native-declarations | Enforce newlines between variable declarations of custom and native types (e.g. IExampleContract
and uint256
) |
| constructor-arguments-unserscored | Enforce underscores for constructor argument names |
| prefer-type-provided-max | enforce using type provided max values over conversions. I.e. type(uint256).max
over uint256(-1)
|
Publishing to npm
- Login to npm (if not yet) via
npm login
- Update
version
field insidepackage.json
according to the semver- Run
npm install
to propagate changes to thepackage-lock.json
- Run
- Open a PR with the changes
- Publish the new version via
npm publish --access public