https://github.com/smartcontractkit/chainlink-solhint-rules
CLL custom Solhint rules
https://github.com/smartcontractkit/chainlink-solhint-rules
Last synced: about 1 month ago
JSON representation
CLL custom Solhint rules
- Host: GitHub
- URL: https://github.com/smartcontractkit/chainlink-solhint-rules
- Owner: smartcontractkit
- Created: 2022-10-06T11:26:12.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-02-20T00:54:12.000Z (over 1 year ago)
- Last Synced: 2024-04-15T00:04:46.338Z (about 1 year ago)
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/@chainlink/solhint-plugin-chainlink-solidity
- Size: 21.5 KB
- Stars: 7
- Watchers: 12
- Forks: 5
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Chainlink Solhint Rules
A set of Solhint rules for Chainlink's Solidity Style Guide.
[You can find a working Foundry example here](https://github.com/smartcontractkit/chainlink-solhint-rules-example).
## Install to a new project
```
npm init && npm install solhint solhint-plugin-chainlink-solidity@npm:@chainlink/solhint-plugin-chainlink-solidity --save
```Create a `.solhint.json` in your root project directory:
```
{
"extends": "solhint:recommended",
"plugins": ["chainlink-solidity"],
"rules": {
"compiler-version": ["off", "^0.8.0"],
"const-name-snakecase": "off",
"constructor-syntax": "error",
"var-name-mixedcase": "off",
"func-visibility": [
"error",
{
"ignoreConstructors": true
}
],
"max-line-length": ["error", 160],
"not-rely-on-time": "off",
"no-empty-blocks": "off",
"quotes": ["error", "single"],
"reason-string": [
"warn",
{
"maxLength": 64
}
],
"chainlink-solidity/prefix-internal-functions-with-underscore": "warn",
"chainlink-solidity/prefix-private-functions-with-underscore": "warn",
"chainlink-solidity/prefix-storage-variables-with-s-underscore": "warn",
"chainlink-solidity/prefix-immutable-variables-with-i": "warn",
"chainlink-solidity/prefix-interfaces-with-i": "warn",
"chainlink-solidity/all-caps-constant-storage-variables": "warn",
"chainlink-solidity/no-hardhat-imports": "warn",
"chainlink-solidity/inherited-constructor-args-not-in-contract-definition": "warn",
"chainlink-solidity/no-block-single-if-reverts": "warn",
"chainlink-solidity/explicit-returns": "warn"
}
}
```Add the following to your `package.json`:
```
"scripts": {
"solhint": "solhint --config .solhint.json \"src/*.sol\""
},
```Then, run:
```
npm solhintsrc/Counter.sol
4:1 warning Internal function increment is not prefixed with underscore (_) chainlink-solidity/prefix-internal-functions-with-underscore
4:1 warning Private / internal variable number is not prefixed with s_ chainlink-solidity/prefix-storage-variables-with-s-underscore
8:9 warning Provide an error message for require reason-string
```## Rules
| Rule Id | Description |
|---------------------------------------------------------|---------------------------------------------------------------------------------------|
| `prefix-internal-functions-with-underscore` | Naming convention |
| `prefix-private-functions-with-underscore` | Naming convention |
| `prefix-storage-variables-with-s-underscore` | Naming convention |
| `prefix-immutable-variables-with-i` | Naming convention |
| `prefix-interfaces-with-i` | Naming convention |
| `all-caps-constant-storage-variables` | Naming convention |
| `no-hardhat-imports` | Leftover `hardhat/*.sol` imports not allowed |
| `inherited-constructor-args-not-in-contract-definition` | Inherited contract constructor arguments should be specified in the constructor block |
| `no-block-single-if-reverts` | Omit curly braces for single-line guard clauses |
| `explicit-returns` | Always specify an expression after a `return` |