Visual Inspection Tools provide visual overview of smart contracts to aid in reading, developing and securing code. Several popular tools exist that each support a wide variety of reports, the most common being Slither and Surya.
The call graph or control flow graph shows the different contracts present in a set of source files. For each contract, all contract functions are highlighted and connected with arrows where they invoke other functions in the same or different contracts.
Call graphs are useful for contract comprehension as well as analyzing where sensitive interactions with external contracts could occur.
A contract function overview report highlights all functions in a contract along with their respective modifiers. This report is highly useful for looking at access control. Slither 's versions of this report may also incorporate data dependencies and variables written by each function.
An inheritance graph shows all contracts and interfaces and their inheritance relationships. It can be used to understand what functions will be available in a top level contract as well as understanding the relationship between different interfaces (e.g., for the purposes of a standards compliance review).
A function call trace shows a detailed list of all external calls and subcalls initiated by a specific function.
Show the keccak256 signature of each function.
For contracts that inherit from other contracts with multiple constructors, provide a sequence in which the different constructors will be called.
For contracts that inherit from other contracts, show the storage layout of all the state variables.
Show the EVM representation of each function.
Show all the require and assert calls as part of each function.