- General
- Cleanup repo (remove unnecessary files, automate testing, etc.)
- Graceful error handling
-
join
operations between contexts - Trait/Lang separation cleanup
- Propogate requirements across variables (i.e.
y = x;
&x != 0;
thereforey != 0;
)
- Language
- Better import handling (
foundry.toml
reading?) - User Types, i.e.
type MyType is uint256;
- Better Library handling
- Operator overloading
- Storage
- Consider constructor
- Consider non-constructor initializer
- Functions
- Call modifier at start of function analysis
- Call modifiers when calling another function from within a function
- Handle virtual/overriding
- Consider
unchecked
math- Keep uncheckedness for the entire block
- Pass uncheckedness into
bin_op
- Support
assembly
- Improve Support for
for/while
loops- Be smarter about the variables by looking at max num of iters and determine if we should just unroll & execute it
- Take a guess at the gas usage inside the body of the for-loop and try to set upper bounds
- Support
++i/i++/--i/i++
- Support low-level call
- Better import handling (
- Analyzers
- Bound Analyzer
- Cleanup CLI output
- Fix multiple calls to single function that don't show
- Taint Analyzer
- Gas Optimization Analyzer
- Unchecked Recommendation Analyzer
- Storage Variable Initialization Analyzer
- Invariant Analyzer
- Reentrancy Analyzer
- Bound Analyzer
- Queries
- Access Control Querier
- Cleanup output
- Code Path Querier
- Access Control Querier
- Long term
- GUI for better exploring code execution forks
- LSP/IDE integration
- DSL for writing queries
- Export bounds for SMT solvers (z3, cvc5, etc.)