Detectors Overview
Built-in Detectors
| # | Detector | Severity | Category | Requires Soufflé | Enabled by default |
|---|---|---|---|---|---|
| 1 | ArgCopyMutation | High | Security | ✔ | |
| 2 | AsmIsUsed | Info | Security | ||
| 3 | BranchDuplicate | High | Security | ✔ | |
| 4 | CellBounds | Critical | Security | ✔ | |
| 5 | ConstantAddress | Info | Security | ||
| 6 | DivideBeforeMultiply | High | Security | ✔ | ✔ |
| 7 | DumpIsUsed | Info | Security | ||
| 8 | DuplicatedCondition | High | Security | ✔ | |
| 9 | DuplicatedImport | Medium | Optimization | ✔ | |
| 10 | EnsurePrgSeed | Medium | Security | ✔ | |
| 11 | EtaLikeSimplifications | Low | Optimization | ✔ | |
| 12 | ExitCodeUsage | High | Security | ✔ | |
| 13 | FalseCondition | Medium | Security | ✔ | |
| 14 | FieldDoubleInit | Medium | Optimization | ✔ | |
| 15 | ImplicitOpcode | Info | Best Practices | ||
| 16 | InheritedStateMutation | Low | Best Practices | ||
| 17 | NeverAccessedVariables | Medium | Security | ✔ | |
| 18 | OptimalMathFunction | Low | Optimization | ✔ | |
| 19 | PreferAugmentedAssign | Info | Best Practices | ||
| 20 | PreferBinaryReceiver | Low | Optimization | ✔ | |
| 21 | PreferGlobalFunction | Low | Optimization | ✔ | |
| 22 | PreferSenderFunction | Low | Optimization | ✔ | |
| 23 | PreferredStdlibApi | Info—Low | Optimization, Security | ✔ | |
| 24 | ReadOnlyVariables | Medium | Security | ✔ | ✔ |
| 25 | RedundantBooleanExpression | Medium | Security | ✔ | |
| 26 | SendInLoop | Medium | Security | ||
| 27 | ShortCircuitCondition | Low | Optimization | ✔ | |
| 28 | StateMutationInGetter | Info | Security | ||
| 29 | StringReceiversOverlap | High | Security | ✔ | |
| 30 | SuboptimalCellOperation | Medium | Optimization | ✔ | |
| 31 | SuboptimalSend | Medium | Optimization | ✔ | |
| 32 | SuspiciousLoop | Medium | Security | ✔ | |
| 33 | SuspiciousMessageMode | Low—Medium | Security | ✔ | |
| 34 | TransitiveImport | Medium | Best Practices | ✔ | |
| 35 | UnboundLoop | High | Security | ✔ | ✔ |
| 36 | UnboundMap | Low | Security | ||
| 37 | UnprotectedCall | High | Security | ✔ | |
| 38 | UnusedExpressionResult | Medium | Security | ✔ | |
| 39 | UnusedMethodArgument | Low | Optimization | ✔ | |
| 40 | UnusedOptional | Low | Optimization | ✔ | |
| 41 | ZeroAddress | Low | Security | ✔ |
Some of the detectors require Soufflé to be installed. If no Soufflé installation is found, these detectors won't be executed.
A few detectors are optional and aimed at auditors to help uncover subtle issues in the source code. To enable all detectors, use the --all-detectors option. You can find a full list of configuration options on the configuration page.
Each detector targets a specific type of problem in your code. Click on the detector name to learn more.
Detector Severities and Categories
Severity Levels
Findings are classified according to their impact severity:
| Severity | Description |
|---|---|
| Info | Informational findings that highlight potential improvements |
| Low | Minor issues with limited impact |
| Medium | Significant issues that should be addressed |
| High | Serious vulnerabilities requiring immediate attention |
| Critical | Severe vulnerabilities with catastrophic potential impact |
Categories
Findings are organized into the following categories:
| Category | Description |
|---|---|
| Security | Any possible unintended behavior leading to bugs or vulnerabilities |
| Optimization | Code improvements for gas-optimizations |
| Best Practices | General code quality advices |