The use of assembly is error-prone and should be avoided.
return
is incorrectly used in assembly mode SLITHER-W1023Detect if return
in an assembly block halts unexpectedly the execution.
Detects the possible usage of a variable before the declaration is stepped over (either because it is later declared, or declared in another scope).
block.timestamp
SLITHER-W1066Dangerous usage of block.timestamp
. block.timestamp
can be manipulated by miners.
Incorrect use of assert()
. See Solidity best practices.
Solidity defines a naming convention that should be followed.
ERC20
)._
at the beginning of the mixed_case
match for private variables and unused parameters.Unused state variable.
return
is used instead of a leave
SLITHER-W1026Detect if a return
is used where a leave
should be used.
solc
versions 0.4.7
-0.5.9
contain a compiler bug leading to incorrect ABI encoder usage.
from
SLITHER-W1002Detect when msg.sender
is not used as from
in transferFrom.
Detect use of bitwise xor ^
instead of exponential **
Incorrect return values for ERC721
functions. A contract compiled with solidity > 0.4.22 interacting with these functions will fail to execute them, as the return value is missing.
Detect missing inheritance.
Detect arrays passed to a function that expects reference to a storage array
Detect collision due to dynamic type usages in abi.encodePacked
Detect if the values in a shift operation are reversed
Detect multiple constructor definitions in the same contract (using new and old schemes).
If a codebase has two contracts the similar names, the compilation artifacts will not contain one of the contracts with the duplicate name.
Detect unprotected variable that are marked protected
Prior to Solidity 0.5, a public mapping with nested structures returned incorrect values.