| Rule | Description | KPI |
|---|---|---|
| imports-on-top | Ensure that all import statements are on top of the file | Understandability |
| variable-declarations | Ensure that names “l”, “O” & “I” are not used for variables | Understandability |
| array-declarations | Ensure that array declarations do not have space between the type and brackets | style |
| operator-whitespace | Ensure that operators are surrounded by a single space on either side | style |
| conditionals-whitespace | Ensure that there is exactly one space between conditional operators and parenthetic blocks | style |
| comma-whitespace | Ensure that there is no whitespace or comments between comma delimited elements and commas | style |
| semicolon-whitespace | Ensure that there is no whitespace or comments before semicolons | style |
| function-whitespace | Ensure function calls and declaration have (or do not have) whitespace in appropriate locations | style |
| lbrace | Ensure that every if, for, while and do statement is followed by an opening curly brace “{“on the same line | style |
| mixedcase | Ensure that all variable, function and parameter names follow the mixedCase naming convention | Understandability |
| camelcase | Ensure that contract, library, modifier and struct names follow CamelCase notation | Understandability |
| uppercase | Ensure that all constants (and only constants) contain only upper case letters and underscore | Understandability |
| no-empty-blocks | Ensure that no empty blocks {} exist | Understandability |
| no-unused-vars | Flag all the variables that were declared but never used | Understandability |
| quotes | Ensure that all strings use only 1 style – either double quotes or single quotes | style |
| blank-lines | Ensure that there is exactly a 2-line gap between Contract and Funtion declarations | style |
| indentation | Ensure consistent indentation of 4 spaces per level | style |
| arg-overflow | In the case of 4+ elements in the same line require they are instead put on a single line each | style |
| whitespace | Specify where whitespace is suitable and where it is not | stylfy |
| function-order | Ensure order of functions in a contract: constructor, fallback, external, public, internal, private | Understandability |
| emit | Ensure that emit statement is used to trigger a solidity event | style |
| value-in-payable | Ensure “msg.value” is only used in functions with the “payable” modifier | Accuracy |
| max-len | Ensure that a line of code does not exceed the specified number of characters | style |
| error-reason | Ensure that error message is provided for revert and require statements | Understandability |
| visibility-first | Ensure that the visibility modifier for a function should come before any custom modifiers | Understandability |
| linebreak-style | Ensure consistent linebreak style | style |
