diff --git a/Tools/SmartCheck/Solidity/Rules/SOLIDITY_BYTE_ARRAY_INSTEAD_BYTES.md b/Tools/SmartCheck/Solidity/Rules/SOLIDITY_BYTE_ARRAY_INSTEAD_BYTES.md new file mode 100644 index 0000000000000000000000000000000000000000..152982a5d2b8103c4877822c41c3700c547c9e6a --- /dev/null +++ b/Tools/SmartCheck/Solidity/Rules/SOLIDITY_BYTE_ARRAY_INSTEAD_BYTES.md @@ -0,0 +1,76 @@ +# Analysis of Smart Contract Security Vulnerabilities and Tools  +     <br/>    <br/> + <br/> + + +## SOLIDITY_BYTE_ARRAY_INSTEAD_BYTES +### Rule Description +<p> + Use <code>bytes</code> instead of <code>byte[]</code> for lower gas consumption. +</p> +### Solidity-Rules + +  + +``` +typeName + [typeName/elementaryTypeName[text()[1] = "byte"]] + [matches(text()[1], "^\[.*\]$")] +``` + + + +### Sample Code + +``` +pragma solidity 0.4.24; +contract C { + + // <yes> <report> SOLIDITY_BYTE_ARRAY_INSTEAD_BYTES f13a9f + byte[] someVariable1; + + bytes someVariable2; + uint[] data; +} +``` + +### Abstract Syntax Tree + +[Click Here](https://astexplorer.net/#/gist/81c00d2664b3a76545a8024e42c8a238/489d5aa42067fb6025a78c853016c00806d06a3f) to view the AST for the above code. Code generated from AST Explorer using _solidity-parser-antlr-0.4.11_ + +### Code Result + +``` +SOLIDITY_BYTE_ARRAY_INSTEAD_BYTES +patternId: f13a9f +severity: 1 +line: 5 +column: 4 +content: byte[] + +ruleId: SOLIDITY_VISIBILITY +patternId: b51ce0 +severity: 1 +line: 5 +column: 4 +content: byte[]someVariable1; + +ruleId: SOLIDITY_VISIBILITY +patternId: b51ce0 +severity: 1 +line: 7 +column: 4 +content: bytessomeVariable2; + +ruleId: SOLIDITY_VISIBILITY +patternId: b51ce0 +severity: 1 +line: 8 +column: 4 +content: uint[]data; + +SOLIDITY_VISIBILITY :3 +SOLIDITY_BYTE_ARRAY_INSTEAD_BYTES :1 + + +```