This is page 92 of 94. Use http://codebase.md/cyfrin/aderyn?page={x} to view the full context.
# Directory Structure
```
├── .cargo
│ └── config.toml
├── .git-blame-ignore-revs
├── .gitattributes
├── .github
│ ├── images
│ │ ├── aderyn_logo.png
│ │ ├── poweredbycyfrinblack.png
│ │ └── poweredbycyfrinblue.png
│ ├── ISSUE_TEMPLATE
│ │ ├── bug_report.md
│ │ ├── false_positive_issue.md
│ │ └── feature_request.md
│ └── workflows
│ ├── cargo.yml
│ ├── dependencies.yml
│ ├── release.yml
│ ├── reports.yml
│ └── toml.yml
├── .gitignore
├── .gitmodules
├── .vscode
│ └── settings.json
├── aderyn
│ ├── Cargo.toml
│ ├── oranda.json
│ ├── README.md
│ ├── src
│ │ ├── birdsong.rs
│ │ ├── completions.rs
│ │ ├── lib.rs
│ │ ├── lsp.rs
│ │ ├── main.rs
│ │ ├── mcp.rs
│ │ └── panic.rs
│ └── templates
│ └── aderyn.toml
├── aderyn_core
│ ├── .gitignore
│ ├── Cargo.toml
│ ├── README.md
│ ├── src
│ │ ├── ast
│ │ │ ├── ast_nodes.rs
│ │ │ ├── ast.rs
│ │ │ ├── impls
│ │ │ │ ├── ctx
│ │ │ │ │ ├── utils.rs
│ │ │ │ │ └── workspace.rs
│ │ │ │ ├── ctx.rs
│ │ │ │ ├── disp
│ │ │ │ │ ├── blocks.rs
│ │ │ │ │ ├── contracts.rs
│ │ │ │ │ ├── enumerations.rs
│ │ │ │ │ ├── errors.rs
│ │ │ │ │ ├── events.rs
│ │ │ │ │ ├── expressions.rs
│ │ │ │ │ ├── functions.rs
│ │ │ │ │ ├── identifiers.rs
│ │ │ │ │ ├── literals.rs
│ │ │ │ │ ├── modifiers.rs
│ │ │ │ │ ├── statements.rs
│ │ │ │ │ ├── structures.rs
│ │ │ │ │ ├── types.rs
│ │ │ │ │ ├── user_defined_value_types.rs
│ │ │ │ │ ├── using_for_directives.rs
│ │ │ │ │ └── variables.rs
│ │ │ │ ├── disp.rs
│ │ │ │ ├── node
│ │ │ │ │ ├── blocks.rs
│ │ │ │ │ ├── contracts.rs
│ │ │ │ │ ├── documentation.rs
│ │ │ │ │ ├── enumerations.rs
│ │ │ │ │ ├── errors.rs
│ │ │ │ │ ├── events.rs
│ │ │ │ │ ├── expressions.rs
│ │ │ │ │ ├── functions.rs
│ │ │ │ │ ├── identifiers.rs
│ │ │ │ │ ├── import_directives.rs
│ │ │ │ │ ├── literals.rs
│ │ │ │ │ ├── modifiers.rs
│ │ │ │ │ ├── pragma_directives.rs
│ │ │ │ │ ├── source_units.rs
│ │ │ │ │ ├── statements.rs
│ │ │ │ │ ├── structures.rs
│ │ │ │ │ ├── types.rs
│ │ │ │ │ ├── user_defined_value_types.rs
│ │ │ │ │ ├── using_for_directives.rs
│ │ │ │ │ └── variables.rs
│ │ │ │ ├── node.rs
│ │ │ │ ├── own
│ │ │ │ │ ├── hashing.rs
│ │ │ │ │ ├── node_id.rs
│ │ │ │ │ ├── source_units.rs
│ │ │ │ │ └── utils.rs
│ │ │ │ └── own.rs
│ │ │ ├── impls.rs
│ │ │ ├── macros.rs
│ │ │ ├── magic.rs
│ │ │ ├── node_type.rs
│ │ │ └── yul.rs
│ │ ├── ast.rs
│ │ ├── audit
│ │ │ ├── attack_surface.rs
│ │ │ ├── auditor.rs
│ │ │ ├── entrypoint.rs
│ │ │ └── public_functions_no_sender.rs
│ │ ├── audit.rs
│ │ ├── context
│ │ │ ├── browser
│ │ │ │ ├── ancestral_line.rs
│ │ │ │ ├── closest_ancestor.rs
│ │ │ │ ├── external_calls.rs
│ │ │ │ ├── extractor.rs
│ │ │ │ ├── immediate_children.rs
│ │ │ │ ├── location.rs
│ │ │ │ ├── macros.rs
│ │ │ │ ├── parent.rs
│ │ │ │ ├── peek_over.rs
│ │ │ │ ├── peek_under.rs
│ │ │ │ ├── peek.rs
│ │ │ │ ├── siblings.rs
│ │ │ │ ├── sort_nodes.rs
│ │ │ │ └── storage_vars.rs
│ │ │ ├── browser.rs
│ │ │ ├── capturable.rs
│ │ │ ├── flow
│ │ │ │ ├── display.rs
│ │ │ │ ├── error.rs
│ │ │ │ ├── kind.rs
│ │ │ │ ├── primitives.rs
│ │ │ │ ├── reducibles.rs
│ │ │ │ ├── tests.rs
│ │ │ │ ├── utils.rs
│ │ │ │ ├── visualizer.rs
│ │ │ │ └── voids.rs
│ │ │ ├── flow.rs
│ │ │ ├── graph
│ │ │ │ ├── callgraph
│ │ │ │ │ ├── legacy.rs
│ │ │ │ │ ├── new.rs
│ │ │ │ │ ├── tests.rs
│ │ │ │ │ ├── utils.rs
│ │ │ │ │ └── visit.rs
│ │ │ │ ├── callgraph.rs
│ │ │ │ ├── preprocess
│ │ │ │ │ ├── legacy.rs
│ │ │ │ │ └── new.rs
│ │ │ │ ├── preprocess.rs
│ │ │ │ ├── traits.rs
│ │ │ │ └── utils.rs
│ │ │ ├── graph.rs
│ │ │ ├── macros.rs
│ │ │ ├── mcp
│ │ │ │ ├── callgraph
│ │ │ │ │ ├── render.rs
│ │ │ │ │ ├── tool.rs
│ │ │ │ │ └── utils.rs
│ │ │ │ ├── callgraph.rs
│ │ │ │ ├── contract_surface
│ │ │ │ │ ├── render.rs
│ │ │ │ │ ├── tool.rs
│ │ │ │ │ └── util.rs
│ │ │ │ ├── contract_surface.rs
│ │ │ │ ├── list_contracts
│ │ │ │ │ ├── render.rs
│ │ │ │ │ └── tool.rs
│ │ │ │ ├── list_contracts.rs
│ │ │ │ ├── node_finder
│ │ │ │ │ ├── render.rs
│ │ │ │ │ ├── tool.rs
│ │ │ │ │ └── utils.rs
│ │ │ │ ├── node_finder.rs
│ │ │ │ ├── node_summarizer
│ │ │ │ │ ├── render.rs
│ │ │ │ │ ├── tool.rs
│ │ │ │ │ └── utils.rs
│ │ │ │ ├── node_summarizer.rs
│ │ │ │ ├── project_overview
│ │ │ │ │ ├── render.rs
│ │ │ │ │ └── tool.rs
│ │ │ │ ├── project_overview.rs
│ │ │ │ ├── tool_guide
│ │ │ │ │ └── tool.rs
│ │ │ │ └── tool_guide.rs
│ │ │ ├── mcp.rs
│ │ │ ├── router
│ │ │ │ ├── external_calls.rs
│ │ │ │ ├── internal_calls.rs
│ │ │ │ ├── modifier_calls.rs
│ │ │ │ └── tests.rs
│ │ │ ├── router.rs
│ │ │ └── workspace.rs
│ │ ├── context.rs
│ │ ├── detect
│ │ │ ├── detector.rs
│ │ │ ├── entrypoint.rs
│ │ │ ├── helpers.rs
│ │ │ ├── high
│ │ │ │ ├── _template.rs
│ │ │ │ ├── abi_encode_packed_hash_collision.rs
│ │ │ │ ├── arbitrary_transfer_from.rs
│ │ │ │ ├── const_func_changes_state.rs
│ │ │ │ ├── contract_locks_ether.rs
│ │ │ │ ├── dangerous_unary_operator.rs
│ │ │ │ ├── delegate_call_unchecked_address.rs
│ │ │ │ ├── delete_nested_mapping.rs
│ │ │ │ ├── dynamic_array_length_assignment.rs
│ │ │ │ ├── enumerable_loop_removal.rs
│ │ │ │ ├── eth_send_unchecked_address.rs
│ │ │ │ ├── experimental_encoder.rs
│ │ │ │ ├── function_selector_collision.rs
│ │ │ │ ├── incorrect_caret_operator.rs
│ │ │ │ ├── incorrect_erc20_interface.rs
│ │ │ │ ├── incorrect_erc721_interface.rs
│ │ │ │ ├── incorrect_shift_order.rs
│ │ │ │ ├── misused_boolean.rs
│ │ │ │ ├── msg_value_in_loops.rs
│ │ │ │ ├── multiple_constructors.rs
│ │ │ │ ├── nested_struct_in_mapping.rs
│ │ │ │ ├── out_of_order_retryable.rs
│ │ │ │ ├── pre_declared_variable_usage.rs
│ │ │ │ ├── reentrancy_state_change.rs
│ │ │ │ ├── reused_contract_name.rs
│ │ │ │ ├── rtlo.rs
│ │ │ │ ├── selfdestruct.rs
│ │ │ │ ├── signed_integer_storage_array.rs
│ │ │ │ ├── state_variable_shadowing.rs
│ │ │ │ ├── storage_array_memory_edit.rs
│ │ │ │ ├── strict_equality_contract_balance.rs
│ │ │ │ ├── tautological_compare.rs
│ │ │ │ ├── tautology_or_contradiction.rs
│ │ │ │ ├── tx_origin_used_for_auth.rs
│ │ │ │ ├── unchecked_low_level_call.rs
│ │ │ │ ├── unchecked_send.rs
│ │ │ │ ├── unprotected_initializer.rs
│ │ │ │ ├── unsafe_casting.rs
│ │ │ │ ├── weak_randomness.rs
│ │ │ │ └── yul_return.rs
│ │ │ ├── high.rs
│ │ │ ├── low
│ │ │ │ ├── _template.rs
│ │ │ │ ├── assert_state_change.rs
│ │ │ │ ├── block_timestamp_deadline.rs
│ │ │ │ ├── boolean_equality.rs
│ │ │ │ ├── builtin_symbol_shadowing.rs
│ │ │ │ ├── centralization_risk.rs
│ │ │ │ ├── constant_function_contains_assembly.rs
│ │ │ │ ├── costly_loop.rs
│ │ │ │ ├── dead_code.rs
│ │ │ │ ├── delegatecall_in_loop.rs
│ │ │ │ ├── deprecated_oz_function.rs
│ │ │ │ ├── division_before_multiplication.rs
│ │ │ │ ├── ecrecover.rs
│ │ │ │ ├── empty_block.rs
│ │ │ │ ├── empty_require_revert.rs
│ │ │ │ ├── function_initializing_state.rs
│ │ │ │ ├── function_pointer_in_constructor.rs
│ │ │ │ ├── inconsistent_type_names.rs
│ │ │ │ ├── incorrect_modifier.rs
│ │ │ │ ├── internal_function_used_once.rs
│ │ │ │ ├── large_numeric_literal.rs
│ │ │ │ ├── literal_instead_of_constant.rs
│ │ │ │ ├── local_variable_shadowing.rs
│ │ │ │ ├── missing_inheritance.rs
│ │ │ │ ├── modifier_used_only_once.rs
│ │ │ │ ├── multiple_placeholders.rs
│ │ │ │ ├── non_reentrant_not_first.rs
│ │ │ │ ├── push_0_opcode.rs
│ │ │ │ ├── redundant_statement.rs
│ │ │ │ ├── require_revert_in_loop.rs
│ │ │ │ ├── return_bomb.rs
│ │ │ │ ├── solmate_safe_transfer_lib.rs
│ │ │ │ ├── state_change_without_event.rs
│ │ │ │ ├── state_no_address_check.rs
│ │ │ │ ├── state_variable_could_be_constant.rs
│ │ │ │ ├── state_variable_could_be_immutable.rs
│ │ │ │ ├── state_variable_read_external.rs
│ │ │ │ ├── storage_array_length_not_cached.rs
│ │ │ │ ├── todo.rs
│ │ │ │ ├── unchecked_return.rs
│ │ │ │ ├── uninitialized_local_variable.rs
│ │ │ │ ├── unsafe_erc20_operation.rs
│ │ │ │ ├── unsafe_oz_erc721_mint.rs
│ │ │ │ ├── unspecific_solidity_pragma.rs
│ │ │ │ ├── unused_error.rs
│ │ │ │ ├── unused_import.rs
│ │ │ │ ├── unused_public_function.rs
│ │ │ │ ├── unused_state_variable.rs
│ │ │ │ └── void_constructor.rs
│ │ │ ├── low.rs
│ │ │ └── test_utils.rs
│ │ ├── detect.rs
│ │ ├── lib.rs
│ │ ├── stats
│ │ │ ├── cloc.rs
│ │ │ ├── dbg_tips.txt
│ │ │ ├── ignore.rs
│ │ │ ├── token.rs
│ │ │ └── util.rs
│ │ ├── stats.rs
│ │ ├── test_utils
│ │ │ └── load_source_unit.rs
│ │ ├── test_utils.rs
│ │ ├── visitor
│ │ │ ├── ast_visitor.rs
│ │ │ ├── macros.rs
│ │ │ └── workspace_visitor.rs
│ │ └── visitor.rs
│ ├── templates
│ │ └── mcp-tool-response
│ │ ├── callgraph.md
│ │ ├── contract_surface.md
│ │ ├── list_contracts.md
│ │ ├── node_finder_get_all.md
│ │ ├── node_finder_grep.md
│ │ ├── node_finder_search.md
│ │ ├── node_summarizer.md
│ │ ├── project_overview.md
│ │ └── tool_guide.md
│ └── tests
│ ├── common
│ │ ├── ancestral_line.rs
│ │ ├── closest_ancestor.rs
│ │ ├── immediate_children.rs
│ │ ├── immediate_parent.rs
│ │ ├── mod.rs
│ │ ├── new_ast_nodes.rs
│ │ ├── peek_over.rs
│ │ └── sibling.rs
│ └── traversal.rs
├── aderyn_driver
│ ├── .gitignore
│ ├── benches
│ │ └── detectors.rs
│ ├── Cargo.toml
│ ├── README.md
│ ├── src
│ │ ├── compile.rs
│ │ ├── config.rs
│ │ ├── display.rs
│ │ ├── driver.rs
│ │ ├── interface
│ │ │ ├── json.rs
│ │ │ ├── lsp.rs
│ │ │ ├── markdown.rs
│ │ │ ├── mod.rs
│ │ │ ├── sarif.rs
│ │ │ ├── tables.rs
│ │ │ └── util.rs
│ │ ├── lib.rs
│ │ ├── mcp.rs
│ │ ├── process.rs
│ │ └── runner.rs
│ └── tests
│ └── astgen.rs
├── bacon.toml
├── benchmarks
│ ├── aderyn
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── iteration_times.svg
│ │ │ └── pdf.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── iteration_times_small.svg
│ │ ├── iteration_times.svg
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── relative_iteration_times_small.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── SD.svg
│ │ └── typical.svg
│ ├── arbitrary-transfer-from
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── avoid-abi-encode-packed
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── block-timestamp-deadline
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── centralization-risk
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── constants-instead-of-literals
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── delegate-call-in-loop
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── deprecated-oz-functions
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── ecrecover
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── empty-block
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── hello_world
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── inconsistent-type-names
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── large-numeric-literal
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── non-reentrant-before-others
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── push-zero-opcode
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── report
│ │ └── index.html
│ ├── require-with-string
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── solmate-safe-transfer-lib
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── unindexed-events
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── unprotected-initializer
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── unsafe-erc20-functions
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── unsafe-oz-erc721-mint
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── unspecific-solidity-pragma
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── useless-internal-function
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── useless-modifier
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── useless-public-function
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ └── zero-address-check
│ ├── base
│ │ ├── benchmark.json
│ │ ├── estimates.json
│ │ ├── sample.json
│ │ └── tukey.json
│ ├── change
│ │ └── estimates.json
│ ├── new
│ │ ├── benchmark.json
│ │ ├── estimates.json
│ │ ├── sample.json
│ │ └── tukey.json
│ └── report
│ ├── both
│ │ ├── pdf.svg
│ │ └── regression.svg
│ ├── change
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ └── t-test.svg
│ ├── index.html
│ ├── MAD.svg
│ ├── mean.svg
│ ├── median.svg
│ ├── pdf_small.svg
│ ├── pdf.svg
│ ├── regression_small.svg
│ ├── regression.svg
│ ├── relative_pdf_small.svg
│ ├── relative_regression_small.svg
│ ├── SD.svg
│ ├── slope.svg
│ └── typical.svg
├── Cargo.lock
├── Cargo.toml
├── cli
│ ├── benchmarks.sh
│ └── reportgen.sh
├── CODEOWNERS
├── CONTRIBUTING.md
├── cyfrinup
│ ├── dynamic_script
│ └── why.md
├── deny.toml
├── dist-workspace.toml
├── funding.json
├── LICENSE
├── Makefile
├── package-lock.json
├── package.json
├── README.md
├── RELEASE_CHECKLIST.md
├── reports
│ ├── adhoc-sol-files-highs-only-report.json
│ ├── adhoc-sol-files-report.md
│ ├── ccip-functions-report.md
│ ├── empty_report.md
│ ├── hardhat-playground-report.md
│ ├── nft-report-icm.md
│ ├── nft-report.md
│ ├── prb-math-report.md
│ ├── report.json
│ ├── report.md
│ ├── report.sarif
│ ├── sablier-aderyn-toml-nested-root.md
│ ├── templegold-report.md
│ └── uniswap_profile.md
├── rust-toolchain.toml
├── rustfmt.toml
├── tests
│ ├── adhoc-sol-files
│ │ ├── aderyn.toml
│ │ ├── Counter.sol
│ │ ├── DemoASTNodes.sol
│ │ ├── Helper.sol
│ │ ├── InconsistentUints.sol
│ │ ├── inheritance
│ │ │ ├── ExtendedInheritance.sol
│ │ │ ├── IContractInheritance.sol
│ │ │ └── InheritanceBase.sol
│ │ ├── InternalFunctions.sol
│ │ ├── lib
│ │ │ └── ThisShouldBeExcluded.sol
│ │ ├── multiple-versions
│ │ │ ├── 0.4
│ │ │ │ ├── A.sol
│ │ │ │ └── B.sol
│ │ │ ├── 0.5
│ │ │ │ ├── A.sol
│ │ │ │ └── B.sol
│ │ │ ├── 0.6
│ │ │ │ ├── A.sol
│ │ │ │ └── B.sol
│ │ │ ├── 0.7
│ │ │ │ ├── A.sol
│ │ │ │ └── B.sol
│ │ │ └── 0.8
│ │ │ ├── A.sol
│ │ │ └── B.sol
│ │ ├── OnceModifierExample.sol
│ │ └── StateVariables.sol
│ ├── ast
│ │ ├── abstract_contract.json
│ │ ├── address_payable.json
│ │ ├── array_type_name.json
│ │ ├── ast-erc4626.json
│ │ ├── base_constructor_call.json
│ │ ├── bit_not.json
│ │ ├── call.json
│ │ ├── constructor.json
│ │ ├── contract_dep_order.json
│ │ ├── do_while.json
│ │ ├── documentation_1.json
│ │ ├── documentation_2.json
│ │ ├── documentation_3.json
│ │ ├── documentation_local_variable.json
│ │ ├── documentation_on_statements.json
│ │ ├── documentation_triple.json
│ │ ├── empty_block.json
│ │ ├── enum_value_declaration.json
│ │ ├── enum_value.json
│ │ ├── event_definition.json
│ │ ├── experimental_encoder_pragma.json
│ │ ├── fallback_and_reveice_ether.json
│ │ ├── fallback_payable.json
│ │ ├── fallback.json
│ │ ├── function_type.json
│ │ ├── function.json
│ │ ├── global_enum.json
│ │ ├── global_struct.json
│ │ ├── inheritance_specifier.json
│ │ ├── leave.json
│ │ ├── license.json
│ │ ├── long_type_name_binary_operation.json
│ │ ├── long_type_name_identifier.json
│ │ ├── loop.json
│ │ ├── mappings.json
│ │ ├── modifier_definition.json
│ │ ├── modifier_invocation.json
│ │ ├── mutability.json
│ │ ├── nested_functions.json
│ │ ├── non_utf8.json
│ │ ├── override.json
│ │ ├── placeholder_statement.json
│ │ ├── receive_ether.json
│ │ ├── short_type_name_ref.json
│ │ ├── short_type_name.json
│ │ ├── slot_offset.json
│ │ ├── smoke.json
│ │ ├── source_location.json
│ │ ├── string.json
│ │ ├── stringlit.json
│ │ ├── switch_default.json
│ │ ├── switch.json
│ │ ├── try_catch.json
│ │ ├── two_base_functions.json
│ │ ├── unicode.json
│ │ ├── used_errors.json
│ │ ├── userDefinedValueType.json
│ │ ├── using_for_directive.json
│ │ ├── var_access.json
│ │ └── yul_hex_literal.json
│ ├── contract-playground
│ │ ├── .github
│ │ │ └── workflows
│ │ │ └── test.yml
│ │ ├── .gitignore
│ │ ├── dot
│ │ │ └── .gitkeep
│ │ ├── foundry.toml
│ │ ├── README.md
│ │ ├── script
│ │ │ └── Counter.s.sol
│ │ ├── src
│ │ │ ├── AbstractContract.sol
│ │ │ ├── AderynIgnoreCustomDetectors.sol
│ │ │ ├── AdminContract.sol
│ │ │ ├── ArbitraryTransferFrom.sol
│ │ │ ├── AssemblyExample.sol
│ │ │ ├── AssertStateChange.sol
│ │ │ ├── auditor_mode
│ │ │ │ ├── ExternalCalls.sol
│ │ │ │ └── PublicFunctionsWithoutSenderCheck.sol
│ │ │ ├── BooleanEquality.sol
│ │ │ ├── BuiltinSymbolShadow.sol
│ │ │ ├── CacheArrayLength.sol
│ │ │ ├── CallGraphTests.sol
│ │ │ ├── Casting.sol
│ │ │ ├── cloc
│ │ │ │ ├── AnotherHeavilyCommentedContract.sol
│ │ │ │ ├── EmptyContractFile.sol
│ │ │ │ └── HeavilyCommentedContract.sol
│ │ │ ├── CompilerBugStorageSignedIntegerArray.sol
│ │ │ ├── ConstantFuncsAssembly.sol
│ │ │ ├── ConstantsLiterals.sol
│ │ │ ├── ConstFuncChangeState.sol
│ │ │ ├── ContractLocksEther.sol
│ │ │ ├── ContractWithTodo.sol
│ │ │ ├── control_flow
│ │ │ │ └── SimpleProgram.sol
│ │ │ ├── CostlyOperationsInsideLoops.sol
│ │ │ ├── Counter.sol
│ │ │ ├── CrazyPragma.sol
│ │ │ ├── DangerousStrictEquality1.sol
│ │ │ ├── DangerousStrictEquality2.sol
│ │ │ ├── DangerousUnaryOperator.sol
│ │ │ ├── DeadCode.sol
│ │ │ ├── DelegateCallWithoutAddressCheck.sol
│ │ │ ├── DeletionNestedMappingStructureContract.sol
│ │ │ ├── DeprecatedOZFunctions.sol
│ │ │ ├── DivisionBeforeMultiplication.sol
│ │ │ ├── DynamicArrayLengthAssignment.sol
│ │ │ ├── EmitAfterExternalCall.sol
│ │ │ ├── EmptyBlocks.sol
│ │ │ ├── EnumerableSetIteration.sol
│ │ │ ├── eth2
│ │ │ │ └── DepositContract.sol
│ │ │ ├── ExperimentalEncoder.sol
│ │ │ ├── ExternalCalls.sol
│ │ │ ├── FunctionInitializingState.sol
│ │ │ ├── FunctionPointers.sol
│ │ │ ├── FunctionSignatureCollision.sol
│ │ │ ├── HugeConstants.sol
│ │ │ ├── IgnoreEverything.sol
│ │ │ ├── InconsistentUints.sol
│ │ │ ├── IncorrectCaretOperator.sol
│ │ │ ├── IncorrectERC20.sol
│ │ │ ├── IncorrectERC721.sol
│ │ │ ├── IncorrectModifier.sol
│ │ │ ├── IncorrectShift.sol
│ │ │ ├── inheritance
│ │ │ │ ├── ExtendedInheritance.sol
│ │ │ │ ├── IContractInheritance.sol
│ │ │ │ └── InheritanceBase.sol
│ │ │ ├── InternalFunctions.sol
│ │ │ ├── KeccakContract.sol
│ │ │ ├── LocalVariableShadow.sol
│ │ │ ├── MissingInheritance.sol
│ │ │ ├── MisusedBoolean.sol
│ │ │ ├── MsgValueInLoop.sol
│ │ │ ├── MultipleConstructorSchemes.sol
│ │ │ ├── MultiplePlaceholders.sol
│ │ │ ├── nested
│ │ │ │ ├── 1
│ │ │ │ │ └── Nested.sol
│ │ │ │ └── 2
│ │ │ │ └── Nested.sol
│ │ │ ├── nested_mappings
│ │ │ │ ├── LaterVersion.sol
│ │ │ │ └── NestedMappings.sol
│ │ │ ├── OnceModifierExample.sol
│ │ │ ├── OnlyLibrary.sol
│ │ │ ├── OutOfOrderRetryable.sol
│ │ │ ├── parent_chain
│ │ │ │ └── ParentChainContract.sol
│ │ │ ├── PragmaRange.sol
│ │ │ ├── PreDeclaredVarUsage.sol
│ │ │ ├── PublicFunction.sol
│ │ │ ├── PublicVariableReadInExternalContext.sol
│ │ │ ├── RedundantStatements.sol
│ │ │ ├── ReturnBomb.sol
│ │ │ ├── reused_contract_name
│ │ │ │ ├── ContractA.sol
│ │ │ │ └── ContractB.sol
│ │ │ ├── RevertsAndRequriesInLoops.sol
│ │ │ ├── router
│ │ │ │ ├── ExternalCalls.sol
│ │ │ │ ├── FallbackAndReceiveOverrides.sol
│ │ │ │ ├── InternalCalls.sol
│ │ │ │ ├── ModifierCalls.sol
│ │ │ │ └── VarOverridesFunction.sol
│ │ │ ├── RTLO.sol
│ │ │ ├── SendEtherNoChecks.sol
│ │ │ ├── SendEtherNoChecksLibImport.sol
│ │ │ ├── StateChangeAfterExternalCall.sol
│ │ │ ├── StateShadowing.sol
│ │ │ ├── StateVariableCouldBeDeclaredConstant.sol
│ │ │ ├── StateVariableCouldBeDeclaredImmutable.sol
│ │ │ ├── StateVariables.sol
│ │ │ ├── StateVariablesChangesWithoutEvents.sol
│ │ │ ├── StateVariablesManipulation.sol
│ │ │ ├── StorageConditionals.sol
│ │ │ ├── StorageParameters.sol
│ │ │ ├── T11sTranferer.sol
│ │ │ ├── TautologicalCompare.sol
│ │ │ ├── TautologyOrContradiction.sol
│ │ │ ├── TestERC20.sol
│ │ │ ├── TransientKeyword.sol
│ │ │ ├── Trump.sol
│ │ │ ├── TxOriginUsedForAuth.sol
│ │ │ ├── U2.sol
│ │ │ ├── U3.sol
│ │ │ ├── U4.sol
│ │ │ ├── U5.sol
│ │ │ ├── UncheckedCalls.sol
│ │ │ ├── UncheckedReturn.sol
│ │ │ ├── UncheckedSend.sol
│ │ │ ├── UninitializedLocalVariables.sol
│ │ │ ├── UninitializedStateVariable.sol
│ │ │ ├── uniswap
│ │ │ │ ├── UniswapV2Swapper.sol
│ │ │ │ └── UniswapV3Swapper.sol
│ │ │ ├── UnprotectedInitialize.sol
│ │ │ ├── UnsafeERC721Mint.sol
│ │ │ ├── UnusedError.sol
│ │ │ ├── UnusedImport.sol
│ │ │ ├── UnusedStateVariables.sol
│ │ │ ├── UsingSelfdestruct.sol
│ │ │ ├── VoidConstructor.sol
│ │ │ ├── WeakRandomness.sol
│ │ │ ├── WrongOrderOfLayout.sol
│ │ │ ├── YulReturn.sol
│ │ │ └── ZeroAddressCheck.sol
│ │ └── test
│ │ └── Counter.t.sol
│ ├── foundry-nft-f23
│ │ ├── .github
│ │ │ └── workflows
│ │ │ └── test.yml
│ │ ├── .gitignore
│ │ ├── foundry.lock
│ │ ├── foundry.toml
│ │ ├── README.md
│ │ ├── remappings.txt
│ │ └── src
│ │ ├── BasicNft.sol
│ │ ├── F1.sol
│ │ ├── F2.sol
│ │ ├── Initializer.sol
│ │ └── inner-core-modules
│ │ └── ICM.sol
│ ├── foundry-nft-f23-icm
│ │ ├── .github
│ │ │ └── workflows
│ │ │ └── test.yml
│ │ ├── .gitignore
│ │ ├── aderyn.toml
│ │ ├── foundry.toml
│ │ ├── README.md
│ │ ├── remappings.txt
│ │ └── src
│ │ ├── BasicNft.sol
│ │ ├── F1.sol
│ │ ├── F2.sol
│ │ ├── Initializer.sol
│ │ └── inner-core-modules
│ │ └── ICM.sol
│ ├── hardhat-js-playground
│ │ ├── .gitignore
│ │ ├── artifacts
│ │ │ ├── build-info
│ │ │ │ └── cee6fe9a9a2f03f7ff10a27ab2746af6.json
│ │ │ └── contracts
│ │ │ ├── Counter.sol
│ │ │ │ ├── Counter.dbg.json
│ │ │ │ └── Counter.json
│ │ │ ├── ExtendedInheritance.sol
│ │ │ │ ├── ExtendedInheritance.dbg.json
│ │ │ │ └── ExtendedInheritance.json
│ │ │ ├── IContractInheritance.sol
│ │ │ │ ├── IContractInheritance.dbg.json
│ │ │ │ └── IContractInheritance.json
│ │ │ ├── InheritanceBase.sol
│ │ │ │ ├── InheritanceBase.dbg.json
│ │ │ │ └── InheritanceBase.json
│ │ │ ├── KeccakContract.sol
│ │ │ │ ├── KeccakContract.dbg.json
│ │ │ │ └── KeccakContract.json
│ │ │ ├── Lock.sol
│ │ │ │ ├── Lock.dbg.json
│ │ │ │ └── Lock.json
│ │ │ └── StateVariables.sol
│ │ │ ├── StateVariables.dbg.json
│ │ │ └── StateVariables.json
│ │ ├── contracts
│ │ │ ├── Counter.sol
│ │ │ ├── ExtendedInheritance.sol
│ │ │ ├── IContractInheritance.sol
│ │ │ ├── InheritanceBase.sol
│ │ │ ├── KeccakContract.sol
│ │ │ ├── Lock.sol
│ │ │ └── StateVariables.sol
│ │ ├── hardhat.config.js
│ │ ├── package.json
│ │ ├── README.md
│ │ ├── scripts
│ │ │ └── deploy.js
│ │ ├── test
│ │ │ └── Lock.js
│ │ └── yarn.lock
│ ├── no-sol-files
│ │ ├── extra
│ │ │ └── HelloAgain.md
│ │ ├── Hello.txt
│ │ └── Hello.yul
│ └── toml
│ ├── nested_project1
│ │ ├── aderyn.toml
│ │ ├── folder1
│ │ │ └── hardhat.config.ts
│ │ ├── folder2
│ │ │ └── hardhat.config.ts
│ │ └── folder3
│ │ └── file.txt
│ └── nested_project2
│ ├── aderyn.toml
│ ├── folder1
│ │ └── foundry.toml
│ └── folder2
│ └── file1.txt
├── tools
│ └── xtask
│ ├── Cargo.toml
│ └── src
│ ├── blesspr.rs
│ ├── cut_release.rs
│ ├── flags.rs
│ ├── main.rs
│ ├── reportgen.rs
│ └── tomlgen.rs
└── typos.toml
```
# Files
--------------------------------------------------------------------------------
/reports/report.md:
--------------------------------------------------------------------------------
```markdown
# Aderyn Analysis Report
This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a static analysis tool built by [Cyfrin](https://cyfrin.io), a blockchain security company. This report is not a substitute for manual audit or security review. It should not be relied upon for any purpose other than to assist in the identification of potential security vulnerabilities.
# Table of Contents
- [Summary](#summary)
- [Files Summary](#files-summary)
- [Files Details](#files-details)
- [Issue Summary](#issue-summary)
- [High Issues](#high-issues)
- [H-1: `abi.encodePacked()` Hash Collision](#h-1-abiencodepacked-hash-collision)
- [H-2: Arbitrary `from` Passed to `transferFrom`](#h-2-arbitrary-from-passed-to-transferfrom)
- [H-3: Unprotected initializer](#h-3-unprotected-initializer)
- [H-4: Unsafe Casting of integers](#h-4-unsafe-casting-of-integers)
- [H-5: EnumerableSet.remove Corrupts Order](#h-5-enumerablesetremove-corrupts-order)
- [H-6: Experimental ABI Encoder](#h-6-experimental-abi-encoder)
- [H-7: Incorrect Assembly Shift Parameter Order](#h-7-incorrect-assembly-shift-parameter-order)
- [H-8: Storage Array Edited with Memory](#h-8-storage-array-edited-with-memory)
- [H-9: Contract Has Multiple Constructors](#h-9-contract-has-multiple-constructors)
- [H-10: Contract Name Reused in Different Files](#h-10-contract-name-reused-in-different-files)
- [H-11: Nested Structs in Mappings pre-0.5.0](#h-11-nested-structs-in-mappings-pre-050)
- [H-12: `selfdestruct` is Deprecated](#h-12-selfdestruct-is-deprecated)
- [H-13: Direct assignment of array length](#h-13-direct-assignment-of-array-length)
- [H-14: Incorrect use of caret operator](#h-14-incorrect-use-of-caret-operator)
- [H-15: Yul block contains `return`](#h-15-yul-block-contains-return)
- [H-16: Shadowed State Variable](#h-16-shadowed-state-variable)
- [H-17: Unchecked `bool success` value for ETH send](#h-17-unchecked-bool-success-value-for-eth-send)
- [H-18: Misused boolean with logical operators](#h-18-misused-boolean-with-logical-operators)
- [H-19: ETH transferred without address checks](#h-19-eth-transferred-without-address-checks)
- [H-20: `delegatecall` to an Arbitrary Address](#h-20-delegatecall-to-an-arbitrary-address)
- [H-21: Tautological comparison](#h-21-tautological-comparison)
- [H-22: RTLO character detected in file: \u{202e}](#h-22-rtlo-character-detected-in-file-u202e)
- [H-23: Dangerous unary operator](#h-23-dangerous-unary-operator)
- [H-24: Tautology or Contradiction in comparison](#h-24-tautology-or-contradiction-in-comparison)
- [H-25: Dangerous strict equality checks on contract balances](#h-25-dangerous-strict-equality-checks-on-contract-balances)
- [H-26: Signed integer array in storage (solc `<0.5.10`)](#h-26-signed-integer-array-in-storage-solc-0510)
- [H-27: Weak Randomness](#h-27-weak-randomness)
- [H-28: Usage of variable before declaration](#h-28-usage-of-variable-before-declaration)
- [H-29: Deletion from a nested mapping](#h-29-deletion-from-a-nested-mapping)
- [H-30: Use of `tx.origin` for authentication](#h-30-use-of-txorigin-for-authentication)
- [H-31: Loop contains `msg.value`](#h-31-loop-contains-msgvalue)
- [H-32: Contract locks Ether without a withdraw function](#h-32-contract-locks-ether-without-a-withdraw-function)
- [H-33: Incorrect ERC721 interface](#h-33-incorrect-erc721-interface)
- [H-34: Incorrect ERC20 interface](#h-34-incorrect-erc20-interface)
- [H-35: Out of Order Retryable Transaction](#h-35-out-of-order-retryable-transaction)
- [H-36: Constant functions changes state](#h-36-constant-functions-changes-state)
- [H-37: Function Selector Collision](#h-37-function-selector-collision)
- [H-38: Unchecked Low level calls](#h-38-unchecked-low-level-calls)
- [H-39: Reentrancy: State change after external call](#h-39-reentrancy-state-change-after-external-call)
- [Low Issues](#low-issues)
- [L-1: `delegatecall` in loop](#l-1-delegatecall-in-loop)
- [L-2: Centralization Risk](#l-2-centralization-risk)
- [L-3: Solmate's SafeTransferLib](#l-3-solmates-safetransferlib)
- [L-4: `ecrecover` Signature Malleability](#l-4-ecrecover-signature-malleability)
- [L-5: Deprecated OpenZeppelin Function](#l-5-deprecated-openzeppelin-function)
- [L-6: Unsafe ERC20 Operation](#l-6-unsafe-erc20-operation)
- [L-7: Unspecific Solidity Pragma](#l-7-unspecific-solidity-pragma)
- [L-8: Address State Variable Set Without Checks](#l-8-address-state-variable-set-without-checks)
- [L-9: Public Function Not Used Internally](#l-9-public-function-not-used-internally)
- [L-10: Literal Instead of Constant](#l-10-literal-instead-of-constant)
- [L-11: Empty `require()` / `revert()` Statement](#l-11-empty-require--revert-statement)
- [L-12: `nonReentrant` is Not the First Modifier](#l-12-nonreentrant-is-not-the-first-modifier)
- [L-13: Using `block.timestamp` for swap deadline offers no protection](#l-13-using-blocktimestamp-for-swap-deadline-offers-no-protection)
- [L-14: Unsafe `ERC721::_mint()`](#l-14-unsafe-erc721mint)
- [L-15: PUSH0 Opcode](#l-15-push0-opcode)
- [L-16: Modifier Invoked Only Once](#l-16-modifier-invoked-only-once)
- [L-17: Empty Block](#l-17-empty-block)
- [L-18: Large Numeric Literal](#l-18-large-numeric-literal)
- [L-19: Internal Function Used Only Once](#l-19-internal-function-used-only-once)
- [L-20: Contract has TODO Comments](#l-20-contract-has-todo-comments)
- [L-21: Inconsistent uint256/uint (or) int256/int types](#l-21-inconsistent-uint256uint-or-int256int-types)
- [L-22: Unused Error](#l-22-unused-error)
- [L-23: Loop Contains `require`/`revert`](#l-23-loop-contains-requirerevert)
- [L-24: Incorrect Order of Division and Multiplication](#l-24-incorrect-order-of-division-and-multiplication)
- [L-25: Redundant Statement](#l-25-redundant-statement)
- [L-26: State Variable is Read as External](#l-26-state-variable-is-read-as-external)
- [L-27: Unused State Variable](#l-27-unused-state-variable)
- [L-28: Constant Function Contains Assembly](#l-28-constant-function-contains-assembly)
- [L-29: Boolean equality is not required](#l-29-boolean-equality-is-not-required)
- [L-30: Local Variable Shadows State Variable](#l-30-local-variable-shadows-state-variable)
- [L-31: Uninitialized Local Variable](#l-31-uninitialized-local-variable)
- [L-32: Return Bomb](#l-32-return-bomb)
- [L-33: Function Used to Initialize State Variable](#l-33-function-used-to-initialize-state-variable)
- [L-34: Dead Code](#l-34-dead-code)
- [L-35: Storage Array Length not Cached](#l-35-storage-array-length-not-cached)
- [L-36: State change in `assert()` statement](#l-36-state-change-in-assert-statement)
- [L-37: Costly operations inside loop](#l-37-costly-operations-inside-loop)
- [L-38: Builtin Symbol Shadowing](#l-38-builtin-symbol-shadowing)
- [L-39: Void constructor](#l-39-void-constructor)
- [L-40: Missing Inheritance](#l-40-missing-inheritance)
- [L-41: Unused Import](#l-41-unused-import)
- [L-42: Function Pointer in Constructor](#l-42-function-pointer-in-constructor)
- [L-43: State Variable Could Be Constant](#l-43-state-variable-could-be-constant)
- [L-44: State Change Without Event](#l-44-state-change-without-event)
- [L-45: State Variable Could Be Immutable](#l-45-state-variable-could-be-immutable)
- [L-46: Multiple Placeholders in Modifier](#l-46-multiple-placeholders-in-modifier)
- [L-47: Incorrect Use Of Modifier](#l-47-incorrect-use-of-modifier)
- [L-48: Unchecked Return](#l-48-unchecked-return)
# Summary
## Files Summary
| Key | Value |
| --- | --- |
| .sol Files | 126 |
| Total nSLOC | 4727 |
## Files Details
| Filepath | nSLOC |
| --- | --- |
| src/AbstractContract.sol | 12 |
| src/AderynIgnoreCustomDetectors.sol | 17 |
| src/AdminContract.sol | 11 |
| src/ArbitraryTransferFrom.sol | 37 |
| src/AssemblyExample.sol | 9 |
| src/AssertStateChange.sol | 11 |
| src/BooleanEquality.sol | 27 |
| src/BuiltinSymbolShadow.sol | 14 |
| src/CacheArrayLength.sol | 38 |
| src/CallGraphTests.sol | 49 |
| src/Casting.sol | 146 |
| src/CompilerBugStorageSignedIntegerArray.sol | 13 |
| src/ConstFuncChangeState.sol | 15 |
| src/ConstantFuncsAssembly.sol | 26 |
| src/ConstantsLiterals.sol | 28 |
| src/ContractLocksEther.sol | 142 |
| src/ContractWithTodo.sol | 7 |
| src/CostlyOperationsInsideLoops.sol | 17 |
| src/Counter.sol | 20 |
| src/CrazyPragma.sol | 4 |
| src/DangerousStrictEquality1.sol | 6 |
| src/DangerousStrictEquality2.sol | 9 |
| src/DangerousUnaryOperator.sol | 13 |
| src/DeadCode.sol | 23 |
| src/DelegateCallWithoutAddressCheck.sol | 31 |
| src/DeletionNestedMappingStructureContract.sol | 11 |
| src/DeprecatedOZFunctions.sol | 32 |
| src/DivisionBeforeMultiplication.sol | 22 |
| src/DynamicArrayLengthAssignment.sol | 16 |
| src/EmitAfterExternalCall.sol | 67 |
| src/EmptyBlocks.sol | 48 |
| src/EnumerableSetIteration.sol | 55 |
| src/ExperimentalEncoder.sol | 4 |
| src/ExternalCalls.sol | 60 |
| src/FunctionInitializingState.sol | 49 |
| src/FunctionPointers.sol | 10 |
| src/FunctionSignatureCollision.sol | 9 |
| src/HugeConstants.sol | 36 |
| src/IgnoreEverything.sol | 5 |
| src/InconsistentUints.sol | 17 |
| src/IncorrectCaretOperator.sol | 16 |
| src/IncorrectERC20.sol | 98 |
| src/IncorrectERC721.sol | 238 |
| src/IncorrectModifier.sol | 65 |
| src/IncorrectShift.sol | 17 |
| src/InternalFunctions.sol | 22 |
| src/KeccakContract.sol | 21 |
| src/LocalVariableShadow.sol | 23 |
| src/MissingInheritance.sol | 39 |
| src/MisusedBoolean.sol | 67 |
| src/MsgValueInLoop.sol | 55 |
| src/MultipleConstructorSchemes.sol | 10 |
| src/MultiplePlaceholders.sol | 40 |
| src/OnceModifierExample.sol | 8 |
| src/OnlyLibrary.sol | 2 |
| src/OutOfOrderRetryable.sol | 165 |
| src/PragmaRange.sol | 6 |
| src/PreDeclaredVarUsage.sol | 9 |
| src/PublicFunction.sol | 15 |
| src/PublicVariableReadInExternalContext.sol | 32 |
| src/RTLO.sol | 7 |
| src/RedundantStatements.sol | 14 |
| src/ReturnBomb.sol | 44 |
| src/RevertsAndRequriesInLoops.sol | 27 |
| src/SendEtherNoChecks.sol | 58 |
| src/SendEtherNoChecksLibImport.sol | 17 |
| src/StateChangeAfterExternalCall.sol | 54 |
| src/StateShadowing.sol | 17 |
| src/StateVariableCouldBeDeclaredConstant.sol | 27 |
| src/StateVariableCouldBeDeclaredImmutable.sol | 22 |
| src/StateVariables.sol | 58 |
| src/StateVariablesChangesWithoutEvents.sol | 80 |
| src/StateVariablesManipulation.sol | 250 |
| src/StorageConditionals.sol | 59 |
| src/StorageParameters.sol | 16 |
| src/T11sTranferer.sol | 8 |
| src/TautologicalCompare.sol | 17 |
| src/TautologyOrContradiction.sol | 11 |
| src/TestERC20.sol | 62 |
| src/TransientKeyword.sol | 10 |
| src/Trump.sol | 281 |
| src/TxOriginUsedForAuth.sol | 43 |
| src/U2.sol | 3 |
| src/U3.sol | 2 |
| src/U4.sol | 3 |
| src/U5.sol | 6 |
| src/UncheckedCalls.sol | 24 |
| src/UncheckedReturn.sol | 33 |
| src/UncheckedSend.sol | 18 |
| src/UninitializedLocalVariables.sol | 62 |
| src/UninitializedStateVariable.sol | 29 |
| src/UnprotectedInitialize.sol | 44 |
| src/UnsafeERC721Mint.sol | 18 |
| src/UnusedError.sol | 23 |
| src/UnusedImport.sol | 10 |
| src/UnusedStateVariables.sol | 12 |
| src/UsingSelfdestruct.sol | 6 |
| src/VoidConstructor.sol | 21 |
| src/WeakRandomness.sol | 59 |
| src/WrongOrderOfLayout.sol | 13 |
| src/YulReturn.sol | 8 |
| src/ZeroAddressCheck.sol | 41 |
| src/auditor_mode/ExternalCalls.sol | 65 |
| src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol | 45 |
| src/cloc/AnotherHeavilyCommentedContract.sol | 32 |
| src/cloc/EmptyContractFile.sol | 0 |
| src/cloc/HeavilyCommentedContract.sol | 21 |
| src/control_flow/SimpleProgram.sol | 188 |
| src/eth2/DepositContract.sol | 96 |
| src/inheritance/ExtendedInheritance.sol | 18 |
| src/inheritance/IContractInheritance.sol | 4 |
| src/inheritance/InheritanceBase.sol | 12 |
| src/nested/1/Nested.sol | 10 |
| src/nested/2/Nested.sol | 7 |
| src/nested_mappings/LaterVersion.sol | 10 |
| src/nested_mappings/NestedMappings.sol | 10 |
| src/parent_chain/ParentChainContract.sol | 29 |
| src/reused_contract_name/ContractA.sol | 7 |
| src/reused_contract_name/ContractB.sol | 7 |
| src/router/ExternalCalls.sol | 30 |
| src/router/FallbackAndReceiveOverrides.sol | 17 |
| src/router/InternalCalls.sol | 135 |
| src/router/ModifierCalls.sol | 33 |
| src/router/VarOverridesFunction.sol | 20 |
| src/uniswap/UniswapV2Swapper.sol | 50 |
| src/uniswap/UniswapV3Swapper.sol | 150 |
| **Total** | **4727** |
## Issue Summary
| Category | No. of Issues |
| --- | --- |
| High | 39 |
| Low | 48 |
# High Issues
## H-1: `abi.encodePacked()` Hash Collision
abi.encodePacked() should not be used with dynamic types when passing the result to a hash function such as `keccak256()`. Use `abi.encode()` instead which will pad items to 32 bytes, preventing hash collisions: https://docs.soliditylang.org/en/v0.8.13/abi-spec.html#non-standard-packed-mode. (e.g. `abi.encodePacked(0x123,0x456)` => `0x123456` => `abi.encodePacked(0x1,0x23456)`, but `abi.encode(0x123,0x456)` => `0x0...1230...456`). Unless there is a compelling reason, `abi.encode` should be preferred. If there is only one argument to `abi.encodePacked()` it can often be cast to `bytes()` or `bytes32()` instead: https://ethereum.stackexchange.com/questions/30912/how-to-compare-strings-in-solidity#answer-82739. If all arguments are strings and or bytes, `bytes.concat()` should be used instead.
<details><summary>3 Found Instances</summary>
- Found in src/KeccakContract.sol [Line: 18](../tests/contract-playground/src/KeccakContract.sol#L18)
```solidity
return keccak256(abi.encodePacked(a, b));
```
- Found in src/KeccakContract.sol [Line: 22](../tests/contract-playground/src/KeccakContract.sol#L22)
```solidity
return keccak256(abi.encodePacked(a, b));
```
- Found in src/KeccakContract.sol [Line: 26](../tests/contract-playground/src/KeccakContract.sol#L26)
```solidity
return keccak256(abi.encodePacked(a, b));
```
</details>
## H-2: Arbitrary `from` Passed to `transferFrom`
Passing an arbitrary `from` address to `transferFrom` (or `safeTransferFrom`) can lead to loss of funds, because anyone can transfer tokens from the `from` address if an approval is made.
<details><summary>4 Found Instances</summary>
- Found in src/ArbitraryTransferFrom.sol [Line: 24](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L24)
```solidity
s_token.safeTransferFrom(from, to, amount);
```
- Found in src/ArbitraryTransferFrom.sol [Line: 29](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L29)
```solidity
SafeERC20.safeTransferFrom(s_token, from, to, amount);
```
- Found in src/DeprecatedOZFunctions.sol [Line: 17](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L17)
```solidity
token.safeTransferFrom(from, to, value);
```
- Found in src/DeprecatedOZFunctions.sol [Line: 47](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L47)
```solidity
token.transferFrom(from, to, value);
```
</details>
## H-3: Unprotected initializer
Consider protecting the initializer functions with modifiers.
<details><summary>2 Found Instances</summary>
- Found in src/UnprotectedInitialize.sol [Line: 37](../tests/contract-playground/src/UnprotectedInitialize.sol#L37)
```solidity
function initializeWithoutModifierOrRevert() external {
```
- Found in src/UnprotectedInitialize.sol [Line: 70](../tests/contract-playground/src/UnprotectedInitialize.sol#L70)
```solidity
function initializeWithoutProtection() external {
```
</details>
## H-4: Unsafe Casting of integers
Downcasting int/uints in Solidity can be unsafe due to the potential for data loss and unintended behavior.When downcasting a larger integer type to a smaller one (e.g., uint256 to uint128), the value may exceed the range of the target type,leading to truncation and loss of significant digits. Use OpenZeppelin's SafeCast library to safely downcast integers.
<details><summary>94 Found Instances</summary>
- Found in src/Casting.sol [Line: 42](../tests/contract-playground/src/Casting.sol#L42)
```solidity
uint248 b = uint248(a);
```
- Found in src/Casting.sol [Line: 43](../tests/contract-playground/src/Casting.sol#L43)
```solidity
uint240 c = uint240(b);
```
- Found in src/Casting.sol [Line: 44](../tests/contract-playground/src/Casting.sol#L44)
```solidity
uint232 d = uint232(c);
```
- Found in src/Casting.sol [Line: 45](../tests/contract-playground/src/Casting.sol#L45)
```solidity
uint224 e = uint224(d);
```
- Found in src/Casting.sol [Line: 46](../tests/contract-playground/src/Casting.sol#L46)
```solidity
uint216 f = uint216(e);
```
- Found in src/Casting.sol [Line: 47](../tests/contract-playground/src/Casting.sol#L47)
```solidity
uint208 g = uint208(f);
```
- Found in src/Casting.sol [Line: 48](../tests/contract-playground/src/Casting.sol#L48)
```solidity
uint200 h = uint200(g);
```
- Found in src/Casting.sol [Line: 49](../tests/contract-playground/src/Casting.sol#L49)
```solidity
uint192 i = uint192(h);
```
- Found in src/Casting.sol [Line: 50](../tests/contract-playground/src/Casting.sol#L50)
```solidity
uint184 j = uint184(i);
```
- Found in src/Casting.sol [Line: 51](../tests/contract-playground/src/Casting.sol#L51)
```solidity
uint176 k = uint176(j);
```
- Found in src/Casting.sol [Line: 52](../tests/contract-playground/src/Casting.sol#L52)
```solidity
uint168 l = uint168(k);
```
- Found in src/Casting.sol [Line: 53](../tests/contract-playground/src/Casting.sol#L53)
```solidity
uint160 m = uint160(l);
```
- Found in src/Casting.sol [Line: 54](../tests/contract-playground/src/Casting.sol#L54)
```solidity
uint152 n = uint152(m);
```
- Found in src/Casting.sol [Line: 55](../tests/contract-playground/src/Casting.sol#L55)
```solidity
uint144 o = uint144(n);
```
- Found in src/Casting.sol [Line: 56](../tests/contract-playground/src/Casting.sol#L56)
```solidity
uint136 p = uint136(o);
```
- Found in src/Casting.sol [Line: 57](../tests/contract-playground/src/Casting.sol#L57)
```solidity
uint128 q = uint128(p);
```
- Found in src/Casting.sol [Line: 58](../tests/contract-playground/src/Casting.sol#L58)
```solidity
uint120 r = uint120(q);
```
- Found in src/Casting.sol [Line: 59](../tests/contract-playground/src/Casting.sol#L59)
```solidity
uint112 s = uint112(r);
```
- Found in src/Casting.sol [Line: 60](../tests/contract-playground/src/Casting.sol#L60)
```solidity
uint104 t = uint104(s);
```
- Found in src/Casting.sol [Line: 61](../tests/contract-playground/src/Casting.sol#L61)
```solidity
uint96 u = uint96(t);
```
- Found in src/Casting.sol [Line: 62](../tests/contract-playground/src/Casting.sol#L62)
```solidity
uint88 v = uint88(u);
```
- Found in src/Casting.sol [Line: 63](../tests/contract-playground/src/Casting.sol#L63)
```solidity
uint80 w = uint80(v);
```
- Found in src/Casting.sol [Line: 64](../tests/contract-playground/src/Casting.sol#L64)
```solidity
uint72 x = uint72(w);
```
- Found in src/Casting.sol [Line: 65](../tests/contract-playground/src/Casting.sol#L65)
```solidity
uint64 y = uint64(x);
```
- Found in src/Casting.sol [Line: 66](../tests/contract-playground/src/Casting.sol#L66)
```solidity
uint56 z = uint56(y);
```
- Found in src/Casting.sol [Line: 67](../tests/contract-playground/src/Casting.sol#L67)
```solidity
uint48 aa = uint48(z);
```
- Found in src/Casting.sol [Line: 68](../tests/contract-playground/src/Casting.sol#L68)
```solidity
uint40 ab = uint40(aa);
```
- Found in src/Casting.sol [Line: 69](../tests/contract-playground/src/Casting.sol#L69)
```solidity
uint32 ac = uint32(ab);
```
- Found in src/Casting.sol [Line: 70](../tests/contract-playground/src/Casting.sol#L70)
```solidity
uint24 ad = uint24(ac);
```
- Found in src/Casting.sol [Line: 71](../tests/contract-playground/src/Casting.sol#L71)
```solidity
uint16 ae = uint16(ad);
```
- Found in src/Casting.sol [Line: 72](../tests/contract-playground/src/Casting.sol#L72)
```solidity
uint8Value = uint8(ae);
```
- Found in src/Casting.sol [Line: 80](../tests/contract-playground/src/Casting.sol#L80)
```solidity
int248 b = int248(a);
```
- Found in src/Casting.sol [Line: 81](../tests/contract-playground/src/Casting.sol#L81)
```solidity
int240 c = int240(b);
```
- Found in src/Casting.sol [Line: 82](../tests/contract-playground/src/Casting.sol#L82)
```solidity
int232 d = int232(c);
```
- Found in src/Casting.sol [Line: 83](../tests/contract-playground/src/Casting.sol#L83)
```solidity
int224 e = int224(d);
```
- Found in src/Casting.sol [Line: 84](../tests/contract-playground/src/Casting.sol#L84)
```solidity
int216 f = int216(e);
```
- Found in src/Casting.sol [Line: 85](../tests/contract-playground/src/Casting.sol#L85)
```solidity
int208 g = int208(f);
```
- Found in src/Casting.sol [Line: 86](../tests/contract-playground/src/Casting.sol#L86)
```solidity
int200 h = int200(g);
```
- Found in src/Casting.sol [Line: 87](../tests/contract-playground/src/Casting.sol#L87)
```solidity
int192 i = int192(h);
```
- Found in src/Casting.sol [Line: 88](../tests/contract-playground/src/Casting.sol#L88)
```solidity
int184 j = int184(i);
```
- Found in src/Casting.sol [Line: 89](../tests/contract-playground/src/Casting.sol#L89)
```solidity
int176 k = int176(j);
```
- Found in src/Casting.sol [Line: 90](../tests/contract-playground/src/Casting.sol#L90)
```solidity
int168 l = int168(k);
```
- Found in src/Casting.sol [Line: 91](../tests/contract-playground/src/Casting.sol#L91)
```solidity
int160 m = int160(l);
```
- Found in src/Casting.sol [Line: 92](../tests/contract-playground/src/Casting.sol#L92)
```solidity
int152 n = int152(m);
```
- Found in src/Casting.sol [Line: 93](../tests/contract-playground/src/Casting.sol#L93)
```solidity
int144 o = int144(n);
```
- Found in src/Casting.sol [Line: 94](../tests/contract-playground/src/Casting.sol#L94)
```solidity
int136 p = int136(o);
```
- Found in src/Casting.sol [Line: 95](../tests/contract-playground/src/Casting.sol#L95)
```solidity
int128 q = int128(p);
```
- Found in src/Casting.sol [Line: 96](../tests/contract-playground/src/Casting.sol#L96)
```solidity
int120 r = int120(q);
```
- Found in src/Casting.sol [Line: 97](../tests/contract-playground/src/Casting.sol#L97)
```solidity
int112 s = int112(r);
```
- Found in src/Casting.sol [Line: 98](../tests/contract-playground/src/Casting.sol#L98)
```solidity
int104 t = int104(s);
```
- Found in src/Casting.sol [Line: 99](../tests/contract-playground/src/Casting.sol#L99)
```solidity
int96 u = int96(t);
```
- Found in src/Casting.sol [Line: 100](../tests/contract-playground/src/Casting.sol#L100)
```solidity
int88 v = int88(u);
```
- Found in src/Casting.sol [Line: 101](../tests/contract-playground/src/Casting.sol#L101)
```solidity
int80 w = int80(v);
```
- Found in src/Casting.sol [Line: 102](../tests/contract-playground/src/Casting.sol#L102)
```solidity
int72 x = int72(w);
```
- Found in src/Casting.sol [Line: 103](../tests/contract-playground/src/Casting.sol#L103)
```solidity
int64 y = int64(x);
```
- Found in src/Casting.sol [Line: 104](../tests/contract-playground/src/Casting.sol#L104)
```solidity
int56 z = int56(y);
```
- Found in src/Casting.sol [Line: 105](../tests/contract-playground/src/Casting.sol#L105)
```solidity
int48 aa = int48(z);
```
- Found in src/Casting.sol [Line: 106](../tests/contract-playground/src/Casting.sol#L106)
```solidity
int40 ab = int40(aa);
```
- Found in src/Casting.sol [Line: 107](../tests/contract-playground/src/Casting.sol#L107)
```solidity
int32 ac = int32(ab);
```
- Found in src/Casting.sol [Line: 108](../tests/contract-playground/src/Casting.sol#L108)
```solidity
int24 ad = int24(ac);
```
- Found in src/Casting.sol [Line: 109](../tests/contract-playground/src/Casting.sol#L109)
```solidity
int16 ae = int16(ad);
```
- Found in src/Casting.sol [Line: 110](../tests/contract-playground/src/Casting.sol#L110)
```solidity
int8Value = int8(ae);
```
- Found in src/Casting.sol [Line: 118](../tests/contract-playground/src/Casting.sol#L118)
```solidity
bytes31 b = bytes31(a);
```
- Found in src/Casting.sol [Line: 119](../tests/contract-playground/src/Casting.sol#L119)
```solidity
bytes30 c = bytes30(b);
```
- Found in src/Casting.sol [Line: 120](../tests/contract-playground/src/Casting.sol#L120)
```solidity
bytes29 d = bytes29(c);
```
- Found in src/Casting.sol [Line: 121](../tests/contract-playground/src/Casting.sol#L121)
```solidity
bytes28 e = bytes28(d);
```
- Found in src/Casting.sol [Line: 122](../tests/contract-playground/src/Casting.sol#L122)
```solidity
bytes27 f = bytes27(e);
```
- Found in src/Casting.sol [Line: 123](../tests/contract-playground/src/Casting.sol#L123)
```solidity
bytes26 g = bytes26(f);
```
- Found in src/Casting.sol [Line: 124](../tests/contract-playground/src/Casting.sol#L124)
```solidity
bytes25 h = bytes25(g);
```
- Found in src/Casting.sol [Line: 125](../tests/contract-playground/src/Casting.sol#L125)
```solidity
bytes24 i = bytes24(h);
```
- Found in src/Casting.sol [Line: 126](../tests/contract-playground/src/Casting.sol#L126)
```solidity
bytes23 j = bytes23(i);
```
- Found in src/Casting.sol [Line: 127](../tests/contract-playground/src/Casting.sol#L127)
```solidity
bytes22 k = bytes22(j);
```
- Found in src/Casting.sol [Line: 128](../tests/contract-playground/src/Casting.sol#L128)
```solidity
bytes21 l = bytes21(k);
```
- Found in src/Casting.sol [Line: 129](../tests/contract-playground/src/Casting.sol#L129)
```solidity
bytes20 m = bytes20(l);
```
- Found in src/Casting.sol [Line: 130](../tests/contract-playground/src/Casting.sol#L130)
```solidity
bytes19 n = bytes19(m);
```
- Found in src/Casting.sol [Line: 131](../tests/contract-playground/src/Casting.sol#L131)
```solidity
bytes18 o = bytes18(n);
```
- Found in src/Casting.sol [Line: 132](../tests/contract-playground/src/Casting.sol#L132)
```solidity
bytes17 p = bytes17(o);
```
- Found in src/Casting.sol [Line: 133](../tests/contract-playground/src/Casting.sol#L133)
```solidity
bytes16 q = bytes16(p);
```
- Found in src/Casting.sol [Line: 134](../tests/contract-playground/src/Casting.sol#L134)
```solidity
bytes15 r = bytes15(q);
```
- Found in src/Casting.sol [Line: 135](../tests/contract-playground/src/Casting.sol#L135)
```solidity
bytes14 s = bytes14(r);
```
- Found in src/Casting.sol [Line: 136](../tests/contract-playground/src/Casting.sol#L136)
```solidity
bytes13 t = bytes13(s);
```
- Found in src/Casting.sol [Line: 137](../tests/contract-playground/src/Casting.sol#L137)
```solidity
bytes12 u = bytes12(t);
```
- Found in src/Casting.sol [Line: 138](../tests/contract-playground/src/Casting.sol#L138)
```solidity
bytes11 v = bytes11(u);
```
- Found in src/Casting.sol [Line: 139](../tests/contract-playground/src/Casting.sol#L139)
```solidity
bytes10 w = bytes10(v);
```
- Found in src/Casting.sol [Line: 140](../tests/contract-playground/src/Casting.sol#L140)
```solidity
bytes9 x = bytes9(w);
```
- Found in src/Casting.sol [Line: 141](../tests/contract-playground/src/Casting.sol#L141)
```solidity
bytes8 y = bytes8(x);
```
- Found in src/Casting.sol [Line: 142](../tests/contract-playground/src/Casting.sol#L142)
```solidity
bytes7 z = bytes7(y);
```
- Found in src/Casting.sol [Line: 143](../tests/contract-playground/src/Casting.sol#L143)
```solidity
bytes6 aa = bytes6(z);
```
- Found in src/Casting.sol [Line: 144](../tests/contract-playground/src/Casting.sol#L144)
```solidity
bytes5 ab = bytes5(aa);
```
- Found in src/Casting.sol [Line: 145](../tests/contract-playground/src/Casting.sol#L145)
```solidity
bytes4 ac = bytes4(ab);
```
- Found in src/Casting.sol [Line: 146](../tests/contract-playground/src/Casting.sol#L146)
```solidity
bytes3 ad = bytes3(ac);
```
- Found in src/Casting.sol [Line: 147](../tests/contract-playground/src/Casting.sol#L147)
```solidity
bytes2 ae = bytes2(ad);
```
- Found in src/Casting.sol [Line: 148](../tests/contract-playground/src/Casting.sol#L148)
```solidity
bytes1Value = bytes1(ae);
```
- Found in src/Casting.sol [Line: 155](../tests/contract-playground/src/Casting.sol#L155)
```solidity
return int128(result);
```
</details>
## H-5: EnumerableSet.remove Corrupts Order
If the order of an EnumerableSet is required, removing items in a loop using `at` and `remove` corrupts this order.
Consider using a different data structure or removing items by collecting them during the loop, then removing after the loop.
<details><summary>5 Found Instances</summary>
- Found in src/EnumerableSetIteration.sol [Line: 31](../tests/contract-playground/src/EnumerableSetIteration.sol#L31)
```solidity
bytes32Set.remove(thisBytes32);
```
- Found in src/EnumerableSetIteration.sol [Line: 40](../tests/contract-playground/src/EnumerableSetIteration.sol#L40)
```solidity
bytes32Set.remove(thisBytes32);
```
- Found in src/EnumerableSetIteration.sol [Line: 50](../tests/contract-playground/src/EnumerableSetIteration.sol#L50)
```solidity
bytes32Set.remove(thisBytes32);
```
- Found in src/EnumerableSetIteration.sol [Line: 59](../tests/contract-playground/src/EnumerableSetIteration.sol#L59)
```solidity
addressSet.remove(thisAddress);
```
- Found in src/EnumerableSetIteration.sol [Line: 67](../tests/contract-playground/src/EnumerableSetIteration.sol#L67)
```solidity
uintSet.remove(thisUint);
```
</details>
## H-6: Experimental ABI Encoder
Experimental encoders should not be used in production. There are multiple known compiler bugs that are caused by the experimental encoder. Upgrade your solidity version to remove the need for experimental features.
<details><summary>1 Found Instances</summary>
- Found in src/ExperimentalEncoder.sol [Line: 2](../tests/contract-playground/src/ExperimentalEncoder.sol#L2)
```solidity
pragma experimental ABIEncoderV2;
```
</details>
## H-7: Incorrect Assembly Shift Parameter Order
Example: `shl(shifted, 4)` will shift the right constant `4` by `a` bits. The correct order is `shl(4, shifted)`.
<details><summary>2 Found Instances</summary>
- Found in src/IncorrectShift.sol [Line: 7](../tests/contract-playground/src/IncorrectShift.sol#L7)
```solidity
shifted := shr(shifted, 4) // BAD
```
- Found in src/IncorrectShift.sol [Line: 8](../tests/contract-playground/src/IncorrectShift.sol#L8)
```solidity
shifted := shl(shifted, 4) // BAD
```
</details>
## H-8: Storage Array Edited with Memory
Storage reference is passed to a function with a memory parameter. This will not update the storage variable as expected. Consider using storage parameters instead.
<details><summary>1 Found Instances</summary>
- Found in src/StorageParameters.sol [Line: 11](../tests/contract-playground/src/StorageParameters.sol#L11)
```solidity
editMemory(storageArray); // BAD LINE
```
</details>
## H-9: Contract Has Multiple Constructors
In some versions of Solidity, contracts compile with multiple constructors. The first constructor takes precedence. This can lead to unexpected behavior.
<details><summary>1 Found Instances</summary>
- Found in src/MultipleConstructorSchemes.sol [Line: 3](../tests/contract-playground/src/MultipleConstructorSchemes.sol#L3)
```solidity
contract MultipleConstructorSchemes {
```
</details>
## H-10: Contract Name Reused in Different Files
When compiling contracts with certain development frameworks (for example: Truffle), having contracts with the same name across different files can lead to one being overwritten.
<details><summary>26 Found Instances</summary>
- Found in src/EmitAfterExternalCall.sol [Line: 4](../tests/contract-playground/src/EmitAfterExternalCall.sol#L4)
```solidity
contract MaliciousActor {
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 4](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L4)
```solidity
contract MaliciousActor {
```
- Found in src/Trump.sol [Line: 18](../tests/contract-playground/src/Trump.sol#L18)
```solidity
abstract contract Context {
```
- Found in src/Trump.sol [Line: 24](../tests/contract-playground/src/Trump.sol#L24)
```solidity
interface IERC20 {
```
- Found in src/Trump.sol [Line: 73](../tests/contract-playground/src/Trump.sol#L73)
```solidity
contract Ownable is Context {
```
- Found in src/Trump.sol [Line: 103](../tests/contract-playground/src/Trump.sol#L103)
```solidity
interface IUniswapV2Router02 {
```
- Found in src/ZeroAddressCheck.sol [Line: 4](../tests/contract-playground/src/ZeroAddressCheck.sol#L4)
```solidity
interface IERC20 {
```
- Found in src/eth2/DepositContract.sol [Line: 44](../tests/contract-playground/src/eth2/DepositContract.sol#L44)
```solidity
interface ERC165 {
```
- Found in src/nested/1/Nested.sol [Line: 7](../tests/contract-playground/src/nested/1/Nested.sol#L7)
```solidity
contract Nested {
```
- Found in src/nested/2/Nested.sol [Line: 7](../tests/contract-playground/src/nested/2/Nested.sol#L7)
```solidity
contract Nested {
```
- Found in src/reused_contract_name/ContractA.sol [Line: 4](../tests/contract-playground/src/reused_contract_name/ContractA.sol#L4)
```solidity
contract ReusedName {
```
- Found in src/reused_contract_name/ContractB.sol [Line: 4](../tests/contract-playground/src/reused_contract_name/ContractB.sol#L4)
```solidity
contract ReusedName {
```
- Found in src/router/ExternalCalls.sol [Line: 4](../tests/contract-playground/src/router/ExternalCalls.sol#L4)
```solidity
interface A {
```
- Found in src/router/ExternalCalls.sol [Line: 8](../tests/contract-playground/src/router/ExternalCalls.sol#L8)
```solidity
contract B is A {
```
- Found in src/router/ExternalCalls.sol [Line: 12](../tests/contract-playground/src/router/ExternalCalls.sol#L12)
```solidity
contract E is A {
```
- Found in src/router/ExternalCalls.sol [Line: 31](../tests/contract-playground/src/router/ExternalCalls.sol#L31)
```solidity
abstract contract C {
```
- Found in src/router/ExternalCalls.sol [Line: 35](../tests/contract-playground/src/router/ExternalCalls.sol#L35)
```solidity
contract D is C {
```
- Found in src/router/ModifierCalls.sol [Line: 4](../tests/contract-playground/src/router/ModifierCalls.sol#L4)
```solidity
abstract contract A {
```
- Found in src/router/ModifierCalls.sol [Line: 12](../tests/contract-playground/src/router/ModifierCalls.sol#L12)
```solidity
contract B is A {
```
- Found in src/router/ModifierCalls.sol [Line: 28](../tests/contract-playground/src/router/ModifierCalls.sol#L28)
```solidity
contract C is B {
```
- Found in src/router/ModifierCalls.sol [Line: 41](../tests/contract-playground/src/router/ModifierCalls.sol#L41)
```solidity
library D {
```
- Found in src/router/VarOverridesFunction.sol [Line: 4](../tests/contract-playground/src/router/VarOverridesFunction.sol#L4)
```solidity
contract A {
```
- Found in src/router/VarOverridesFunction.sol [Line: 9](../tests/contract-playground/src/router/VarOverridesFunction.sol#L9)
```solidity
contract B is A {
```
- Found in src/router/VarOverridesFunction.sol [Line: 13](../tests/contract-playground/src/router/VarOverridesFunction.sol#L13)
```solidity
contract C is A {
```
- Found in src/router/VarOverridesFunction.sol [Line: 17](../tests/contract-playground/src/router/VarOverridesFunction.sol#L17)
```solidity
contract D is A {
```
- Found in src/router/VarOverridesFunction.sol [Line: 21](../tests/contract-playground/src/router/VarOverridesFunction.sol#L21)
```solidity
contract E is A {
```
</details>
## H-11: Nested Structs in Mappings pre-0.5.0
Prior to updates in Solidity 0.5.0, public mappings with nested structs compiled, but produced incorrect values. Refrain from using these, or update to a more recent version of Solidity.
<details><summary>1 Found Instances</summary>
- Found in src/nested_mappings/NestedMappings.sol [Line: 17](../tests/contract-playground/src/nested_mappings/NestedMappings.sol#L17)
```solidity
mapping(uint256 => structMain) public s_mapOfNestedStructs;
```
</details>
## H-12: `selfdestruct` is Deprecated
Remove the `selfdestruct` instruction from the code.
<details><summary>1 Found Instances</summary>
- Found in src/UsingSelfdestruct.sol [Line: 7](../tests/contract-playground/src/UsingSelfdestruct.sol#L7)
```solidity
selfdestruct(payable(sink));
```
</details>
## H-13: Direct assignment of array length
If the length of a dynamic array (storage variable) is directly assigned to, it may allow access to other storage slots by tweaking it's value. This practice has been deprecated in newer Solidity versions
<details><summary>5 Found Instances</summary>
- Found in src/DynamicArrayLengthAssignment.sol [Line: 13](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L13)
```solidity
myArray.length = 200;
```
- Found in src/DynamicArrayLengthAssignment.sol [Line: 14](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L14)
```solidity
myArray2[7].length = 200;
```
- Found in src/DynamicArrayLengthAssignment.sol [Line: 15](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L15)
```solidity
myArray3[bytes("blah")][5].length = 100;
```
- Found in src/DynamicArrayLengthAssignment.sol [Line: 16](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L16)
```solidity
myArray4.length = 900;
```
- Found in src/DynamicArrayLengthAssignment.sol [Line: 17](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L17)
```solidity
myArray.length += 200;
```
</details>
## H-14: Incorrect use of caret operator
The caret operator is usually mistakenly thought of as an exponentiation operator but actually, it's a bitwise xor operator.
<details><summary>5 Found Instances</summary>
- Found in src/IncorrectCaretOperator.sol [Line: 16](../tests/contract-playground/src/IncorrectCaretOperator.sol#L16)
```solidity
uint256 x = 3^40 - 1;
```
- Found in src/IncorrectCaretOperator.sol [Line: 17](../tests/contract-playground/src/IncorrectCaretOperator.sol#L17)
```solidity
uint256 z = s_second^89 + 13;
```
- Found in src/IncorrectCaretOperator.sol [Line: 18](../tests/contract-playground/src/IncorrectCaretOperator.sol#L18)
```solidity
uint256 w = s_second^s_first + 13;
```
- Found in src/IncorrectCaretOperator.sol [Line: 19](../tests/contract-playground/src/IncorrectCaretOperator.sol#L19)
```solidity
uint256 y = s_first ^ 100; // s_first is not a constant but, 100 is.
```
- Found in src/IncorrectCaretOperator.sol [Line: 20](../tests/contract-playground/src/IncorrectCaretOperator.sol#L20)
```solidity
uint256 p = s_third ^ 20;
```
</details>
## H-15: Yul block contains `return`
This causes the transaction execution to halt, and nothing after that call will execute including code following the assembly block.
<details><summary>1 Found Instances</summary>
- Found in src/YulReturn.sol [Line: 8](../tests/contract-playground/src/YulReturn.sol#L8)
```solidity
return(0, 0)
```
</details>
## H-16: Shadowed State Variable
This vulnerability arises when a derived contract unintentionally shadows a state variable from a parent contract by declaring a variable with the same name. This can be misleading. To prevent this, ensure variable names are unique across the inheritance hierarchy or use proper visibility and scope controls.
<details><summary>1 Found Instances</summary>
- Found in src/StateShadowing.sol [Line: 15](../tests/contract-playground/src/StateShadowing.sol#L15)
```solidity
address owner;
```
</details>
## H-17: Unchecked `bool success` value for ETH send
The call `address(payable?).send(address)` may fail because of reasons like out-of-gas, invalid recipient address or revert from the recipient, but not revert the transaction. Therefore, the boolean returned by this function call must be checked to be `true` in order to verify that the transaction was successful.
<details><summary>1 Found Instances</summary>
- Found in src/UncheckedSend.sol [Line: 24](../tests/contract-playground/src/UncheckedSend.sol#L24)
```solidity
recipient.send(amount); // parent of Send FunctionCall is Block (return value is unused)
```
</details>
## H-18: Misused boolean with logical operators
The patterns `if (… || true)` and `if (.. && false)` will always evaluate to true and false respectively.
<details><summary>10 Found Instances</summary>
- Found in src/MisusedBoolean.sol [Line: 12](../tests/contract-playground/src/MisusedBoolean.sol#L12)
```solidity
if (isEven(num) || true) {
```
- Found in src/MisusedBoolean.sol [Line: 19](../tests/contract-playground/src/MisusedBoolean.sol#L19)
```solidity
if (isEven(num) && false) {
```
- Found in src/MisusedBoolean.sol [Line: 26](../tests/contract-playground/src/MisusedBoolean.sol#L26)
```solidity
if (false && isEven(num)) {
```
- Found in src/MisusedBoolean.sol [Line: 33](../tests/contract-playground/src/MisusedBoolean.sol#L33)
```solidity
if (true || isEven(num)) {
```
- Found in src/MisusedBoolean.sol [Line: 40](../tests/contract-playground/src/MisusedBoolean.sol#L40)
```solidity
if (true) {
```
- Found in src/MisusedBoolean.sol [Line: 47](../tests/contract-playground/src/MisusedBoolean.sol#L47)
```solidity
if (false) {
```
- Found in src/MisusedBoolean.sol [Line: 54](../tests/contract-playground/src/MisusedBoolean.sol#L54)
```solidity
if (!false) {
```
- Found in src/MisusedBoolean.sol [Line: 61](../tests/contract-playground/src/MisusedBoolean.sol#L61)
```solidity
if (isEven(num) && !false) {
```
- Found in src/MisusedBoolean.sol [Line: 68](../tests/contract-playground/src/MisusedBoolean.sol#L68)
```solidity
if (isEven(num) && NO) {
```
- Found in src/MisusedBoolean.sol [Line: 75](../tests/contract-playground/src/MisusedBoolean.sol#L75)
```solidity
if (isEven(num) && !NO) {
```
</details>
## H-19: ETH transferred without address checks
Consider introducing checks for `msg.sender` to ensure the recipient of the money is as intended.
<details><summary>27 Found Instances</summary>
- Found in src/ArbitraryTransferFrom.sol [Line: 23](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L23)
```solidity
function bad2(address from, address to, uint256 amount) external {
```
- Found in src/ArbitraryTransferFrom.sol [Line: 28](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L28)
```solidity
function bad3(address from, address to, uint256 amount) external {
```
- Found in src/ArbitraryTransferFrom.sol [Line: 37](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L37)
```solidity
function good2(address to, uint256 amount) external {
```
- Found in src/ArbitraryTransferFrom.sol [Line: 41](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L41)
```solidity
function good3(address to, uint256 amount) external {
```
- Found in src/ArbitraryTransferFrom.sol [Line: 45](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L45)
```solidity
function good4(address to, uint256 amount) external {
```
- Found in src/ArbitraryTransferFrom.sol [Line: 49](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L49)
```solidity
function good5(address from, address to, uint256 amount) external {
```
- Found in src/CallGraphTests.sol [Line: 38](../tests/contract-playground/src/CallGraphTests.sol#L38)
```solidity
function enterTenthFloor2(address x) external passThroughNinthFloor2(x) {
```
- Found in src/ContractLocksEther.sol [Line: 94](../tests/contract-playground/src/ContractLocksEther.sol#L94)
```solidity
function takeEthBack(uint256 amount) external {
```
- Found in src/ContractLocksEther.sol [Line: 131](../tests/contract-playground/src/ContractLocksEther.sol#L131)
```solidity
function takeEthBack(uint256 amount) external {
```
- Found in src/ContractLocksEther.sol [Line: 167](../tests/contract-playground/src/ContractLocksEther.sol#L167)
```solidity
function takeEthBack(uint256 amount) external {
```
- Found in src/ContractLocksEther.sol [Line: 194](../tests/contract-playground/src/ContractLocksEther.sol#L194)
```solidity
function takeEthBack(uint256 amount) external {
```
- Found in src/DeprecatedOZFunctions.sol [Line: 16](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L16)
```solidity
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) external {
```
- Found in src/DeprecatedOZFunctions.sol [Line: 26](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L26)
```solidity
function safeApprove(IERC20 token, address spender, uint256 value) external {
```
- Found in src/ExternalCalls.sol [Line: 67](../tests/contract-playground/src/ExternalCalls.sol#L67)
```solidity
function ext9() external {
```
- Found in src/OutOfOrderRetryable.sol [Line: 167](../tests/contract-playground/src/OutOfOrderRetryable.sol#L167)
```solidity
function claim_rewards() public {
```
- Found in src/OutOfOrderRetryable.sol [Line: 175](../tests/contract-playground/src/OutOfOrderRetryable.sol#L175)
```solidity
function unstake() public {
```
- Found in src/SendEtherNoChecks.sol [Line: 53](../tests/contract-playground/src/SendEtherNoChecks.sol#L53)
```solidity
function func1(address x) external mod1(x) {
```
- Found in src/SendEtherNoChecks.sol [Line: 77](../tests/contract-playground/src/SendEtherNoChecks.sol#L77)
```solidity
function func1(address x) external mod1(x) {
```
- Found in src/SendEtherNoChecks.sol [Line: 99](../tests/contract-playground/src/SendEtherNoChecks.sol#L99)
```solidity
function func1(address x) external mod1(x) {
```
- Found in src/Trump.sol [Line: 321](../tests/contract-playground/src/Trump.sol#L321)
```solidity
function manualSend() external {
```
- Found in src/UncheckedCalls.sol [Line: 6](../tests/contract-playground/src/UncheckedCalls.sol#L6)
```solidity
function sendEther(address payable recipient) external payable {
```
- Found in src/UncheckedCalls.sol [Line: 22](../tests/contract-playground/src/UncheckedCalls.sol#L22)
```solidity
function testMultipleUncheckedCalls(address target) external payable {
```
- Found in src/UncheckedSend.sol [Line: 6](../tests/contract-playground/src/UncheckedSend.sol#L6)
```solidity
function send1(address payable recipient, uint256 amount) external {
```
- Found in src/UncheckedSend.sol [Line: 12](../tests/contract-playground/src/UncheckedSend.sol#L12)
```solidity
function send2(address payable recipient, uint256 amount) external {
```
- Found in src/UncheckedSend.sol [Line: 17](../tests/contract-playground/src/UncheckedSend.sol#L17)
```solidity
function send3(address payable recipient, uint256 amount) external returns(bool) {
```
- Found in src/UncheckedSend.sol [Line: 22](../tests/contract-playground/src/UncheckedSend.sol#L22)
```solidity
function send4(address payable recipient, uint256 amount) external {
```
- Found in src/UninitializedStateVariable.sol [Line: 17](../tests/contract-playground/src/UninitializedStateVariable.sol#L17)
```solidity
function transfer() payable public {
```
</details>
## H-20: `delegatecall` to an Arbitrary Address
Making a `delegatecall` to an arbitrary address without any checks is dangerous. Consider adding requirements on the target address.
<details><summary>5 Found Instances</summary>
- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 15](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L15)
```solidity
function delegate1(address to, bytes memory data) external {
```
- Found in src/UncheckedCalls.sol [Line: 14](../tests/contract-playground/src/UncheckedCalls.sol#L14)
```solidity
function delegateCallFunction(address target, bytes calldata data) external {
```
- Found in src/UncheckedCalls.sol [Line: 22](../tests/contract-playground/src/UncheckedCalls.sol#L22)
```solidity
function testMultipleUncheckedCalls(address target) external payable {
```
- Found in src/auditor_mode/ExternalCalls.sol [Line: 38](../tests/contract-playground/src/auditor_mode/ExternalCalls.sol#L38)
```solidity
function rawDelegateCallFromParameter(address myTarget, bytes calldata data) external returns (bytes memory) {
```
- Found in src/inheritance/ExtendedInheritance.sol [Line: 14](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L14)
```solidity
function doSomethingElse(address target) external {
```
</details>
## H-21: Tautological comparison
The left hand side and the right hand side of the binary operation has the same value. This makes the condition always true or always false.
<details><summary>3 Found Instances</summary>
- Found in src/TautologicalCompare.sol [Line: 18](../tests/contract-playground/src/TautologicalCompare.sol#L18)
```solidity
return (f >= 7);
```
- Found in src/TautologicalCompare.sol [Line: 23](../tests/contract-playground/src/TautologicalCompare.sol#L23)
```solidity
return (f < f);
```
- Found in src/TautologicalCompare.sol [Line: 28](../tests/contract-playground/src/TautologicalCompare.sol#L28)
```solidity
return (f < g);
```
</details>
## H-22: RTLO character detected in file: \u{202e}
The right to left override character may be misleading and cause potential attacks by visually misordering method arguments.
<details><summary>1 Found Instances</summary>
- Found in src/RTLO.sol [Line: 3](../tests/contract-playground/src/RTLO.sol#L3)
```solidity
pragma solidity 0.6.4;
```
</details>
## H-23: Dangerous unary operator
Potentially mistaken `=+` for `+=` or `=-` for `-=`. This acts as an assignment instead of an increment or decrement.Use the correct operator to increment or decrement a variable.
<details><summary>2 Found Instances</summary>
- Found in src/DangerousUnaryOperator.sol [Line: 12](../tests/contract-playground/src/DangerousUnaryOperator.sol#L12)
```solidity
counter=+1; // BAD
```
- Found in src/DangerousUnaryOperator.sol [Line: 13](../tests/contract-playground/src/DangerousUnaryOperator.sol#L13)
```solidity
counter=-1; // BAD
```
</details>
## H-24: Tautology or Contradiction in comparison
The condition has been determined to be either always true or always false due to the integer range in which we're operating.
<details><summary>3 Found Instances</summary>
- Found in src/EmitAfterExternalCall.sol [Line: 48](../tests/contract-playground/src/EmitAfterExternalCall.sol#L48)
```solidity
for (uint256 i = 0; i < 0; ++i) {
```
- Found in src/TautologyOrContradiction.sol [Line: 13](../tests/contract-playground/src/TautologyOrContradiction.sol#L13)
```solidity
if (a > 258) {}
```
- Found in src/TautologyOrContradiction.sol [Line: 16](../tests/contract-playground/src/TautologyOrContradiction.sol#L16)
```solidity
if (map[67] < 0) {}
```
</details>
## H-25: Dangerous strict equality checks on contract balances
A contract's balance can be forcibly manipulated by another selfdestructing contract. Therefore, it's recommended to use >, <, >= or <= instead of strict equality.
<details><summary>3 Found Instances</summary>
- Found in src/DangerousStrictEquality1.sol [Line: 6](../tests/contract-playground/src/DangerousStrictEquality1.sol#L6)
```solidity
return this.balance == 100 ether;
```
- Found in src/DangerousStrictEquality2.sol [Line: 6](../tests/contract-playground/src/DangerousStrictEquality2.sol#L6)
```solidity
return address(this).balance == 100 ether;
```
- Found in src/DangerousStrictEquality2.sol [Line: 10](../tests/contract-playground/src/DangerousStrictEquality2.sol#L10)
```solidity
return payable(address(this)).balance == 100 ether;
```
</details>
## H-26: Signed integer array in storage (solc `<0.5.10`)
solc versions 0.4.7-0.5.9 contain a compiler bug leading to incorrect values in signed integer arrays.Use solidity version 0.5.10 or above.
<details><summary>1 Found Instances</summary>
- Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 9](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L9)
```solidity
affectedArray = [-1, 5, 2];
```
</details>
## H-27: Weak Randomness
The use of keccak256 hash functions on predictable values like block.timestamp, block.number, or similar data, including modulo operations on these values, should be avoided for generating randomness, as they are easily predictable and manipulable. The `PREVRANDAO` opcode also should not be used as a source of randomness. Instead, utilize Chainlink VRF for cryptographically secure and provably random values to ensure protocol integrity.
<details><summary>9 Found Instances</summary>
- Found in src/WeakRandomness.sol [Line: 6](../tests/contract-playground/src/WeakRandomness.sol#L6)
```solidity
uint256 randomNumber = uint256(keccak256(abi.encodePacked(msg.sender, block.number, block.timestamp)));
```
- Found in src/WeakRandomness.sol [Line: 11](../tests/contract-playground/src/WeakRandomness.sol#L11)
```solidity
return uint256(keccak256(abi.encodePacked(block.number)));
```
- Found in src/WeakRandomness.sol [Line: 16](../tests/contract-playground/src/WeakRandomness.sol#L16)
```solidity
return uint256(keccak256(someBytes));
```
- Found in src/WeakRandomness.sol [Line: 21](../tests/contract-playground/src/WeakRandomness.sol#L21)
```solidity
return uint256(keccak256(someBytes));
```
- Found in src/WeakRandomness.sol [Line: 25](../tests/contract-playground/src/WeakRandomness.sol#L25)
```solidity
return block.timestamp % 10;
```
- Found in src/WeakRandomness.sol [Line: 31](../tests/contract-playground/src/WeakRandomness.sol#L31)
```solidity
return a % b;
```
- Found in src/WeakRandomness.sol [Line: 35](../tests/contract-playground/src/WeakRandomness.sol#L35)
```solidity
uint256 randomNumber = uint256(blockhash(block.number)) % 10;
```
- Found in src/WeakRandomness.sol [Line: 41](../tests/contract-playground/src/WeakRandomness.sol#L41)
```solidity
return hash % 10;
```
- Found in src/WeakRandomness.sol [Line: 45](../tests/contract-playground/src/WeakRandomness.sol#L45)
```solidity
uint256 randomNumber = block.prevrandao;
```
</details>
## H-28: Usage of variable before declaration
Declare the variable before using it to avoid unintended consequences.
<details><summary>1 Found Instances</summary>
- Found in src/PreDeclaredVarUsage.sol [Line: 8](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L8)
```solidity
a = 100;
```
</details>
## H-29: Deletion from a nested mapping
A deletion in a structure containing a mapping will not delete the mapping. The remaining data may be used to compromise the contract.
<details><summary>1 Found Instances</summary>
- Found in src/DeletionNestedMappingStructureContract.sol [Line: 17](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L17)
```solidity
delete people[msg.sender];
```
</details>
## H-30: Use of `tx.origin` for authentication
Using `tx.origin` may lead to problems when users are interacting via smart contract with your protocol. It is recommended to use `msg.sender` for authentication.
<details><summary>3 Found Instances</summary>
- Found in src/TxOriginUsedForAuth.sol [Line: 40](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L40)
```solidity
if (tx.origin == owner) {
```
- Found in src/TxOriginUsedForAuth.sol [Line: 51](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L51)
```solidity
if (tx.origin == owner || authorizedUsers[tx.origin]) {
```
- Found in src/TxOriginUsedForAuth.sol [Line: 59](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L59)
```solidity
require(tx.origin == owner, "Not authorized to perform this action");
```
</details>
## H-31: Loop contains `msg.value`
Provide an explicit array of amounts alongside the receivers array, and check that the sum of all amounts matches `msg.value`.
<details><summary>4 Found Instances</summary>
- Found in src/MsgValueInLoop.sol [Line: 12](../tests/contract-playground/src/MsgValueInLoop.sol#L12)
```solidity
for (uint256 i = 0; i < receivers.length; i++) {
```
- Found in src/MsgValueInLoop.sol [Line: 38](../tests/contract-playground/src/MsgValueInLoop.sol#L38)
```solidity
for (uint256 i = 0; i < receivers.length; i++) {
```
- Found in src/MsgValueInLoop.sol [Line: 54](../tests/contract-playground/src/MsgValueInLoop.sol#L54)
```solidity
while (i < receivers.length) {
```
- Found in src/MsgValueInLoop.sol [Line: 71](../tests/contract-playground/src/MsgValueInLoop.sol#L71)
```solidity
do {
```
</details>
## H-32: Contract locks Ether without a withdraw function
It appears that the contract includes a payable function to accept Ether but lacks a corresponding function to withdraw it, which leads to the Ether being locked in the contract. To resolve this issue, please implement a public or external function that allows for the withdrawal of Ether from the contract.
<details><summary>15 Found Instances</summary>
- Found in src/ContractLocksEther.sol [Line: 5](../tests/contract-playground/src/ContractLocksEther.sol#L5)
```solidity
contract NoWithdraw {
```
- Found in src/ContractLocksEther.sol [Line: 31](../tests/contract-playground/src/ContractLocksEther.sol#L31)
```solidity
contract NoWithdraw2 {
```
- Found in src/EmptyBlocks.sol [Line: 20](../tests/contract-playground/src/EmptyBlocks.sol#L20)
```solidity
contract EmptyBlocksNestedInReceiverAndFallbacks {
```
- Found in src/EmptyBlocks.sol [Line: 44](../tests/contract-playground/src/EmptyBlocks.sol#L44)
```solidity
contract EmptyBlocks {
```
- Found in src/ExternalCalls.sol [Line: 8](../tests/contract-playground/src/ExternalCalls.sol#L8)
```solidity
contract MyTarget is IMyTarget {
```
- Found in src/MsgValueInLoop.sol [Line: 7](../tests/contract-playground/src/MsgValueInLoop.sol#L7)
```solidity
contract MsgValueInLoop1 {
```
- Found in src/MsgValueInLoop.sol [Line: 19](../tests/contract-playground/src/MsgValueInLoop.sol#L19)
```solidity
contract MsgValueOutsideLoop {
```
- Found in src/MsgValueInLoop.sol [Line: 33](../tests/contract-playground/src/MsgValueInLoop.sol#L33)
```solidity
contract MsgValueInLoop2 {
```
- Found in src/MsgValueInLoop.sol [Line: 48](../tests/contract-playground/src/MsgValueInLoop.sol#L48)
```solidity
contract MsgValueInLoop3 {
```
- Found in src/MsgValueInLoop.sol [Line: 65](../tests/contract-playground/src/MsgValueInLoop.sol#L65)
```solidity
contract MsgValueInLoop4 {
```
- Found in src/OutOfOrderRetryable.sol [Line: 38](../tests/contract-playground/src/OutOfOrderRetryable.sol#L38)
```solidity
contract L1 {
```
- Found in src/eth2/DepositContract.sol [Line: 58](../tests/contract-playground/src/eth2/DepositContract.sol#L58)
```solidity
contract DepositContract is IDepositContract, ERC165 {
```
- Found in src/router/FallbackAndReceiveOverrides.sol [Line: 4](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L4)
```solidity
contract A {
```
- Found in src/router/FallbackAndReceiveOverrides.sol [Line: 10](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L10)
```solidity
contract B is A {
```
- Found in src/router/FallbackAndReceiveOverrides.sol [Line: 14](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L14)
```solidity
contract C is A {}
```
</details>
## H-33: Incorrect ERC721 interface
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. Set the appropriate return values and types for the defined ERC721 functions.
<details><summary>8 Found Instances</summary>
- Found in src/IncorrectERC721.sol [Line: 14](../tests/contract-playground/src/IncorrectERC721.sol#L14)
```solidity
function balanceOf(address owner) external view returns (uint72) {
```
- Found in src/IncorrectERC721.sol [Line: 18](../tests/contract-playground/src/IncorrectERC721.sol#L18)
```solidity
function ownerOf(uint256 tokenId) public view returns (bytes4) {
```
- Found in src/IncorrectERC721.sol [Line: 22](../tests/contract-playground/src/IncorrectERC721.sol#L22)
```solidity
function approve(
```
- Found in src/IncorrectERC721.sol [Line: 37](../tests/contract-playground/src/IncorrectERC721.sol#L37)
```solidity
function getApproved(uint256 tokenId) external view returns (uint72) {
```
- Found in src/IncorrectERC721.sol [Line: 41](../tests/contract-playground/src/IncorrectERC721.sol#L41)
```solidity
function setApprovalForAll(
```
- Found in src/IncorrectERC721.sol [Line: 49](../tests/contract-playground/src/IncorrectERC721.sol#L49)
```solidity
function isApprovedForAll(
```
- Found in src/IncorrectERC721.sol [Line: 56](../tests/contract-playground/src/IncorrectERC721.sol#L56)
```solidity
function transferFrom(
```
- Found in src/IncorrectERC721.sol [Line: 71](../tests/contract-playground/src/IncorrectERC721.sol#L71)
```solidity
function safeTransferFrom(
```
</details>
## H-34: Incorrect ERC20 interface
Incorrect return values for ERC20 functions. A contract compiled with Solidity > 0.4.22 interacting with these functions will fail to execute them, as the return value is missing. Set the appropriate return values and types for the defined ERC20 functions.
<details><summary>5 Found Instances</summary>
- Found in src/IncorrectERC20.sol [Line: 17](../tests/contract-playground/src/IncorrectERC20.sol#L17)
```solidity
function transfer(address to, uint256 value) public {
```
- Found in src/IncorrectERC20.sol [Line: 23](../tests/contract-playground/src/IncorrectERC20.sol#L23)
```solidity
function approve(address spender, uint256 value) public {
```
- Found in src/IncorrectERC20.sol [Line: 27](../tests/contract-playground/src/IncorrectERC20.sol#L27)
```solidity
function transferFrom(address from, address to, uint256 value) public {
```
- Found in src/IncorrectERC20.sol [Line: 35](../tests/contract-playground/src/IncorrectERC20.sol#L35)
```solidity
function balanceOf(address account) public pure returns (address) {
```
- Found in src/IncorrectERC20.sol [Line: 39](../tests/contract-playground/src/IncorrectERC20.sol#L39)
```solidity
function allowance(
```
</details>
## H-35: Out of Order Retryable Transaction
Do not rely on the order or successful execution of retryable tickets. Functions like createRetryableTicket, outboundTransferCustomRefund, unsafeCreateRetryableTicket are free to be re-tried in any
order if they fail in the first go. Since this operation happens off chain, the sequencer is in control of the
order of these transactions. Therefore, restrict the use to at most 1 ticket call per function.
<details><summary>2 Found Instances</summary>
- Found in src/OutOfOrderRetryable.sol [Line: 63](../tests/contract-playground/src/OutOfOrderRetryable.sol#L63)
```solidity
function doStuffOnL2() external {
```
- Found in src/OutOfOrderRetryable.sol [Line: 90](../tests/contract-playground/src/OutOfOrderRetryable.sol#L90)
```solidity
function doStuffOnL2Alternative() external {
```
</details>
## H-36: Constant functions changes state
Function is declared constant/view but it changes state. Ensure that the attributes of contract compiled prior to 0.5 are correct.
<details><summary>1 Found Instances</summary>
- Found in src/ConstFuncChangeState.sol [Line: 8](../tests/contract-playground/src/ConstFuncChangeState.sol#L8)
```solidity
function changeState() public view returns (uint) {
```
</details>
## H-37: Function Selector Collision
Function selector collides with other functions. This may cause the solidity function dispatcher to invoke the wrong function if the functions happen to be included in the same contract through an inheritance hierarchy later down the line. It is recommended to rename this function or change its parameters.
<details><summary>2 Found Instances</summary>
- Found in src/FunctionSignatureCollision.sol [Line: 7](../tests/contract-playground/src/FunctionSignatureCollision.sol#L7)
collides with the following function name(s) in scope: OwnerTransferV7b711143
```solidity
function withdraw(uint256) external {
```
- Found in src/FunctionSignatureCollision.sol [Line: 13](../tests/contract-playground/src/FunctionSignatureCollision.sol#L13)
collides with the following function name(s) in scope: withdraw
```solidity
function OwnerTransferV7b711143(uint256) external {
```
</details>
## H-38: Unchecked Low level calls
The return value of the low-level call is not checked, so if the call fails, the Ether will be locked in the contract. If the low level is used to prevent blocking operations, consider logging failed calls. Ensure that the return value of a low-level call is checked or logged.
<details><summary>14 Found Instances</summary>
- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 16](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L16)
```solidity
to.delegatecall(data); // `to` is not protected, therefore BAD
```
- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 20](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L20)
```solidity
manager.delegatecall(data); // `manager` is state variable, therefore GOOD
```
- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 36](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L36)
```solidity
to.delegatecall(data); // `to` is protected, therefore GOOD
```
- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 42](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L42)
```solidity
to.delegatecall(data);
```
- Found in src/UncheckedCalls.sol [Line: 7](../tests/contract-playground/src/UncheckedCalls.sol#L7)
```solidity
recipient.call{value: 100}("");
```
- Found in src/UncheckedCalls.sol [Line: 11](../tests/contract-playground/src/UncheckedCalls.sol#L11)
```solidity
target.call(data);
```
- Found in src/UncheckedCalls.sol [Line: 15](../tests/contract-playground/src/UncheckedCalls.sol#L15)
```solidity
target.delegatecall(data);
```
- Found in src/UncheckedCalls.sol [Line: 19](../tests/contract-playground/src/UncheckedCalls.sol#L19)
```solidity
target.staticcall(data);
```
- Found in src/UncheckedCalls.sol [Line: 23](../tests/contract-playground/src/UncheckedCalls.sol#L23)
```solidity
target.call{value: 100}("");
```
- Found in src/UncheckedCalls.sol [Line: 25](../tests/contract-playground/src/UncheckedCalls.sol#L25)
```solidity
target.call(abi.encodeWithSignature("someFunction(uint256)", 123));
```
- Found in src/UncheckedCalls.sol [Line: 27](../tests/contract-playground/src/UncheckedCalls.sol#L27)
```solidity
target.delegatecall(abi.encodeWithSignature("someOtherFunction(address)", msg.sender));
```
- Found in src/UncheckedCalls.sol [Line: 29](../tests/contract-playground/src/UncheckedCalls.sol#L29)
```solidity
target.staticcall(abi.encodeWithSignature("aViewFunction()"));
```
- Found in src/UncheckedCalls.sol [Line: 34](../tests/contract-playground/src/UncheckedCalls.sol#L34)
```solidity
dst.call.value(100)("");
```
- Found in src/inheritance/ExtendedInheritance.sol [Line: 16](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L16)
```solidity
target.delegatecall(abi.encodeWithSignature("doSomething(uint256)", i));
```
</details>
## H-39: Reentrancy: State change after external call
Changing state after an external call can lead to re-entrancy attacks.Use the checks-effects-interactions pattern to avoid this issue.
<details><summary>7 Found Instances</summary>
- Found in src/StateChangeAfterExternalCall.sol [Line: 24](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L24)
State is changed at: `s_useMe += 1`
```solidity
s_actor.hello();
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 33](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L33)
State is changed at: `s_useMe -= 1`
```solidity
s_actor.hello();
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 52](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L52)
State is changed at: `s_useMe += 4`
```solidity
s_actor.hello();
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 82](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L82)
State is changed at: `s_useMe += 1`
```solidity
s_actor.hello();
```
- Found in src/Trump.sol [Line: 342](../tests/contract-playground/src/Trump.sol#L342)
State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`
```solidity
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
```
- Found in src/Trump.sol [Line: 343](../tests/contract-playground/src/Trump.sol#L343)
State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`
```solidity
uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
```
- Found in src/Trump.sol [Line: 344](../tests/contract-playground/src/Trump.sol#L344)
State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`
```solidity
IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
```
</details>
# Low Issues
## L-1: `delegatecall` in loop
Using `delegatecall` in loop may consume excessive gas, or worse, lead to more severe issues.
<details><summary>1 Found Instances</summary>
- Found in src/inheritance/ExtendedInheritance.sol [Line: 15](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L15)
```solidity
for (uint256 i = 0; i < 3; i++) {
```
</details>
## L-2: Centralization Risk
Contracts have owners with privileged rights to perform admin tasks and need to be trusted to not perform malicious updates or drain funds.
<details><summary>23 Found Instances</summary>
- Found in src/AdminContract.sol [Line: 7](../tests/contract-playground/src/AdminContract.sol#L7)
```solidity
contract AdminContract is Ownable, ReentrancyGuard {
```
- Found in src/AdminContract.sol [Line: 10](../tests/contract-playground/src/AdminContract.sol#L10)
```solidity
function setOwner(address _owner) external onlyOwner nonReentrant {
```
- Found in src/AdminContract.sol [Line: 14](../tests/contract-playground/src/AdminContract.sol#L14)
```solidity
function someOtherImportantThing() external nonReentrant onlyOwner {
```
- Found in src/DeprecatedOZFunctions.sol [Line: 7](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L7)
```solidity
contract DeprecatedOZFunctions is AccessControl {
```
- Found in src/EmptyBlocks.sol [Line: 6](../tests/contract-playground/src/EmptyBlocks.sol#L6)
```solidity
contract EmptyBlocksWithOwnableConstructor is Ownable {
```
- Found in src/InternalFunctions.sol [Line: 12](../tests/contract-playground/src/InternalFunctions.sol#L12)
```solidity
function setValue(uint256 _newValue) external onlyOwner {
```
- Found in src/SendEtherNoChecksLibImport.sol [Line: 7](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L7)
```solidity
contract SendEtherCheckOZOnlyOWner is Ownable, AccessControl {
```
- Found in src/SendEtherNoChecksLibImport.sol [Line: 16](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L16)
```solidity
function send(address x) external onlyOwner {
```
- Found in src/SendEtherNoChecksLibImport.sol [Line: 20](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L20)
```solidity
function sendWithRole(address x) external onlyRole(DEFAULT_ADMIN_ROLE) {
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 81](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L81)
```solidity
function badSituation4() external onlyOwner {
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 87](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L87)
```solidity
function goodSituation3() external onlyOwner {
```
- Found in src/Trump.sol [Line: 92](../tests/contract-playground/src/Trump.sol#L92)
```solidity
function renounceOwnership() public virtual onlyOwner {
```
- Found in src/Trump.sol [Line: 123](../tests/contract-playground/src/Trump.sol#L123)
```solidity
contract MAGA is Context, IERC20, Ownable {
```
- Found in src/Trump.sol [Line: 299](../tests/contract-playground/src/Trump.sol#L299)
```solidity
function removeLimits() external onlyOwner{
```
- Found in src/Trump.sol [Line: 338](../tests/contract-playground/src/Trump.sol#L338)
```solidity
function openTrading() external onlyOwner() {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 9](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L9)
```solidity
contract OwnableExamples is Ownable {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 11](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L11)
```solidity
function onlyOwnerFunction() external onlyOwner {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 35](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L35)
```solidity
contract AccessControlExamples is AccessControl {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 38](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L38)
```solidity
function onlyRoleFunction() external onlyRole(ROLE) {
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 7](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L7)
```solidity
contract ParentChainContract is Ownable, ReentrancyGuard {
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 28](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L28)
```solidity
function setOwner(address _owner) external onlyOwner nonReentrant {
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 32](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L32)
```solidity
function someOtherImportantThing() external nonReentrant onlyOwner {
```
</details>
## L-3: Solmate's SafeTransferLib
There is a subtle difference between the implementation of solmate's SafeTransferLib and OZ's SafeERC20: OZ's SafeERC20 checks if the token is a contract or not, solmate's SafeTransferLib does not.
https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol#L9
`@dev Note that none of the functions in this library check that a token has code at all! That responsibility is delegated to the caller`
<details><summary>1 Found Instances</summary>
- Found in src/T11sTranferer.sol [Line: 4](../tests/contract-playground/src/T11sTranferer.sol#L4)
```solidity
import {ERC20, SafeTransferLib} from "../lib/solmate/src/utils/SafeTransferLib.sol";
```
</details>
## L-4: `ecrecover` Signature Malleability
The `ecrecover` function is susceptible to signature malleability. This means that the same message can be signed in multiple ways, allowing an attacker to change the message signature without invalidating it. This can lead to unexpected behavior in smart contracts, such as the loss of funds or the ability to bypass access control. Consider using OpenZeppelin's ECDSA library instead of the built-in function.
<details><summary>1 Found Instances</summary>
- Found in src/inheritance/ExtendedInheritance.sol [Line: 22](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L22)
```solidity
return ecrecover(theHash, v, r, s);
```
</details>
## L-5: Deprecated OpenZeppelin Function
Openzeppelin has deprecated several functions and replaced with newer versions. Please consult https://docs.openzeppelin.com/
<details><summary>2 Found Instances</summary>
- Found in src/DeprecatedOZFunctions.sol [Line: 22](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L22)
```solidity
_setupRole(role, account);
```
- Found in src/DeprecatedOZFunctions.sol [Line: 27](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L27)
```solidity
token.safeApprove(spender, value);
```
</details>
## L-6: Unsafe ERC20 Operation
ERC20 functions may not behave as expected. For example: return values are not always meaningful. It is recommended to use OpenZeppelin's SafeERC20 library.
<details><summary>20 Found Instances</summary>
- Found in src/ArbitraryTransferFrom.sol [Line: 19](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L19)
```solidity
s_token.transferFrom(from, to, amount);
```
- Found in src/ArbitraryTransferFrom.sol [Line: 34](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L34)
```solidity
s_token.transferFrom(from_msgsender, to, am);
```
- Found in src/ArbitraryTransferFrom.sol [Line: 54](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L54)
```solidity
s_token.transferFrom(msg.sender, to, amount);
```
- Found in src/ContractLocksEther.sol [Line: 162](../tests/contract-playground/src/ContractLocksEther.sol#L162)
```solidity
recipient.transfer(amount);
```
- Found in src/DeprecatedOZFunctions.sol [Line: 32](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L32)
```solidity
token.approve(spender, value);
```
- Found in src/DeprecatedOZFunctions.sol [Line: 37](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L37)
```solidity
require(token.approve(spender, value));
```
- Found in src/DeprecatedOZFunctions.sol [Line: 38](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L38)
```solidity
success = token.approve(spender, value);
```
- Found in src/DeprecatedOZFunctions.sol [Line: 42](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L42)
```solidity
return token.approve(spender, value);
```
- Found in src/DeprecatedOZFunctions.sol [Line: 47](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L47)
```solidity
token.transferFrom(from, to, value);
```
- Found in src/IncorrectModifier.sol [Line: 83](../tests/contract-playground/src/IncorrectModifier.sol#L83)
```solidity
payable(owner).transfer(USEME);
```
- Found in src/OutOfOrderRetryable.sol [Line: 171](../tests/contract-playground/src/OutOfOrderRetryable.sol#L171)
```solidity
payable(msg.sender).transfer(unclaimed_rewards);
```
- Found in src/OutOfOrderRetryable.sol [Line: 180](../tests/contract-playground/src/OutOfOrderRetryable.sol#L180)
```solidity
payable(msg.sender).transfer(user_balance);
```
- Found in src/SendEtherNoChecks.sol [Line: 67](../tests/contract-playground/src/SendEtherNoChecks.sol#L67)
```solidity
payable(x).transfer(BAL);
```
- Found in src/StateShadowing.sol [Line: 22](../tests/contract-playground/src/StateShadowing.sol#L22)
```solidity
msg.sender.transfer(address(this).balance);
```
- Found in src/Trump.sol [Line: 309](../tests/contract-playground/src/Trump.sol#L309)
```solidity
_taxWallet.transfer(taxWalletShare);
```
- Found in src/Trump.sol [Line: 310](../tests/contract-playground/src/Trump.sol#L310)
```solidity
_teamWallet.transfer(teamWalletShare);
```
- Found in src/Trump.sol [Line: 318](../tests/contract-playground/src/Trump.sol#L318)
```solidity
return IERC20(tokenAddress).transfer(_taxWallet, tokens);
```
- Found in src/Trump.sol [Line: 324](../tests/contract-playground/src/Trump.sol#L324)
```solidity
payable(_taxWallet).transfer(balance);
```
- Found in src/Trump.sol [Line: 344](../tests/contract-playground/src/Trump.sol#L344)
```solidity
IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
```
- Found in src/UninitializedStateVariable.sol [Line: 18](../tests/contract-playground/src/UninitializedStateVariable.sol#L18)
```solidity
payable(destination).transfer(msg.value); // `destination` does not have any assignments.
```
</details>
## L-7: Unspecific Solidity Pragma
Consider using a specific version of Solidity in your contracts instead of a wide version. For example, instead of `pragma solidity ^0.8.0;`, use `pragma solidity 0.8.0;`
<details><summary>36 Found Instances</summary>
- Found in src/BuiltinSymbolShadow.sol [Line: 2](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L2)
```solidity
pragma solidity ^0.4.0;
```
- Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 2](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L2)
```solidity
pragma solidity ^0.4.0;
```
- Found in src/ConstFuncChangeState.sol [Line: 2](../tests/contract-playground/src/ConstFuncChangeState.sol#L2)
```solidity
pragma solidity ^0.4.0;
```
- Found in src/ConstantFuncsAssembly.sol [Line: 2](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L2)
```solidity
pragma solidity ^0.4.0;
```
- Found in src/ContractLocksEther.sol [Line: 2](../tests/contract-playground/src/ContractLocksEther.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/ContractWithTodo.sol [Line: 2](../tests/contract-playground/src/ContractWithTodo.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/CostlyOperationsInsideLoops.sol [Line: 2](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/Counter.sol [Line: 2](../tests/contract-playground/src/Counter.sol#L2)
```solidity
pragma solidity ^0.8.13;
```
- Found in src/CrazyPragma.sol [Line: 2](../tests/contract-playground/src/CrazyPragma.sol#L2)
```solidity
pragma solidity >=0.8.19 <0.9.1;
```
- Found in src/DangerousStrictEquality1.sol [Line: 2](../tests/contract-playground/src/DangerousStrictEquality1.sol#L2)
```solidity
pragma solidity ^0.4.0;
```
- Found in src/DangerousUnaryOperator.sol [Line: 2](../tests/contract-playground/src/DangerousUnaryOperator.sol#L2)
```solidity
pragma solidity ^0.4.0;
```
- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 2](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L2)
```solidity
pragma solidity ^0.8;
```
- Found in src/DeletionNestedMappingStructureContract.sol [Line: 2](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/FunctionInitializingState.sol [Line: 2](../tests/contract-playground/src/FunctionInitializingState.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/FunctionSignatureCollision.sol [Line: 2](../tests/contract-playground/src/FunctionSignatureCollision.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/InconsistentUints.sol [Line: 1](../tests/contract-playground/src/InconsistentUints.sol#L1)
```solidity
pragma solidity ^0.8.24;
```
- Found in src/IncorrectERC20.sol [Line: 2](../tests/contract-playground/src/IncorrectERC20.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/IncorrectERC721.sol [Line: 2](../tests/contract-playground/src/IncorrectERC721.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/MsgValueInLoop.sol [Line: 2](../tests/contract-playground/src/MsgValueInLoop.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/OutOfOrderRetryable.sol [Line: 2](../tests/contract-playground/src/OutOfOrderRetryable.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/PragmaRange.sol [Line: 2](../tests/contract-playground/src/PragmaRange.sol#L2)
```solidity
pragma solidity >=0.5.0 <0.8.0;
```
- Found in src/PreDeclaredVarUsage.sol [Line: 2](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L2)
```solidity
pragma solidity ^0.4.0;
```
- Found in src/RedundantStatements.sol [Line: 2](../tests/contract-playground/src/RedundantStatements.sol#L2)
```solidity
pragma solidity ^0.4.0;
```
- Found in src/TautologyOrContradiction.sol [Line: 2](../tests/contract-playground/src/TautologyOrContradiction.sol#L2)
```solidity
pragma solidity ^0.5.0;
```
- Found in src/TxOriginUsedForAuth.sol [Line: 2](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L2)
```solidity
pragma solidity ^0.8.20;
```
- Found in src/UncheckedCalls.sol [Line: 2](../tests/contract-playground/src/UncheckedCalls.sol#L2)
```solidity
pragma solidity ^0.6.0;
```
- Found in src/UncheckedSend.sol [Line: 2](../tests/contract-playground/src/UncheckedSend.sol#L2)
```solidity
pragma solidity ^0.7.0;
```
- Found in src/UnusedStateVariables.sol [Line: 2](../tests/contract-playground/src/UnusedStateVariables.sol#L2)
```solidity
pragma solidity ^0.8.20;
```
- Found in src/UsingSelfdestruct.sol [Line: 2](../tests/contract-playground/src/UsingSelfdestruct.sol#L2)
```solidity
pragma solidity ^0.6.0;
```
- Found in src/VoidConstructor.sol [Line: 2](../tests/contract-playground/src/VoidConstructor.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L6)
```solidity
pragma solidity ^0.8.18;
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L6)
```solidity
pragma solidity >=0.8.0 <0.8.25;
```
- Found in src/inheritance/IContractInheritance.sol [Line: 2](../tests/contract-playground/src/inheritance/IContractInheritance.sol#L2)
```solidity
pragma solidity >=0.8.0;
```
- Found in src/inheritance/InheritanceBase.sol [Line: 2](../tests/contract-playground/src/inheritance/InheritanceBase.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/nested_mappings/LaterVersion.sol [Line: 2](../tests/contract-playground/src/nested_mappings/LaterVersion.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/nested_mappings/NestedMappings.sol [Line: 2](../tests/contract-playground/src/nested_mappings/NestedMappings.sol#L2)
```solidity
pragma solidity ^0.4.25;
```
</details>
## L-8: Address State Variable Set Without Checks
Check for `address(0)` when assigning values to address state variables.
<details><summary>12 Found Instances</summary>
- Found in src/ArbitraryTransferFrom.sol [Line: 12](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L12)
```solidity
s_token = token;
```
- Found in src/ExternalCalls.sol [Line: 20](../tests/contract-playground/src/ExternalCalls.sol#L20)
```solidity
t2 = MyTarget(x);
```
- Found in src/ExternalCalls.sol [Line: 28](../tests/contract-playground/src/ExternalCalls.sol#L28)
```solidity
t1 = t;
```
- Found in src/OutOfOrderRetryable.sol [Line: 54](../tests/contract-playground/src/OutOfOrderRetryable.sol#L54)
```solidity
inbox = _inbox;
```
- Found in src/OutOfOrderRetryable.sol [Line: 55](../tests/contract-playground/src/OutOfOrderRetryable.sol#L55)
```solidity
l2contract = _l2contract;
```
- Found in src/StateVariables.sol [Line: 58](../tests/contract-playground/src/StateVariables.sol#L58)
```solidity
addr = newAddr;
```
- Found in src/StateVariablesManipulation.sol [Line: 56](../tests/contract-playground/src/StateVariablesManipulation.sol#L56)
```solidity
simpleAddress = d;
```
- Found in src/ZeroAddressCheck.sol [Line: 43](../tests/contract-playground/src/ZeroAddressCheck.sol#L43)
```solidity
addr = newAddr;
```
- Found in src/ZeroAddressCheck.sol [Line: 47](../tests/contract-playground/src/ZeroAddressCheck.sol#L47)
```solidity
token = newToken;
```
- Found in src/ZeroAddressCheck.sol [Line: 51](../tests/contract-playground/src/ZeroAddressCheck.sol#L51)
```solidity
token = IERC20(newAddr);
```
- Found in src/inheritance/ExtendedInheritance.sol [Line: 18](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L18)
```solidity
s_baseAddress = target;
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 11](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L11)
```solidity
s_router = router;
```
</details>
## L-9: Public Function Not Used Internally
If a function is marked public but is not used internally, consider marking it as `external`.
<details><summary>72 Found Instances</summary>
- Found in src/AderynIgnoreCustomDetectors.sol [Line: 7](../tests/contract-playground/src/AderynIgnoreCustomDetectors.sol#L7)
```solidity
function f1() public {
```
- Found in src/AderynIgnoreCustomDetectors.sol [Line: 26](../tests/contract-playground/src/AderynIgnoreCustomDetectors.sol#L26)
```solidity
function f4() public {
```
- Found in src/ArbitraryTransferFrom.sol [Line: 32](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L32)
```solidity
function good1(address to, uint256 am) public {
```
- Found in src/AssemblyExample.sol [Line: 6](../tests/contract-playground/src/AssemblyExample.sol#L6)
```solidity
function f(uint x) public view returns (uint r) {
```
- Found in src/AssertStateChange.sol [Line: 8](../tests/contract-playground/src/AssertStateChange.sol#L8)
```solidity
function bad() public {
```
- Found in src/AssertStateChange.sol [Line: 12](../tests/contract-playground/src/AssertStateChange.sol#L12)
```solidity
function good() public {
```
- Found in src/BuiltinSymbolShadow.sol [Line: 8](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L8)
```solidity
function assert(bool condition) public {}
```
- Found in src/ConstFuncChangeState.sol [Line: 8](../tests/contract-playground/src/ConstFuncChangeState.sol#L8)
```solidity
function changeState() public view returns (uint) {
```
- Found in src/ConstFuncChangeState.sol [Line: 14](../tests/contract-playground/src/ConstFuncChangeState.sol#L14)
```solidity
function changeState2() public returns (uint) {
```
- Found in src/ConstFuncChangeState.sol [Line: 20](../tests/contract-playground/src/ConstFuncChangeState.sol#L20)
```solidity
function dontChangeState() public view returns (uint) {
```
- Found in src/ContractLocksEther.sol [Line: 20](../tests/contract-playground/src/ContractLocksEther.sol#L20)
```solidity
function getBalance() public view returns (uint256) {
```
- Found in src/ContractLocksEther.sol [Line: 49](../tests/contract-playground/src/ContractLocksEther.sol#L49)
```solidity
function getBalance() public view returns (uint256) {
```
- Found in src/ContractLocksEther.sol [Line: 81](../tests/contract-playground/src/ContractLocksEther.sol#L81)
```solidity
function getBalance() public view returns (uint256) {
```
- Found in src/ContractLocksEther.sol [Line: 118](../tests/contract-playground/src/ContractLocksEther.sol#L118)
```solidity
function getBalance() public view returns (uint256) {
```
- Found in src/ContractLocksEther.sol [Line: 155](../tests/contract-playground/src/ContractLocksEther.sol#L155)
```solidity
function getBalance() public view returns (uint256) {
```
- Found in src/ContractLocksEther.sol [Line: 181](../tests/contract-playground/src/ContractLocksEther.sol#L181)
```solidity
function getBalance() public view returns (uint256) {
```
- Found in src/ContractWithTodo.sol [Line: 13](../tests/contract-playground/src/ContractWithTodo.sol#L13)
```solidity
function toggleCompleted(uint _taskId) public {
```
- Found in src/Counter.sol [Line: 7](../tests/contract-playground/src/Counter.sol#L7)
```solidity
function setNumber(uint256 newNumber) public {
```
- Found in src/ExternalCalls.sol [Line: 11](../tests/contract-playground/src/ExternalCalls.sol#L11)
```solidity
function extCall(uint256 m_a) public payable {
```
- Found in src/ExternalCalls.sol [Line: 19](../tests/contract-playground/src/ExternalCalls.sol#L19)
```solidity
function baseThing(address x) public {
```
- Found in src/IncorrectERC20.sol [Line: 17](../tests/contract-playground/src/IncorrectERC20.sol#L17)
```solidity
function transfer(address to, uint256 value) public {
```
- Found in src/IncorrectERC20.sol [Line: 23](../tests/contract-playground/src/IncorrectERC20.sol#L23)
```solidity
function approve(address spender, uint256 value) public {
```
- Found in src/IncorrectERC20.sol [Line: 27](../tests/contract-playground/src/IncorrectERC20.sol#L27)
```solidity
function transferFrom(address from, address to, uint256 value) public {
```
- Found in src/IncorrectERC20.sol [Line: 35](../tests/contract-playground/src/IncorrectERC20.sol#L35)
```solidity
function balanceOf(address account) public pure returns (address) {
```
- Found in src/IncorrectERC20.sol [Line: 39](../tests/contract-playground/src/IncorrectERC20.sol#L39)
```solidity
function allowance(
```
- Found in src/LocalVariableShadow.sol [Line: 10](../tests/contract-playground/src/LocalVariableShadow.sol#L10)
```solidity
function sensitiveFunction(address owner) public view {
```
- Found in src/LocalVariableShadow.sol [Line: 16](../tests/contract-playground/src/LocalVariableShadow.sol#L16)
```solidity
function alternateSensitiveFunction() public view {
```
- Found in src/LocalVariableShadow.sol [Line: 31](../tests/contract-playground/src/LocalVariableShadow.sol#L31)
```solidity
function sensitiveFfunction(address roll) public view {
```
- Found in src/OutOfOrderRetryable.sol [Line: 167](../tests/contract-playground/src/OutOfOrderRetryable.sol#L167)
```solidity
function claim_rewards() public {
```
- Found in src/OutOfOrderRetryable.sol [Line: 175](../tests/contract-playground/src/OutOfOrderRetryable.sol#L175)
```solidity
function unstake() public {
```
- Found in src/ReturnBomb.sol [Line: 16](../tests/contract-playground/src/ReturnBomb.sol#L16)
```solidity
function oops(address badGuy) public {
```
- Found in src/ReturnBomb.sol [Line: 32](../tests/contract-playground/src/ReturnBomb.sol#L32)
```solidity
function oops(address badGuy) public {
```
- Found in src/ReturnBomb.sol [Line: 47](../tests/contract-playground/src/ReturnBomb.sol#L47)
```solidity
function oops(address badGuy) public {
```
- Found in src/ReturnBomb.sol [Line: 63](../tests/contract-playground/src/ReturnBomb.sol#L63)
```solidity
function oops() public {
```
- Found in src/StateVariables.sol [Line: 47](../tests/contract-playground/src/StateVariables.sol#L47)
```solidity
function setAddrNoZeroError(address newAddr) public {
```
- Found in src/StateVariables.sol [Line: 52](../tests/contract-playground/src/StateVariables.sol#L52)
```solidity
function setAddrNoZeroRequire(address newAddr) public {
```
- Found in src/StateVariables.sol [Line: 57](../tests/contract-playground/src/StateVariables.sol#L57)
```solidity
function setAddrNoCheck(address newAddr) public {
```
- Found in src/StateVariables.sol [Line: 61](../tests/contract-playground/src/StateVariables.sol#L61)
```solidity
function setEmptyAlteredNumbers(
```
- Found in src/StateVariables.sol [Line: 71](../tests/contract-playground/src/StateVariables.sol#L71)
```solidity
function setNonEmptyAlteredNumbers(
```
- Found in src/Trump.sol [Line: 180](../tests/contract-playground/src/Trump.sol#L180)
```solidity
function name() public pure returns (string memory) {
```
- Found in src/Trump.sol [Line: 184](../tests/contract-playground/src/Trump.sol#L184)
```solidity
function symbol() public pure returns (string memory) {
```
- Found in src/Trump.sol [Line: 188](../tests/contract-playground/src/Trump.sol#L188)
```solidity
function decimals() public pure returns (uint8) {
```
- Found in src/UninitializedLocalVariables.sol [Line: 7](../tests/contract-playground/src/UninitializedLocalVariables.sol#L7)
```solidity
function testAllDataTypesBAD() public pure {
```
- Found in src/UninitializedLocalVariables.sol [Line: 23](../tests/contract-playground/src/UninitializedLocalVariables.sol#L23)
```solidity
function testAllDataTypesGOOD() public pure {
```
- Found in src/UninitializedLocalVariables.sol [Line: 41](../tests/contract-playground/src/UninitializedLocalVariables.sol#L41)
```solidity
function testAllDataTypes2() public pure {
```
- Found in src/UninitializedStateVariable.sol [Line: 17](../tests/contract-playground/src/UninitializedStateVariable.sol#L17)
```solidity
function transfer() payable public {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 16](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L16)
```solidity
function onlyOwnerManualRequireCheck() public view {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 22](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L22)
```solidity
function onlyOwnerManualIfRevertCheck() public view {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 45](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L45)
```solidity
function onlyRoleManualRequireCheck() public view {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 53](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L53)
```solidity
function onlyRoleManualIfRevertCheck() public view {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 71](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L71)
```solidity
function onlyOwnerManualCheck() public view {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 77](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L77)
```solidity
function onlyOwnerManualIfRevertCheck() public view {
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 31](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L31)
```solidity
function foo(address bar) public pure {
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 38](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L38)
```solidity
function emoji() public pure {
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 42](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L42)
```solidity
function foo2(address bar) public pure {
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 31](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L31)
```solidity
function foo(address bar) public pure {
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 38](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L38)
```solidity
function foo2(address bar) public pure {
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 11](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L11)
```solidity
function setNumber(uint256 newNumber) public {
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 15](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L15)
```solidity
function increment(uint256 newNumber) public {
```
- Found in src/router/ExternalCalls.sol [Line: 23](../tests/contract-playground/src/router/ExternalCalls.sol#L23)
```solidity
function test(A a) public {
```
- Found in src/router/ExternalCalls.sol [Line: 40](../tests/contract-playground/src/router/ExternalCalls.sol#L40)
```solidity
function test(D d) public view {
```
- Found in src/router/FallbackAndReceiveOverrides.sol [Line: 22](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L22)
```solidity
function test(FakeIt f) public {
```
- Found in src/router/InternalCalls.sol [Line: 31](../tests/contract-playground/src/router/InternalCalls.sol#L31)
```solidity
function main() public {
```
- Found in src/router/InternalCalls.sol [Line: 46](../tests/contract-playground/src/router/InternalCalls.sol#L46)
```solidity
function gcall() public {
```
- Found in src/router/InternalCalls.sol [Line: 96](../tests/contract-playground/src/router/InternalCalls.sol#L96)
```solidity
function aux1(uint256 a) public {}
```
- Found in src/router/InternalCalls.sol [Line: 120](../tests/contract-playground/src/router/InternalCalls.sol#L120)
```solidity
function main() public {
```
- Found in src/router/InternalCalls.sol [Line: 161](../tests/contract-playground/src/router/InternalCalls.sol#L161)
```solidity
function main() public {
```
- Found in src/router/InternalCalls.sol [Line: 169](../tests/contract-playground/src/router/InternalCalls.sol#L169)
```solidity
function main() public {
```
- Found in src/router/InternalCalls.sol [Line: 177](../tests/contract-playground/src/router/InternalCalls.sol#L177)
```solidity
function main() public {
```
- Found in src/router/InternalCalls.sol [Line: 183](../tests/contract-playground/src/router/InternalCalls.sol#L183)
```solidity
function help() public {
```
- Found in src/router/ModifierCalls.sol [Line: 22](../tests/contract-playground/src/router/ModifierCalls.sol#L22)
```solidity
function tree() public modify {
```
- Found in src/router/ModifierCalls.sol [Line: 35](../tests/contract-playground/src/router/ModifierCalls.sol#L35)
```solidity
function main() public B.modify modify {
```
</details>
## L-10: Literal Instead of Constant
Define and use `constant` variables instead of using literals. If the same constant literal value is used multiple times, create a constant state variable and reference it throughout the contract.
<details><summary>81 Found Instances</summary>
- Found in src/AssertStateChange.sol [Line: 9](../tests/contract-playground/src/AssertStateChange.sol#L9)
```solidity
assert((s_a += 1) > 10);
```
- Found in src/AssertStateChange.sol [Line: 14](../tests/contract-playground/src/AssertStateChange.sol#L14)
```solidity
assert(s_a > 10);
```
- Found in src/BooleanEquality.sol [Line: 6](../tests/contract-playground/src/BooleanEquality.sol#L6)
```solidity
return 100;
```
- Found in src/BooleanEquality.sol [Line: 13](../tests/contract-playground/src/BooleanEquality.sol#L13)
```solidity
return 200;
```
- Found in src/BooleanEquality.sol [Line: 15](../tests/contract-playground/src/BooleanEquality.sol#L15)
```solidity
return 130;
```
- Found in src/BooleanEquality.sol [Line: 20](../tests/contract-playground/src/BooleanEquality.sol#L20)
```solidity
return 100;
```
- Found in src/BooleanEquality.sol [Line: 27](../tests/contract-playground/src/BooleanEquality.sol#L27)
```solidity
return 200;
```
- Found in src/BooleanEquality.sol [Line: 29](../tests/contract-playground/src/BooleanEquality.sol#L29)
```solidity
return 130;
```
- Found in src/CacheArrayLength.sol [Line: 26](../tests/contract-playground/src/CacheArrayLength.sol#L26)
```solidity
array[i] = 100;
```
- Found in src/CacheArrayLength.sol [Line: 27](../tests/contract-playground/src/CacheArrayLength.sol#L27)
```solidity
array.push(100);
```
- Found in src/CacheArrayLength.sol [Line: 36](../tests/contract-playground/src/CacheArrayLength.sol#L36)
```solidity
array[i] = 100;
```
- Found in src/CacheArrayLength.sol [Line: 37](../tests/contract-playground/src/CacheArrayLength.sol#L37)
```solidity
array.push(100);
```
- Found in src/Casting.sol [Line: 20](../tests/contract-playground/src/Casting.sol#L20)
```solidity
uint256 a = 0x1234567890abcdef;
```
- Found in src/Casting.sol [Line: 26](../tests/contract-playground/src/Casting.sol#L26)
```solidity
int256 c = -0x1234567890abcdef;
```
- Found in src/Casting.sol [Line: 38](../tests/contract-playground/src/Casting.sol#L38)
```solidity
uint unspecificUint = 0x1234567890abcdef;
```
- Found in src/Casting.sol [Line: 76](../tests/contract-playground/src/Casting.sol#L76)
```solidity
int unspecificInt = -0x1234567890abcdef;
```
- Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 9](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L9)
```solidity
affectedArray = [-1, 5, 2];
```
- Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 14](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L14)
```solidity
unaffectedArray[1] = 5;
```
- Found in src/ConstantsLiterals.sol [Line: 25](../tests/contract-playground/src/ConstantsLiterals.sol#L25)
```solidity
uint multipleUseOfValue = 987;
```
- Found in src/ConstantsLiterals.sol [Line: 26](../tests/contract-playground/src/ConstantsLiterals.sol#L26)
```solidity
multipleUseOfValue = 987;
```
- Found in src/ConstantsLiterals.sol [Line: 27](../tests/contract-playground/src/ConstantsLiterals.sol#L27)
```solidity
uint multipleUseOfValue2 = 9876;
```
- Found in src/ConstantsLiterals.sol [Line: 28](../tests/contract-playground/src/ConstantsLiterals.sol#L28)
```solidity
multipleUseOfValue2 = 9876 + 1;
```
- Found in src/ConstantsLiterals.sol [Line: 29](../tests/contract-playground/src/ConstantsLiterals.sol#L29)
```solidity
address multipleUseOfAddress = 0x95222290DD7278Aa3Ddd389Cc1E1d165CC4BAfe5;
```
- Found in src/ConstantsLiterals.sol [Line: 30](../tests/contract-playground/src/ConstantsLiterals.sol#L30)
```solidity
multipleUseOfAddress = 0x95222290DD7278Aa3Ddd389Cc1E1d165CC4BAfe5;
```
- Found in src/ConstantsLiterals.sol [Line: 31](../tests/contract-playground/src/ConstantsLiterals.sol#L31)
```solidity
bytes32 multipleUseOfBytes32 = 0x8a1b3dbe6301650442bfa765d4de23775fc9a4ec4329ebb5995ec7f1e3777dc4;
```
- Found in src/DangerousStrictEquality2.sol [Line: 6](../tests/contract-playground/src/DangerousStrictEquality2.sol#L6)
```solidity
return address(this).balance == 100 ether;
```
- Found in src/DangerousStrictEquality2.sol [Line: 10](../tests/contract-playground/src/DangerousStrictEquality2.sol#L10)
```solidity
return payable(address(this)).balance == 100 ether;
```
- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 24](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L24)
```solidity
address[3] memory allowed = [address(1), address(2), address(3)];
```
- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 26](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L26)
```solidity
for (uint256 i = 0; i < 3; i++) {
```
- Found in src/DynamicArrayLengthAssignment.sol [Line: 13](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L13)
```solidity
myArray.length = 200;
```
- Found in src/DynamicArrayLengthAssignment.sol [Line: 14](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L14)
```solidity
myArray2[7].length = 200;
```
- Found in src/DynamicArrayLengthAssignment.sol [Line: 17](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L17)
```solidity
myArray.length += 200;
```
- Found in src/FunctionInitializingState.sol [Line: 23](../tests/contract-playground/src/FunctionInitializingState.sol#L23)
```solidity
return 77;
```
- Found in src/FunctionInitializingState.sol [Line: 26](../tests/contract-playground/src/FunctionInitializingState.sol#L26)
```solidity
return 88;
```
- Found in src/FunctionInitializingState.sol [Line: 34](../tests/contract-playground/src/FunctionInitializingState.sol#L34)
```solidity
return 77;
```
- Found in src/FunctionInitializingState.sol [Line: 37](../tests/contract-playground/src/FunctionInitializingState.sol#L37)
```solidity
return 88;
```
- Found in src/FunctionInitializingState.sol [Line: 42](../tests/contract-playground/src/FunctionInitializingState.sol#L42)
```solidity
f = 1e10 * 1e12;
```
- Found in src/FunctionInitializingState.sol [Line: 48](../tests/contract-playground/src/FunctionInitializingState.sol#L48)
```solidity
f = 1e10 * 1e12;
```
- Found in src/IncorrectCaretOperator.sol [Line: 17](../tests/contract-playground/src/IncorrectCaretOperator.sol#L17)
```solidity
uint256 z = s_second^89 + 13;
```
- Found in src/IncorrectCaretOperator.sol [Line: 18](../tests/contract-playground/src/IncorrectCaretOperator.sol#L18)
```solidity
uint256 w = s_second^s_first + 13;
```
- Found in src/MultiplePlaceholders.sol [Line: 22](../tests/contract-playground/src/MultiplePlaceholders.sol#L22)
```solidity
} else if (a + b < 100) {
```
- Found in src/MultiplePlaceholders.sol [Line: 33](../tests/contract-playground/src/MultiplePlaceholders.sol#L33)
```solidity
} else if (a + b < 100) {
```
- Found in src/MultiplePlaceholders.sol [Line: 45](../tests/contract-playground/src/MultiplePlaceholders.sol#L45)
```solidity
} else if (a + b < 100) {
```
- Found in src/PreDeclaredVarUsage.sol [Line: 8](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L8)
```solidity
a = 100;
```
- Found in src/PreDeclaredVarUsage.sol [Line: 9](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L9)
```solidity
uint b = 100;
```
- Found in src/RevertsAndRequriesInLoops.sol [Line: 10](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L10)
```solidity
for (uint256 id = 0; id < 10; ++id) {
```
- Found in src/RevertsAndRequriesInLoops.sol [Line: 17](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L17)
```solidity
for (uint256 id = 0; id < 10; ++id) {
```
- Found in src/RevertsAndRequriesInLoops.sol [Line: 26](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L26)
```solidity
uint256[] memory failedIds = new uint256[](10);
```
- Found in src/RevertsAndRequriesInLoops.sol [Line: 27](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L27)
```solidity
for (uint256 id = 0; id < 10; ++id) {
```
- Found in src/StateVariablesManipulation.sol [Line: 121](../tests/contract-playground/src/StateVariablesManipulation.sol#L121)
```solidity
person = Person("Spiderman", 21);
```
- Found in src/StateVariablesManipulation.sol [Line: 123](../tests/contract-playground/src/StateVariablesManipulation.sol#L123)
```solidity
person2.age = 21;
```
- Found in src/StateVariablesManipulation.sol [Line: 192](../tests/contract-playground/src/StateVariablesManipulation.sol#L192)
```solidity
p.age = 200;
```
- Found in src/StateVariablesManipulation.sol [Line: 202](../tests/contract-playground/src/StateVariablesManipulation.sol#L202)
```solidity
p2.age = 200;
```
- Found in src/StateVariablesManipulation.sol [Line: 233](../tests/contract-playground/src/StateVariablesManipulation.sol#L233)
```solidity
uint256[5][1] memory m_allAges;
```
- Found in src/StateVariablesManipulation.sol [Line: 237](../tests/contract-playground/src/StateVariablesManipulation.sol#L237)
```solidity
m_person = Person("Spiderman", 21);
```
- Found in src/StateVariablesManipulation.sol [Line: 239](../tests/contract-playground/src/StateVariablesManipulation.sol#L239)
```solidity
m_person2.age = 21;
```
- Found in src/StateVariablesManipulation.sol [Line: 244](../tests/contract-playground/src/StateVariablesManipulation.sol#L244)
```solidity
Person memory m_dummy = Person("Spiderman", 21);
```
- Found in src/StateVariablesManipulation.sol [Line: 258](../tests/contract-playground/src/StateVariablesManipulation.sol#L258)
```solidity
uint256[5] storage ageRef1 = allAges[0];
```
- Found in src/StateVariablesManipulation.sol [Line: 264](../tests/contract-playground/src/StateVariablesManipulation.sol#L264)
```solidity
uint256[5] storage ageRef2 = allAges[0];
```
- Found in src/StateVariablesManipulation.sol [Line: 333](../tests/contract-playground/src/StateVariablesManipulation.sol#L333)
```solidity
p.some.push(102);
```
- Found in src/StateVariablesManipulation.sol [Line: 339](../tests/contract-playground/src/StateVariablesManipulation.sol#L339)
```solidity
that.push(102);
```
- Found in src/Trump.sol [Line: 233](../tests/contract-playground/src/Trump.sol#L233)
```solidity
taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
```
- Found in src/Trump.sol [Line: 250](../tests/contract-playground/src/Trump.sol#L250)
```solidity
taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
```
- Found in src/Trump.sol [Line: 306](../tests/contract-playground/src/Trump.sol#L306)
```solidity
uint256 taxWalletShare = amount * _taxWalletPercentage / 100;
```
- Found in src/Trump.sol [Line: 307](../tests/contract-playground/src/Trump.sol#L307)
```solidity
uint256 teamWalletShare = amount * _teamWalletPercentage / 100;
```
- Found in src/UncheckedReturn.sol [Line: 27](../tests/contract-playground/src/UncheckedReturn.sol#L27)
```solidity
UncheckedHelperExternal(address(0x12345)).two();
```
- Found in src/UncheckedReturn.sol [Line: 32](../tests/contract-playground/src/UncheckedReturn.sol#L32)
```solidity
uint256 _answer = UncheckedHelperExternal(address(0x12345)).two();
```
- Found in src/UncheckedReturn.sol [Line: 37](../tests/contract-playground/src/UncheckedReturn.sol#L37)
```solidity
require(UncheckedHelperExternal(address(0x12345)).two() == 2, "Not two");
```
- Found in src/UncheckedReturn.sol [Line: 42](../tests/contract-playground/src/UncheckedReturn.sol#L42)
```solidity
if (UncheckedHelperExternal(address(0x12345)).two() != 2) {
```
- Found in src/UninitializedLocalVariables.sol [Line: 34](../tests/contract-playground/src/UninitializedLocalVariables.sol#L34)
```solidity
0x0000000000000000000000000000000000000001
```
- Found in src/UninitializedLocalVariables.sol [Line: 63](../tests/contract-playground/src/UninitializedLocalVariables.sol#L63)
```solidity
delayedAddress = 0x0000000000000000000000000000000000000001;
```
- Found in src/UninitializedLocalVariables.sol [Line: 67](../tests/contract-playground/src/UninitializedLocalVariables.sol#L67)
```solidity
delayedUintArray[0] = 21;
```
- Found in src/UninitializedLocalVariables.sol [Line: 70](../tests/contract-playground/src/UninitializedLocalVariables.sol#L70)
```solidity
delayedIntArray[0] = -21;
```
- Found in src/WeakRandomness.sol [Line: 25](../tests/contract-playground/src/WeakRandomness.sol#L25)
```solidity
return block.timestamp % 10;
```
- Found in src/WeakRandomness.sol [Line: 35](../tests/contract-playground/src/WeakRandomness.sol#L35)
```solidity
uint256 randomNumber = uint256(blockhash(block.number)) % 10;
```
- Found in src/WeakRandomness.sol [Line: 41](../tests/contract-playground/src/WeakRandomness.sol#L41)
```solidity
return hash % 10;
```
- Found in src/eth2/DepositContract.sol [Line: 113](../tests/contract-playground/src/eth2/DepositContract.sol#L113)
```solidity
abi.encodePacked(sha256(abi.encodePacked(signature[:64])), sha256(abi.encodePacked(signature[64:], bytes32(0))))
```
</details>
## L-11: Empty `require()` / `revert()` Statement
Use descriptive reason strings or custom errors for revert paths.
<details><summary>31 Found Instances</summary>
- Found in src/CallGraphTests.sol [Line: 7](../tests/contract-playground/src/CallGraphTests.sol#L7)
```solidity
require(msg.sender == address(0x11));
```
- Found in src/CallGraphTests.sol [Line: 28](../tests/contract-playground/src/CallGraphTests.sol#L28)
```solidity
revert();
```
- Found in src/CallGraphTests.sol [Line: 50](../tests/contract-playground/src/CallGraphTests.sol#L50)
```solidity
revert();
```
- Found in src/CallGraphTests.sol [Line: 65](../tests/contract-playground/src/CallGraphTests.sol#L65)
```solidity
require(msg.sender == address(0x11));
```
- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 31](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L31)
```solidity
require(isLegit);
```
- Found in src/DeprecatedOZFunctions.sol [Line: 37](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L37)
```solidity
require(token.approve(spender, value));
```
- Found in src/DeprecatedOZFunctions.sol [Line: 40](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L40)
```solidity
revert();
```
- Found in src/EmitAfterExternalCall.sol [Line: 18](../tests/contract-playground/src/EmitAfterExternalCall.sol#L18)
```solidity
require(actor != address(0));
```
- Found in src/ExternalCalls.sol [Line: 72](../tests/contract-playground/src/ExternalCalls.sol#L72)
```solidity
revert();
```
- Found in src/IncorrectModifier.sol [Line: 49](../tests/contract-playground/src/IncorrectModifier.sol#L49)
```solidity
revert();
```
- Found in src/LocalVariableShadow.sol [Line: 12](../tests/contract-playground/src/LocalVariableShadow.sol#L12)
```solidity
require(owner == msg.sender);
```
- Found in src/LocalVariableShadow.sol [Line: 19](../tests/contract-playground/src/LocalVariableShadow.sol#L19)
```solidity
require(owner == msg.sender);
```
- Found in src/LocalVariableShadow.sol [Line: 33](../tests/contract-playground/src/LocalVariableShadow.sol#L33)
```solidity
require(roll == msg.sender);
```
- Found in src/MultiplePlaceholders.sol [Line: 23](../tests/contract-playground/src/MultiplePlaceholders.sol#L23)
```solidity
revert();
```
- Found in src/MultiplePlaceholders.sol [Line: 34](../tests/contract-playground/src/MultiplePlaceholders.sol#L34)
```solidity
revert();
```
- Found in src/MultiplePlaceholders.sol [Line: 46](../tests/contract-playground/src/MultiplePlaceholders.sol#L46)
```solidity
revert();
```
- Found in src/RevertsAndRequriesInLoops.sol [Line: 19](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L19)
```solidity
revert();
```
- Found in src/SendEtherNoChecks.sol [Line: 12](../tests/contract-playground/src/SendEtherNoChecks.sol#L12)
```solidity
revert();
```
- Found in src/SendEtherNoChecks.sol [Line: 27](../tests/contract-playground/src/SendEtherNoChecks.sol#L27)
```solidity
require(msg.sender == address(0x11));
```
- Found in src/SendEtherNoChecks.sol [Line: 43](../tests/contract-playground/src/SendEtherNoChecks.sol#L43)
```solidity
revert();
```
- Found in src/SendEtherNoChecksLibImport.sol [Line: 12](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L12)
```solidity
revert();
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 17](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L17)
```solidity
require(actor != address(0));
```
- Found in src/StateShadowing.sol [Line: 8](../tests/contract-playground/src/StateShadowing.sol#L8)
```solidity
require(owner == msg.sender);
```
- Found in src/Trump.sol [Line: 240](../tests/contract-playground/src/Trump.sol#L240)
```solidity
require(!isContract(to));
```
- Found in src/ZeroAddressCheck.sol [Line: 13](../tests/contract-playground/src/ZeroAddressCheck.sol#L13)
```solidity
if (newAddr == address(0)) revert();
```
- Found in src/ZeroAddressCheck.sol [Line: 23](../tests/contract-playground/src/ZeroAddressCheck.sol#L23)
```solidity
if (newAddr == address(0)) revert();
```
- Found in src/ZeroAddressCheck.sol [Line: 38](../tests/contract-playground/src/ZeroAddressCheck.sol#L38)
```solidity
if (address(newToken) == address(0)) revert();
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 35](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L35)
```solidity
require(bar != address(0));
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 56](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L56)
```solidity
require(bar != address(0));
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 35](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L35)
```solidity
require(bar != address(0));
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 53](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L53)
```solidity
require(bar != address(0));
```
</details>
## L-12: `nonReentrant` is Not the First Modifier
To protect against reentrancy in other modifiers, the `nonReentrant` modifier should be the first modifier in the list of modifiers.
<details><summary>2 Found Instances</summary>
- Found in src/AdminContract.sol [Line: 10](../tests/contract-playground/src/AdminContract.sol#L10)
```solidity
function setOwner(address _owner) external onlyOwner nonReentrant {
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 28](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L28)
```solidity
function setOwner(address _owner) external onlyOwner nonReentrant {
```
</details>
## L-13: Using `block.timestamp` for swap deadline offers no protection
In the PoS model, proposers know well in advance if they will propose one or consecutive blocks ahead of time. In such a scenario, a malicious validator can hold back the transaction and execute it at a more favourable block number.Consider allowing function caller to specify swap deadline input parameter.
<details><summary>17 Found Instances</summary>
- Found in src/Trump.sol [Line: 290](../tests/contract-playground/src/Trump.sol#L290)
```solidity
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 23](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L23)
```solidity
router1.swapExactTokensForTokens(amountIn, amountOutMin, path, to, block.timestamp);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 24](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L24)
```solidity
router1.swapTokensForExactTokens(amountOut, amountInMax, path, to, block.timestamp);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 25](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L25)
```solidity
router1.swapExactETHForTokens(amountOutMin, path, to, block.timestamp);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 26](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L26)
```solidity
router1.swapTokensForExactETH(amountOut, amountInMax, path, to, block.timestamp);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 27](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L27)
```solidity
router1.swapExactTokensForETH(amountIn, amountOutMin, path, to, block.timestamp);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 31](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L31)
```solidity
router2.swapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn, amountOutMin, path, to, block.timestamp);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 32](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L32)
```solidity
router2.swapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin, path, to, block.timestamp);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 33](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L33)
```solidity
router2.swapExactTokensForETHSupportingFeeOnTransferTokens(amountIn, amountOutMin, path, to, block.timestamp);
```
- Found in src/uniswap/UniswapV3Swapper.sol [Line: 52](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L52)
```solidity
ExactInputSingleParams memory exactInputSingleParams = ExactInputSingleParams(
```
- Found in src/uniswap/UniswapV3Swapper.sol [Line: 55](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L55)
```solidity
exactInputSingleParams = ExactInputSingleParams({
```
- Found in src/uniswap/UniswapV3Swapper.sol [Line: 66](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L66)
```solidity
ExactInputParams memory exactInputParams = ExactInputParams(
```
- Found in src/uniswap/UniswapV3Swapper.sol [Line: 69](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L69)
```solidity
exactInputParams = ExactInputParams({
```
- Found in src/uniswap/UniswapV3Swapper.sol [Line: 77](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L77)
```solidity
ExactOutputSingleParams memory exactOutputSingleParams = ExactOutputSingleParams(
```
- Found in src/uniswap/UniswapV3Swapper.sol [Line: 80](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L80)
```solidity
exactOutputSingleParams = ExactOutputSingleParams({
```
- Found in src/uniswap/UniswapV3Swapper.sol [Line: 91](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L91)
```solidity
ExactOutputParams memory exactOutputParams = ExactOutputParams(
```
- Found in src/uniswap/UniswapV3Swapper.sol [Line: 94](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L94)
```solidity
exactOutputParams = ExactOutputParams({
```
</details>
## L-14: Unsafe `ERC721::_mint()`
Using `ERC721::_mint()` can mint ERC721 tokens to addresses which don't support ERC721 tokens. Use `_safeMint()` instead of `_mint()` for ERC721 tokens.
<details><summary>1 Found Instances</summary>
- Found in src/UnsafeERC721Mint.sol [Line: 12](../tests/contract-playground/src/UnsafeERC721Mint.sol#L12)
```solidity
_mint(to, tokenId);
```
</details>
## L-15: PUSH0 Opcode
Solc compiler version 0.8.20 switches the default target EVM version to Shanghai, which means that the generated bytecode will include PUSH0 opcodes. Be sure to select the appropriate EVM version in case you intend to deploy on a chain other than mainnet like L2 chains that may not support PUSH0, otherwise deployment of your contracts will fail.
<details><summary>45 Found Instances</summary>
- Found in src/AdminContract.sol [Line: 2](../tests/contract-playground/src/AdminContract.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/AssertStateChange.sol [Line: 2](../tests/contract-playground/src/AssertStateChange.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/CacheArrayLength.sol [Line: 2](../tests/contract-playground/src/CacheArrayLength.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/ContractLocksEther.sol [Line: 2](../tests/contract-playground/src/ContractLocksEther.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/ContractWithTodo.sol [Line: 2](../tests/contract-playground/src/ContractWithTodo.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/CostlyOperationsInsideLoops.sol [Line: 2](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/Counter.sol [Line: 2](../tests/contract-playground/src/Counter.sol#L2)
```solidity
pragma solidity ^0.8.13;
```
- Found in src/CrazyPragma.sol [Line: 2](../tests/contract-playground/src/CrazyPragma.sol#L2)
```solidity
pragma solidity >=0.8.19 <0.9.1;
```
- Found in src/DangerousStrictEquality2.sol [Line: 2](../tests/contract-playground/src/DangerousStrictEquality2.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 2](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L2)
```solidity
pragma solidity ^0.8;
```
- Found in src/DeletionNestedMappingStructureContract.sol [Line: 2](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/DeprecatedOZFunctions.sol [Line: 2](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/FunctionInitializingState.sol [Line: 2](../tests/contract-playground/src/FunctionInitializingState.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/FunctionSignatureCollision.sol [Line: 2](../tests/contract-playground/src/FunctionSignatureCollision.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/InconsistentUints.sol [Line: 1](../tests/contract-playground/src/InconsistentUints.sol#L1)
```solidity
pragma solidity ^0.8.24;
```
- Found in src/IncorrectERC20.sol [Line: 2](../tests/contract-playground/src/IncorrectERC20.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/IncorrectERC721.sol [Line: 2](../tests/contract-playground/src/IncorrectERC721.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/KeccakContract.sol [Line: 2](../tests/contract-playground/src/KeccakContract.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/MsgValueInLoop.sol [Line: 2](../tests/contract-playground/src/MsgValueInLoop.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/OnlyLibrary.sol [Line: 2](../tests/contract-playground/src/OnlyLibrary.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/OutOfOrderRetryable.sol [Line: 2](../tests/contract-playground/src/OutOfOrderRetryable.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/ReturnBomb.sol [Line: 2](../tests/contract-playground/src/ReturnBomb.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/StateVariables.sol [Line: 2](../tests/contract-playground/src/StateVariables.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/StateVariablesManipulation.sol [Line: 2](../tests/contract-playground/src/StateVariablesManipulation.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/StorageConditionals.sol [Line: 2](../tests/contract-playground/src/StorageConditionals.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/T11sTranferer.sol [Line: 2](../tests/contract-playground/src/T11sTranferer.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/TautologicalCompare.sol [Line: 2](../tests/contract-playground/src/TautologicalCompare.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/Trump.sol [Line: 16](../tests/contract-playground/src/Trump.sol#L16)
```solidity
pragma solidity 0.8.20;
```
- Found in src/TxOriginUsedForAuth.sol [Line: 2](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L2)
```solidity
pragma solidity ^0.8.20;
```
- Found in src/UnsafeERC721Mint.sol [Line: 2](../tests/contract-playground/src/UnsafeERC721Mint.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/UnusedStateVariables.sol [Line: 2](../tests/contract-playground/src/UnusedStateVariables.sol#L2)
```solidity
pragma solidity ^0.8.20;
```
- Found in src/VoidConstructor.sol [Line: 2](../tests/contract-playground/src/VoidConstructor.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/WeakRandomness.sol [Line: 2](../tests/contract-playground/src/WeakRandomness.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L6)
```solidity
pragma solidity ^0.8.18;
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L6)
```solidity
pragma solidity >=0.8.0 <0.8.25;
```
- Found in src/eth2/DepositContract.sol [Line: 12](../tests/contract-playground/src/eth2/DepositContract.sol#L12)
```solidity
pragma solidity 0.8.20;
```
- Found in src/inheritance/ExtendedInheritance.sol [Line: 2](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/inheritance/IContractInheritance.sol [Line: 2](../tests/contract-playground/src/inheritance/IContractInheritance.sol#L2)
```solidity
pragma solidity >=0.8.0;
```
- Found in src/inheritance/InheritanceBase.sol [Line: 2](../tests/contract-playground/src/inheritance/InheritanceBase.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/nested/1/Nested.sol [Line: 5](../tests/contract-playground/src/nested/1/Nested.sol#L5)
```solidity
pragma solidity 0.8.20;
```
- Found in src/nested/2/Nested.sol [Line: 5](../tests/contract-playground/src/nested/2/Nested.sol#L5)
```solidity
pragma solidity 0.8.20;
```
- Found in src/nested_mappings/LaterVersion.sol [Line: 2](../tests/contract-playground/src/nested_mappings/LaterVersion.sol#L2)
```solidity
pragma solidity ^0.8.0;
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 2](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 2](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L2)
```solidity
pragma solidity 0.8.20;
```
- Found in src/uniswap/UniswapV3Swapper.sol [Line: 2](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L2)
```solidity
pragma solidity 0.8.20;
```
</details>
## L-16: Modifier Invoked Only Once
Consider removing the modifier or inlining the logic into the calling function.
<details><summary>17 Found Instances</summary>
- Found in src/BuiltinSymbolShadow.sol [Line: 17](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L17)
```solidity
modifier blockhash() {
```
- Found in src/CallGraphTests.sol [Line: 10](../tests/contract-playground/src/CallGraphTests.sol#L10)
```solidity
modifier passThroughNinthFloor1() {
```
- Found in src/CallGraphTests.sol [Line: 32](../tests/contract-playground/src/CallGraphTests.sol#L32)
```solidity
modifier passThroughNinthFloor2(address x) {
```
- Found in src/CallGraphTests.sol [Line: 54](../tests/contract-playground/src/CallGraphTests.sol#L54)
```solidity
modifier passThroughNinthFloor3(address x) {
```
- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 23](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L23)
```solidity
modifier isAllowed(address to) {
```
- Found in src/InternalFunctions.sol [Line: 18](../tests/contract-playground/src/InternalFunctions.sol#L18)
```solidity
modifier onlyOwner() {
```
- Found in src/OnceModifierExample.sol [Line: 6](../tests/contract-playground/src/OnceModifierExample.sol#L6)
```solidity
modifier onlyOnce() {
```
- Found in src/SendEtherNoChecks.sol [Line: 16](../tests/contract-playground/src/SendEtherNoChecks.sol#L16)
```solidity
modifier mod1(address x) {
```
- Found in src/SendEtherNoChecks.sol [Line: 47](../tests/contract-playground/src/SendEtherNoChecks.sol#L47)
```solidity
modifier mod1(address x) {
```
- Found in src/SendEtherNoChecks.sol [Line: 70](../tests/contract-playground/src/SendEtherNoChecks.sol#L70)
```solidity
modifier mod1(address x) {
```
- Found in src/SendEtherNoChecks.sol [Line: 93](../tests/contract-playground/src/SendEtherNoChecks.sol#L93)
```solidity
modifier mod1(address x) {
```
- Found in src/StateShadowing.sol [Line: 7](../tests/contract-playground/src/StateShadowing.sol#L7)
```solidity
modifier isOwner(){
```
- Found in src/Trump.sol [Line: 162](../tests/contract-playground/src/Trump.sol#L162)
```solidity
modifier lockTheSwap {
```
- Found in src/UnprotectedInitialize.sol [Line: 15](../tests/contract-playground/src/UnprotectedInitialize.sol#L15)
```solidity
modifier firstTimeInitializing() {
```
- Found in src/router/ModifierCalls.sol [Line: 5](../tests/contract-playground/src/router/ModifierCalls.sol#L5)
```solidity
modifier modify() virtual;
```
- Found in src/router/ModifierCalls.sol [Line: 31](../tests/contract-playground/src/router/ModifierCalls.sol#L31)
```solidity
modifier modify() override {
```
- Found in src/router/ModifierCalls.sol [Line: 42](../tests/contract-playground/src/router/ModifierCalls.sol#L42)
```solidity
modifier modify() {
```
</details>
## L-17: Empty Block
Consider removing empty blocks.
<details><summary>56 Found Instances</summary>
- Found in src/AderynIgnoreCustomDetectors.sol [Line: 7](../tests/contract-playground/src/AderynIgnoreCustomDetectors.sol#L7)
```solidity
function f1() public {
```
- Found in src/AdminContract.sol [Line: 14](../tests/contract-playground/src/AdminContract.sol#L14)
```solidity
function someOtherImportantThing() external nonReentrant onlyOwner {
```
- Found in src/BuiltinSymbolShadow.sol [Line: 8](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L8)
```solidity
function assert(bool condition) public {}
```
- Found in src/CacheArrayLength.sol [Line: 17](../tests/contract-playground/src/CacheArrayLength.sol#L17)
```solidity
function c2() external view {
```
- Found in src/CacheArrayLength.sol [Line: 42](../tests/contract-playground/src/CacheArrayLength.sol#L42)
```solidity
function c5() external view {
```
- Found in src/CallGraphTests.sol [Line: 16](../tests/contract-playground/src/CallGraphTests.sol#L16)
```solidity
function enterTenthFloor1() external passThroughNinthFloor1() {
```
- Found in src/CallGraphTests.sol [Line: 38](../tests/contract-playground/src/CallGraphTests.sol#L38)
```solidity
function enterTenthFloor2(address x) external passThroughNinthFloor2(x) {
```
- Found in src/ContractWithTodo.sol [Line: 7](../tests/contract-playground/src/ContractWithTodo.sol#L7)
```solidity
function createTask(string memory _content) private {
```
- Found in src/ContractWithTodo.sol [Line: 13](../tests/contract-playground/src/ContractWithTodo.sol#L13)
```solidity
function toggleCompleted(uint _taskId) public {
```
- Found in src/EmptyBlocks.sol [Line: 30](../tests/contract-playground/src/EmptyBlocks.sol#L30)
```solidity
{
```
- Found in src/EmptyBlocks.sol [Line: 38](../tests/contract-playground/src/EmptyBlocks.sol#L38)
```solidity
{
```
- Found in src/EmptyBlocks.sol [Line: 49](../tests/contract-playground/src/EmptyBlocks.sol#L49)
```solidity
{
```
- Found in src/EmptyBlocks.sol [Line: 63](../tests/contract-playground/src/EmptyBlocks.sol#L63)
```solidity
function emptyFunction() external {
```
- Found in src/EmptyBlocks.sol [Line: 67](../tests/contract-playground/src/EmptyBlocks.sol#L67)
```solidity
function emptyFunctionWithComment() external {
```
- Found in src/EmptyBlocks.sol [Line: 73](../tests/contract-playground/src/EmptyBlocks.sol#L73)
```solidity
function emptyBlockInsideNormalFunction() external {
```
- Found in src/EmptyBlocks.sol [Line: 81](../tests/contract-playground/src/EmptyBlocks.sol#L81)
```solidity
function emptyBlockWithCommentInsideNormalFunction() external {
```
- Found in src/FunctionSignatureCollision.sol [Line: 7](../tests/contract-playground/src/FunctionSignatureCollision.sol#L7)
```solidity
function withdraw(uint256) external {
```
- Found in src/FunctionSignatureCollision.sol [Line: 13](../tests/contract-playground/src/FunctionSignatureCollision.sol#L13)
```solidity
function OwnerTransferV7b711143(uint256) external {
```
- Found in src/OnceModifierExample.sol [Line: 10](../tests/contract-playground/src/OnceModifierExample.sol#L10)
```solidity
function perform() external onlyOnce {
```
- Found in src/OutOfOrderRetryable.sol [Line: 193](../tests/contract-playground/src/OutOfOrderRetryable.sol#L193)
```solidity
function _free_rewards(address user) internal {
```
- Found in src/SendEtherNoChecks.sol [Line: 53](../tests/contract-playground/src/SendEtherNoChecks.sol#L53)
```solidity
function func1(address x) external mod1(x) {
```
- Found in src/SendEtherNoChecks.sol [Line: 77](../tests/contract-playground/src/SendEtherNoChecks.sol#L77)
```solidity
function func1(address x) external mod1(x) {
```
- Found in src/SendEtherNoChecks.sol [Line: 99](../tests/contract-playground/src/SendEtherNoChecks.sol#L99)
```solidity
function func1(address x) external mod1(x) {
```
- Found in src/TautologyOrContradiction.sol [Line: 9](../tests/contract-playground/src/TautologyOrContradiction.sol#L9)
```solidity
function makeUselessComparisons() external view {
```
- Found in src/UncheckedSend.sol [Line: 27](../tests/contract-playground/src/UncheckedSend.sol#L27)
```solidity
function doSomething(bool success) internal pure {
```
- Found in src/UnprotectedInitialize.sol [Line: 43](../tests/contract-playground/src/UnprotectedInitialize.sol#L43)
```solidity
function initializeWithModifierNamedInitiliazer() external initializer {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 11](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L11)
```solidity
function onlyOwnerFunction() external onlyOwner {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 30](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L30)
```solidity
function transferOwnershipFunction(address newOwner) external {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 38](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L38)
```solidity
function onlyRoleFunction() external onlyRole(ROLE) {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 61](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L61)
```solidity
function grantRoleFunction(address account) external {
```
- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 85](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L85)
```solidity
function transferOwnershipFunction(address newOwner) external {
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 11](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L11)
```solidity
function setNumber(uint256 newNumber) public {
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 32](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L32)
```solidity
function someOtherImportantThing() external nonReentrant onlyOwner {
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 40](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L40)
```solidity
function setOwner(address _owner) external {
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 44](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L44)
```solidity
function someOtherImportantThing() external {
```
- Found in src/router/ExternalCalls.sol [Line: 13](../tests/contract-playground/src/router/ExternalCalls.sol#L13)
```solidity
function abc() external virtual returns (uint256) {}
```
- Found in src/router/ExternalCalls.sol [Line: 17](../tests/contract-playground/src/router/ExternalCalls.sol#L17)
```solidity
function abc() public override returns (uint256) {}
```
- Found in src/router/InternalCalls.sol [Line: 8](../tests/contract-playground/src/router/InternalCalls.sol#L8)
```solidity
function help1() private {}
```
- Found in src/router/InternalCalls.sol [Line: 23](../tests/contract-playground/src/router/InternalCalls.sol#L23)
```solidity
function help2() internal virtual {}
```
- Found in src/router/InternalCalls.sol [Line: 38](../tests/contract-playground/src/router/InternalCalls.sol#L38)
```solidity
function help2() internal override {}
```
- Found in src/router/InternalCalls.sol [Line: 40](../tests/contract-playground/src/router/InternalCalls.sol#L40)
```solidity
function g(Orange memory f) public virtual {}
```
- Found in src/router/InternalCalls.sol [Line: 44](../tests/contract-playground/src/router/InternalCalls.sol#L44)
```solidity
function g(Basic2.Orange memory f) public override {}
```
- Found in src/router/InternalCalls.sol [Line: 54](../tests/contract-playground/src/router/InternalCalls.sol#L54)
```solidity
function live() public virtual {}
```
- Found in src/router/InternalCalls.sol [Line: 84](../tests/contract-playground/src/router/InternalCalls.sol#L84)
```solidity
function live() public virtual override {}
```
- Found in src/router/InternalCalls.sol [Line: 96](../tests/contract-playground/src/router/InternalCalls.sol#L96)
```solidity
function aux1(uint256 a) public {}
```
- Found in src/router/InternalCalls.sol [Line: 98](../tests/contract-playground/src/router/InternalCalls.sol#L98)
```solidity
function aux2(uint256 a) internal {}
```
- Found in src/router/InternalCalls.sol [Line: 111](../tests/contract-playground/src/router/InternalCalls.sol#L111)
```solidity
function ext1(uint256 a) external {}
```
- Found in src/router/InternalCalls.sol [Line: 113](../tests/contract-playground/src/router/InternalCalls.sol#L113)
```solidity
function ext2(uint256 a) public {}
```
- Found in src/router/InternalCalls.sol [Line: 136](../tests/contract-playground/src/router/InternalCalls.sol#L136)
```solidity
function priv() private {}
```
- Found in src/router/InternalCalls.sol [Line: 142](../tests/contract-playground/src/router/InternalCalls.sol#L142)
```solidity
function d() external virtual returns (uint256, bool, uint256) {}
```
- Found in src/router/InternalCalls.sol [Line: 167](../tests/contract-playground/src/router/InternalCalls.sol#L167)
```solidity
function free(uint256 x) external {}
```
- Found in src/router/InternalCalls.sol [Line: 175](../tests/contract-playground/src/router/InternalCalls.sol#L175)
```solidity
function free(string memory x) public {}
```
- Found in src/router/ModifierCalls.sol [Line: 7](../tests/contract-playground/src/router/ModifierCalls.sol#L7)
```solidity
function geez() public modify {
```
- Found in src/router/ModifierCalls.sol [Line: 22](../tests/contract-playground/src/router/ModifierCalls.sol#L22)
```solidity
function tree() public modify {
```
- Found in src/router/ModifierCalls.sol [Line: 46](../tests/contract-playground/src/router/ModifierCalls.sol#L46)
```solidity
function show(uint256 a) internal modify {
```
- Found in src/router/VarOverridesFunction.sol [Line: 5](../tests/contract-playground/src/router/VarOverridesFunction.sol#L5)
```solidity
function mercy() external virtual returns (uint256) {
```
</details>
## L-18: Large Numeric Literal
Large literal values multiples of 10000 can be replaced with scientific notation.Use `e` notation, for example: `1e18`, instead of its full numeric value.
<details><summary>27 Found Instances</summary>
- Found in src/HugeConstants.sol [Line: 6](../tests/contract-playground/src/HugeConstants.sol#L6)
```solidity
uint256 constant public HUGE_NUMBER_1 = 100000000000000000000000;
```
- Found in src/HugeConstants.sol [Line: 7](../tests/contract-playground/src/HugeConstants.sol#L7)
```solidity
uint256 constant public HUGE_NUMBER_2 = 10000000000000000000000;
```
- Found in src/HugeConstants.sol [Line: 8](../tests/contract-playground/src/HugeConstants.sol#L8)
```solidity
uint256 constant public HUGE_NUMBER_3 = 1000000000000000000000;
```
- Found in src/HugeConstants.sol [Line: 9](../tests/contract-playground/src/HugeConstants.sol#L9)
```solidity
uint256 constant public HUGE_NUMBER_4 = 100000000000000000000;
```
- Found in src/HugeConstants.sol [Line: 10](../tests/contract-playground/src/HugeConstants.sol#L10)
```solidity
uint256 constant public HUGE_NUMBER_5 = 10000000000000000000;
```
- Found in src/HugeConstants.sol [Line: 11](../tests/contract-playground/src/HugeConstants.sol#L11)
```solidity
uint256 constant public HUGE_NUMBER_6 = 1000000000000000000;
```
- Found in src/HugeConstants.sol [Line: 12](../tests/contract-playground/src/HugeConstants.sol#L12)
```solidity
uint256 constant public HUGE_NUMBER_7 = 100000000000000000;
```
- Found in src/HugeConstants.sol [Line: 13](../tests/contract-playground/src/HugeConstants.sol#L13)
```solidity
uint256 constant public HUGE_NUMBER_8 = 10000000000000000;
```
- Found in src/HugeConstants.sol [Line: 14](../tests/contract-playground/src/HugeConstants.sol#L14)
```solidity
uint256 constant public HUGE_NUMBER_9 = 1000000000000000;
```
- Found in src/HugeConstants.sol [Line: 15](../tests/contract-playground/src/HugeConstants.sol#L15)
```solidity
uint256 constant public HUGE_NUMBER_10 = 100000000000000;
```
- Found in src/HugeConstants.sol [Line: 16](../tests/contract-playground/src/HugeConstants.sol#L16)
```solidity
uint256 constant public HUGE_NUMBER_11 = 10000000000000;
```
- Found in src/HugeConstants.sol [Line: 17](../tests/contract-playground/src/HugeConstants.sol#L17)
```solidity
uint256 constant public HUGE_NUMBER_12 = 1000000000000;
```
- Found in src/HugeConstants.sol [Line: 18](../tests/contract-playground/src/HugeConstants.sol#L18)
```solidity
uint256 constant public HUGE_NUMBER_13 = 100000000000;
```
- Found in src/HugeConstants.sol [Line: 19](../tests/contract-playground/src/HugeConstants.sol#L19)
```solidity
uint256 constant public HUGE_NUMBER_14 = 10000000000;
```
- Found in src/HugeConstants.sol [Line: 20](../tests/contract-playground/src/HugeConstants.sol#L20)
```solidity
uint256 constant public HUGE_NUMBER_15 = 1000000000;
```
- Found in src/HugeConstants.sol [Line: 21](../tests/contract-playground/src/HugeConstants.sol#L21)
```solidity
uint256 constant public HUGE_NUMBER_16 = 100000000;
```
- Found in src/HugeConstants.sol [Line: 22](../tests/contract-playground/src/HugeConstants.sol#L22)
```solidity
uint256 constant public HUGE_NUMBER_17 = 10000000;
```
- Found in src/HugeConstants.sol [Line: 23](../tests/contract-playground/src/HugeConstants.sol#L23)
```solidity
uint256 constant public HUGE_NUMBER_18 = 1000000;
```
- Found in src/HugeConstants.sol [Line: 24](../tests/contract-playground/src/HugeConstants.sol#L24)
```solidity
uint256 constant public HUGE_NUMBER_19 = 100000;
```
- Found in src/HugeConstants.sol [Line: 25](../tests/contract-playground/src/HugeConstants.sol#L25)
```solidity
uint256 constant public HUGE_NUMBER_20 = 10000;
```
- Found in src/HugeConstants.sol [Line: 31](../tests/contract-playground/src/HugeConstants.sol#L31)
```solidity
uint256 constant public HUGE_NUMBER_24_UNDERSCORES = 1_000_000_000_000_000_000_000;
```
- Found in src/HugeConstants.sol [Line: 32](../tests/contract-playground/src/HugeConstants.sol#L32)
```solidity
uint256 constant public HUGE_NUMBER_25_UNDERSCORES = 10_000;
```
- Found in src/IncorrectERC20.sol [Line: 8](../tests/contract-playground/src/IncorrectERC20.sol#L8)
```solidity
uint256 public totalSupply = 1000000;
```
- Found in src/IncorrectERC20.sol [Line: 51](../tests/contract-playground/src/IncorrectERC20.sol#L51)
```solidity
uint256 private _totalSupply = 1000000 * 10 ** uint(decimals);
```
- Found in src/Trump.sol [Line: 145](../tests/contract-playground/src/Trump.sol#L145)
```solidity
uint256 private constant _tTotal = 47000000 * 10**_decimals;
```
- Found in src/Trump.sol [Line: 148](../tests/contract-playground/src/Trump.sol#L148)
```solidity
uint256 public _maxTxAmount = 470000 * 10**_decimals;
```
- Found in src/Trump.sol [Line: 151](../tests/contract-playground/src/Trump.sol#L151)
```solidity
uint256 public _maxTaxSwap= 470000 * 10**_decimals;
```
</details>
## L-19: Internal Function Used Only Once
Instead of separating the logic into a separate function, consider inlining the logic into the calling function. This can reduce the number of function calls and improve readability.
<details><summary>22 Found Instances</summary>
- Found in src/CallGraphTests.sol [Line: 6](../tests/contract-playground/src/CallGraphTests.sol#L6)
```solidity
function visitEighthFloor1() internal {
```
- Found in src/CallGraphTests.sol [Line: 25](../tests/contract-playground/src/CallGraphTests.sol#L25)
```solidity
function visitEighthFloor2(address x) internal {
```
- Found in src/CallGraphTests.sol [Line: 47](../tests/contract-playground/src/CallGraphTests.sol#L47)
```solidity
function visitEighthFloor3(address x) internal {
```
- Found in src/CallGraphTests.sol [Line: 64](../tests/contract-playground/src/CallGraphTests.sol#L64)
```solidity
function visitSeventhFloor3() internal {
```
- Found in src/ConstantFuncsAssembly.sol [Line: 26](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L26)
```solidity
function useAssembly() internal pure returns (uint256) {
```
- Found in src/InternalFunctions.sol [Line: 28](../tests/contract-playground/src/InternalFunctions.sol#L28)
```solidity
function internalSet2(uint256 _newValue) internal {
```
- Found in src/MsgValueInLoop.sol [Line: 43](../tests/contract-playground/src/MsgValueInLoop.sol#L43)
```solidity
function addToBal(address[] memory receivers, uint256 index) internal {
```
- Found in src/MsgValueInLoop.sol [Line: 60](../tests/contract-playground/src/MsgValueInLoop.sol#L60)
```solidity
function addToBal(address[] memory receivers, uint256 index) internal {
```
- Found in src/MsgValueInLoop.sol [Line: 77](../tests/contract-playground/src/MsgValueInLoop.sol#L77)
```solidity
function addToBal(address[] memory receivers, uint256 index) internal {
```
- Found in src/SendEtherNoChecks.sol [Line: 9](../tests/contract-playground/src/SendEtherNoChecks.sol#L9)
```solidity
function callAndSendNativeEth(address x) internal {
```
- Found in src/SendEtherNoChecks.sol [Line: 26](../tests/contract-playground/src/SendEtherNoChecks.sol#L26)
```solidity
function func2() internal view {
```
- Found in src/SendEtherNoChecks.sol [Line: 40](../tests/contract-playground/src/SendEtherNoChecks.sol#L40)
```solidity
function callAndSendNativeEth(address x) internal {
```
- Found in src/SendEtherNoChecks.sol [Line: 66](../tests/contract-playground/src/SendEtherNoChecks.sol#L66)
```solidity
function transferBalance(address x) internal {
```
- Found in src/SendEtherNoChecks.sol [Line: 88](../tests/contract-playground/src/SendEtherNoChecks.sol#L88)
```solidity
function sendBalance(address x) internal {
```
- Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 26](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L26)
```solidity
function callSecretFunc() internal {
```
- Found in src/StorageParameters.sol [Line: 17](../tests/contract-playground/src/StorageParameters.sol#L17)
```solidity
function editStorage(uint[1] storage arr) internal {
```
- Found in src/Trump.sol [Line: 46](../tests/contract-playground/src/Trump.sol#L46)
```solidity
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
```
- Found in src/Trump.sol [Line: 65](../tests/contract-playground/src/Trump.sol#L65)
```solidity
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
```
- Found in src/UncheckedSend.sol [Line: 27](../tests/contract-playground/src/UncheckedSend.sol#L27)
```solidity
function doSomething(bool success) internal pure {
```
- Found in src/router/InternalCalls.sol [Line: 18](../tests/contract-playground/src/router/InternalCalls.sol#L18)
```solidity
function help1() internal virtual {
```
- Found in src/router/InternalCalls.sol [Line: 23](../tests/contract-playground/src/router/InternalCalls.sol#L23)
```solidity
function help2() internal virtual {}
```
- Found in src/router/InternalCalls.sol [Line: 38](../tests/contract-playground/src/router/InternalCalls.sol#L38)
```solidity
function help2() internal override {}
```
</details>
## L-20: Contract has TODO Comments
Contract contains comments with TODOS. Consider implementing or removing them.
<details><summary>3 Found Instances</summary>
- Found in src/ContractWithTodo.sol [Line: 4](../tests/contract-playground/src/ContractWithTodo.sol#L4)
```solidity
contract TodoList {
```
- Found in src/Counter.sol [Line: 4](../tests/contract-playground/src/Counter.sol#L4)
```solidity
contract Counter {
```
- Found in src/TautologicalCompare.sol [Line: 4](../tests/contract-playground/src/TautologicalCompare.sol#L4)
```solidity
contract TautologicalCompare {
```
</details>
## L-21: Inconsistent uint256/uint (or) int256/int types
Inconsistency in declaring uint256/uint (or) int256/int variables within a contract. Use explicit size declarations (uint256 or int256). Consider keeping the naming convention consistent in a given contract. Explicit size declarations are preferred (uint256, int256) over implicit ones (uint, int) to avoid confusion.
<details><summary>29 Found Instances</summary>
- Found in src/Casting.sol [Line: 38](../tests/contract-playground/src/Casting.sol#L38)
```solidity
uint unspecificUint = 0x1234567890abcdef;
```
- Found in src/Casting.sol [Line: 76](../tests/contract-playground/src/Casting.sol#L76)
```solidity
int unspecificInt = -0x1234567890abcdef;
```
- Found in src/InconsistentUints.sol [Line: 5](../tests/contract-playground/src/InconsistentUints.sol#L5)
```solidity
uint public uintVariable; // 1
```
- Found in src/InconsistentUints.sol [Line: 7](../tests/contract-playground/src/InconsistentUints.sol#L7)
```solidity
int public intVariable; // 1
```
- Found in src/InconsistentUints.sol [Line: 11](../tests/contract-playground/src/InconsistentUints.sol#L11)
```solidity
uint personUint; // 2
```
- Found in src/InconsistentUints.sol [Line: 12](../tests/contract-playground/src/InconsistentUints.sol#L12)
```solidity
mapping (uint => uint256) personMap; // 3 2
```
- Found in src/InconsistentUints.sol [Line: 15](../tests/contract-playground/src/InconsistentUints.sol#L15)
```solidity
uint[] public uintArray; // 4
```
- Found in src/InconsistentUints.sol [Line: 16](../tests/contract-playground/src/InconsistentUints.sol#L16)
```solidity
mapping(uint256 => uint other) u2uMapping; // 5 3
```
- Found in src/InconsistentUints.sol [Line: 19](../tests/contract-playground/src/InconsistentUints.sol#L19)
```solidity
constructor(uint _uintInitial, uint256 _uint256Initial) { // 6 4
```
- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 115](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L115)
```solidity
) external pure returns (uint) {
```
- Found in src/TautologicalCompare.sol [Line: 11](../tests/contract-playground/src/TautologicalCompare.sol#L11)
```solidity
function check(uint a) external pure returns (bool) {
```
- Found in src/TautologyOrContradiction.sol [Line: 6](../tests/contract-playground/src/TautologyOrContradiction.sol#L6)
```solidity
uint x;
```
- Found in src/Trump.sol [Line: 159](../tests/contract-playground/src/Trump.sol#L159)
```solidity
event MaxTxAmountUpdated(uint _maxTxAmount);
```
- Found in src/UninitializedLocalVariables.sol [Line: 9](../tests/contract-playground/src/UninitializedLocalVariables.sol#L9)
```solidity
uint uninitializedUint;
```
- Found in src/UninitializedLocalVariables.sol [Line: 15](../tests/contract-playground/src/UninitializedLocalVariables.sol#L15)
```solidity
uint[1] memory uninitializedUintArray;
```
- Found in src/UninitializedLocalVariables.sol [Line: 25](../tests/contract-playground/src/UninitializedLocalVariables.sol#L25)
```solidity
uint initializedUint = 1;
```
- Found in src/UninitializedLocalVariables.sol [Line: 31](../tests/contract-playground/src/UninitializedLocalVariables.sol#L31)
```solidity
uint[1] memory initializedUintArray = [uint(2)];
```
- Found in src/UninitializedLocalVariables.sol [Line: 43](../tests/contract-playground/src/UninitializedLocalVariables.sol#L43)
```solidity
uint delayedUint;
```
- Found in src/UninitializedLocalVariables.sol [Line: 49](../tests/contract-playground/src/UninitializedLocalVariables.sol#L49)
```solidity
uint[1] memory delayedUintArray;
```
- Found in src/eth2/DepositContract.sol [Line: 59](../tests/contract-playground/src/eth2/DepositContract.sol#L59)
```solidity
uint constant DEPOSIT_CONTRACT_TREE_DEPTH = 32;
```
- Found in src/eth2/DepositContract.sol [Line: 61](../tests/contract-playground/src/eth2/DepositContract.sol#L61)
```solidity
uint constant MAX_DEPOSIT_COUNT = 2**DEPOSIT_CONTRACT_TREE_DEPTH - 1;
```
- Found in src/eth2/DepositContract.sol [Line: 70](../tests/contract-playground/src/eth2/DepositContract.sol#L70)
```solidity
for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH - 1; height++)
```
- Found in src/eth2/DepositContract.sol [Line: 76](../tests/contract-playground/src/eth2/DepositContract.sol#L76)
```solidity
uint size = deposit_count;
```
- Found in src/eth2/DepositContract.sol [Line: 77](../tests/contract-playground/src/eth2/DepositContract.sol#L77)
```solidity
for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {
```
- Found in src/eth2/DepositContract.sol [Line: 103](../tests/contract-playground/src/eth2/DepositContract.sol#L103)
```solidity
uint deposit_amount = msg.value / 1 gwei;
```
- Found in src/eth2/DepositContract.sol [Line: 133](../tests/contract-playground/src/eth2/DepositContract.sol#L133)
```solidity
uint size = deposit_count;
```
- Found in src/eth2/DepositContract.sol [Line: 134](../tests/contract-playground/src/eth2/DepositContract.sol#L134)
```solidity
for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {
```
- Found in src/nested_mappings/LaterVersion.sol [Line: 8](../tests/contract-playground/src/nested_mappings/LaterVersion.sol#L8)
```solidity
uint dummy;
```
- Found in src/nested_mappings/NestedMappings.sol [Line: 8](../tests/contract-playground/src/nested_mappings/NestedMappings.sol#L8)
```solidity
uint dummy;
```
</details>
## L-22: Unused Error
Consider using or removing the unused error.
<details><summary>3 Found Instances</summary>
- Found in src/UnusedError.sol [Line: 5](../tests/contract-playground/src/UnusedError.sol#L5)
```solidity
error UnusedLibraryError();
```
- Found in src/UnusedError.sol [Line: 14](../tests/contract-playground/src/UnusedError.sol#L14)
```solidity
error UnusedError1(address account);
```
- Found in src/WrongOrderOfLayout.sol [Line: 13](../tests/contract-playground/src/WrongOrderOfLayout.sol#L13)
```solidity
error DivideByZero();
```
</details>
## L-23: Loop Contains `require`/`revert`
Avoid `require` / `revert` statements in a loop because a single bad item can cause the whole transaction to fail. It's better to forgive on fail and return failed elements post processing of the loop
<details><summary>2 Found Instances</summary>
- Found in src/RevertsAndRequriesInLoops.sol [Line: 10](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L10)
```solidity
for (uint256 id = 0; id < 10; ++id) {
```
- Found in src/RevertsAndRequriesInLoops.sol [Line: 17](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L17)
```solidity
for (uint256 id = 0; id < 10; ++id) {
```
</details>
## L-24: Incorrect Order of Division and Multiplication
Division operations followed directly by multiplication operations can lead to precision loss due to the way integer arithmetic is handled in Solidity./
Consider Multiplication before Division.
<details><summary>4 Found Instances</summary>
- Found in src/DivisionBeforeMultiplication.sol [Line: 8](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L8)
```solidity
result = a * d + b / c * b / d;
```
- Found in src/DivisionBeforeMultiplication.sol [Line: 12](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L12)
```solidity
result = (a + b / c * b) * c;
```
- Found in src/DivisionBeforeMultiplication.sol [Line: 16](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L16)
```solidity
result = (a / b * c);
```
- Found in src/DivisionBeforeMultiplication.sol [Line: 20](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L20)
```solidity
result = a + b / c * b * c;
```
</details>
## L-25: Redundant Statement
Remove the redundant statement.
<details><summary>6 Found Instances</summary>
- Found in src/RedundantStatements.sol [Line: 6](../tests/contract-playground/src/RedundantStatements.sol#L6)
```solidity
uint; // Elementary Type Name
```
- Found in src/RedundantStatements.sol [Line: 7](../tests/contract-playground/src/RedundantStatements.sol#L7)
```solidity
bool; // Elementary Type Name
```
- Found in src/RedundantStatements.sol [Line: 8](../tests/contract-playground/src/RedundantStatements.sol#L8)
```solidity
RedundantStatementsContract; // Identifier
```
- Found in src/RedundantStatements.sol [Line: 12](../tests/contract-playground/src/RedundantStatements.sol#L12)
```solidity
uint; // Elementary Type Name
```
- Found in src/RedundantStatements.sol [Line: 13](../tests/contract-playground/src/RedundantStatements.sol#L13)
```solidity
assert; // Identifier
```
- Found in src/RedundantStatements.sol [Line: 14](../tests/contract-playground/src/RedundantStatements.sol#L14)
```solidity
test; // Identifier
```
</details>
## L-26: State Variable is Read as External
The contract reads it's own state variable using `this` which adds an unnecessary STATICCALL. Consider removing `this` to access the variable from storage.
<details><summary>4 Found Instances</summary>
- Found in src/PublicVariableReadInExternalContext.sol [Line: 12](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L12)
```solidity
return this.testArray(0);
```
- Found in src/PublicVariableReadInExternalContext.sol [Line: 16](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L16)
```solidity
return this.testUint256();
```
- Found in src/PublicVariableReadInExternalContext.sol [Line: 20](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L20)
```solidity
return this.testMap(0);
```
- Found in src/PublicVariableReadInExternalContext.sol [Line: 42](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L42)
```solidity
return this.testArray(0);
```
</details>
## L-27: Unused State Variable
State variable appears to be unused. No analysis has been performed to see if any inline assembly references it. Consider removing this unused variable.
<details><summary>27 Found Instances</summary>
- Found in src/AssemblyExample.sol [Line: 5](../tests/contract-playground/src/AssemblyExample.sol#L5)
```solidity
uint b;
```
- Found in src/InconsistentUints.sol [Line: 16](../tests/contract-playground/src/InconsistentUints.sol#L16)
```solidity
mapping(uint256 => uint other) u2uMapping; // 5 3
```
- Found in src/LocalVariableShadow.sol [Line: 7](../tests/contract-playground/src/LocalVariableShadow.sol#L7)
```solidity
uint owner;
```
- Found in src/StateVariables.sol [Line: 8](../tests/contract-playground/src/StateVariables.sol#L8)
```solidity
uint256 private staticPrivateNumber;
```
- Found in src/StateVariables.sol [Line: 9](../tests/contract-playground/src/StateVariables.sol#L9)
```solidity
uint256 internal staticInternalNumber;
```
- Found in src/StateVariables.sol [Line: 13](../tests/contract-playground/src/StateVariables.sol#L13)
```solidity
uint256 private staticNonEmptyPrivateNumber = 1;
```
- Found in src/StateVariables.sol [Line: 14](../tests/contract-playground/src/StateVariables.sol#L14)
```solidity
uint256 internal staticNonEmptyInternalNumber = 2;
```
- Found in src/StateVariables.sol [Line: 28](../tests/contract-playground/src/StateVariables.sol#L28)
```solidity
uint256 private constant PRIVATE_CONSTANT = 1;
```
- Found in src/StateVariables.sol [Line: 29](../tests/contract-playground/src/StateVariables.sol#L29)
```solidity
uint256 internal constant INTERNAL_CONSTANT = 2;
```
- Found in src/TautologyOrContradiction.sol [Line: 6](../tests/contract-playground/src/TautologyOrContradiction.sol#L6)
```solidity
uint x;
```
- Found in src/TautologyOrContradiction.sol [Line: 7](../tests/contract-playground/src/TautologyOrContradiction.sol#L7)
```solidity
uint256 y;
```
- Found in src/UninitializedLocalVariables.sol [Line: 5](../tests/contract-playground/src/UninitializedLocalVariables.sol#L5)
```solidity
uint256 stateVarUint;
```
- Found in src/UninitializedStateVariable.sol [Line: 13](../tests/contract-playground/src/UninitializedStateVariable.sol#L13)
```solidity
mapping(uint256 => uint256[]) private map; // GOOD
```
- Found in src/UnusedStateVariables.sol [Line: 6](../tests/contract-playground/src/UnusedStateVariables.sol#L6)
```solidity
uint256 internal unusedUint256;
```
- Found in src/UnusedStateVariables.sol [Line: 7](../tests/contract-playground/src/UnusedStateVariables.sol#L7)
```solidity
address internal unusedAddress;
```
- Found in src/UnusedStateVariables.sol [Line: 8](../tests/contract-playground/src/UnusedStateVariables.sol#L8)
```solidity
bool private unusedBool;
```
- Found in src/UnusedStateVariables.sol [Line: 9](../tests/contract-playground/src/UnusedStateVariables.sol#L9)
```solidity
string private unusedString;
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L14)
```solidity
uint256 s_1 = 0;
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L16)
```solidity
uint256 s_2 = 0;
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L19)
```solidity
uint256 s_3 = 0; // this is a side comment
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L22)
```solidity
uint256 s_4 = 0; // scc-dblah
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L29)
```solidity
this is longer comment */ uint256 s_5 = 0;
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L14)
```solidity
uint256 s_1 = 0;
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L16)
```solidity
uint256 s_2 = 0;
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L19)
```solidity
uint256 s_3 = 0; // this is a side comment
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L22)
```solidity
uint256 s_4 = 0; // scc-dblah
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L29)
```solidity
this is longer comment */ uint256 s_5 = 0;
```
</details>
## L-28: Constant Function Contains Assembly
constant/pure/view was not enforced prior to Solidity 0.5. Starting from Solidity 0.5, a call to a constant/pure/view function uses the STATICCALL opcode, which reverts in case of state modification. As a result, a call to an incorrectly labeled function may trap a contract compiled with Solidity 0.5. https://docs.soliditylang.org/en/develop/050-breaking-changes.html#interoperability-with-older-contracts
<details><summary>3 Found Instances</summary>
- Found in src/ConstantFuncsAssembly.sol [Line: 9](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L9)
```solidity
function setValue(uint256 _value) external view {
```
- Found in src/ConstantFuncsAssembly.sol [Line: 17](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L17)
```solidity
function getConstantValue() external pure returns (uint256) {
```
- Found in src/ConstantFuncsAssembly.sol [Line: 36](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L36)
```solidity
function getConstantValue2() external pure returns (uint256) {
```
</details>
## L-29: Boolean equality is not required
If `x` is a boolean, use `if(x)` and `if(!x)` instead of `if(x == true)` or `if(x == false)`.
<details><summary>4 Found Instances</summary>
- Found in src/BooleanEquality.sol [Line: 5](../tests/contract-playground/src/BooleanEquality.sol#L5)
```solidity
if (isEven == true) {
```
- Found in src/BooleanEquality.sol [Line: 12](../tests/contract-playground/src/BooleanEquality.sol#L12)
```solidity
if (isEven == !true) {
```
- Found in src/BooleanEquality.sol [Line: 19](../tests/contract-playground/src/BooleanEquality.sol#L19)
```solidity
if (isEven == false) {
```
- Found in src/BooleanEquality.sol [Line: 26](../tests/contract-playground/src/BooleanEquality.sol#L26)
```solidity
if (isEven == !false) {
```
</details>
## L-30: Local Variable Shadows State Variable
Rename the local variable that shadows another state variable.
<details><summary>10 Found Instances</summary>
- Found in src/AdminContract.sol [Line: 10](../tests/contract-playground/src/AdminContract.sol#L10)
```solidity
function setOwner(address _owner) external onlyOwner nonReentrant {
```
- Found in src/FunctionInitializingState.sol [Line: 41](../tests/contract-playground/src/FunctionInitializingState.sol#L41)
```solidity
function okay() public returns (uint f) {
```
- Found in src/FunctionInitializingState.sol [Line: 46](../tests/contract-playground/src/FunctionInitializingState.sol#L46)
```solidity
function okay2() public returns (uint f) {
```
- Found in src/LocalVariableShadow.sol [Line: 10](../tests/contract-playground/src/LocalVariableShadow.sol#L10)
```solidity
function sensitiveFunction(address owner) public view {
```
- Found in src/LocalVariableShadow.sol [Line: 17](../tests/contract-playground/src/LocalVariableShadow.sol#L17)
```solidity
address owner = msg.sender;
```
- Found in src/LocalVariableShadow.sol [Line: 31](../tests/contract-playground/src/LocalVariableShadow.sol#L31)
```solidity
function sensitiveFfunction(address roll) public view {
```
- Found in src/OutOfOrderRetryable.sol [Line: 144](../tests/contract-playground/src/OutOfOrderRetryable.sol#L144)
```solidity
uint256 maxSubmissionCost,
```
- Found in src/OutOfOrderRetryable.sol [Line: 147](../tests/contract-playground/src/OutOfOrderRetryable.sol#L147)
```solidity
uint256 gasLimit,
```
- Found in src/OutOfOrderRetryable.sol [Line: 148](../tests/contract-playground/src/OutOfOrderRetryable.sol#L148)
```solidity
uint256 maxFeePerGas,
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 28](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L28)
```solidity
function setOwner(address _owner) external onlyOwner nonReentrant {
```
</details>
## L-31: Uninitialized Local Variable
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
<details><summary>15 Found Instances</summary>
- Found in src/ConstantFuncsAssembly.sol [Line: 18](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L18)
```solidity
uint256 result;
```
- Found in src/ConstantFuncsAssembly.sol [Line: 27](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L27)
```solidity
uint256 result;
```
- Found in src/StorageParameters.sol [Line: 8](../tests/contract-playground/src/StorageParameters.sol#L8)
```solidity
uint[1] memory memoryArray;
```
- Found in src/UninitializedLocalVariables.sol [Line: 9](../tests/contract-playground/src/UninitializedLocalVariables.sol#L9)
```solidity
uint uninitializedUint;
```
- Found in src/UninitializedLocalVariables.sol [Line: 10](../tests/contract-playground/src/UninitializedLocalVariables.sol#L10)
```solidity
bool uninitializedBool;
```
- Found in src/UninitializedLocalVariables.sol [Line: 11](../tests/contract-playground/src/UninitializedLocalVariables.sol#L11)
```solidity
address uninitializedAddress;
```
- Found in src/UninitializedLocalVariables.sol [Line: 12](../tests/contract-playground/src/UninitializedLocalVariables.sol#L12)
```solidity
int uninitializedInt;
```
- Found in src/UninitializedLocalVariables.sol [Line: 13](../tests/contract-playground/src/UninitializedLocalVariables.sol#L13)
```solidity
bytes32 uninitializedBytes32;
```
- Found in src/UninitializedLocalVariables.sol [Line: 14](../tests/contract-playground/src/UninitializedLocalVariables.sol#L14)
```solidity
string memory uninitializedString;
```
- Found in src/UninitializedLocalVariables.sol [Line: 15](../tests/contract-playground/src/UninitializedLocalVariables.sol#L15)
```solidity
uint[1] memory uninitializedUintArray;
```
- Found in src/UninitializedLocalVariables.sol [Line: 16](../tests/contract-playground/src/UninitializedLocalVariables.sol#L16)
```solidity
bool[1] memory uninitializedBoolArray;
```
- Found in src/UninitializedLocalVariables.sol [Line: 17](../tests/contract-playground/src/UninitializedLocalVariables.sol#L17)
```solidity
address[1] memory uninitializedAddressArray;
```
- Found in src/UninitializedLocalVariables.sol [Line: 18](../tests/contract-playground/src/UninitializedLocalVariables.sol#L18)
```solidity
int[1] memory uninitializedIntArray;
```
- Found in src/UninitializedLocalVariables.sol [Line: 19](../tests/contract-playground/src/UninitializedLocalVariables.sol#L19)
```solidity
bytes32[1] memory uninitializedBytes32Array;
```
- Found in src/UninitializedLocalVariables.sol [Line: 20](../tests/contract-playground/src/UninitializedLocalVariables.sol#L20)
```solidity
string[1] memory uninitializedStringArray;
```
</details>
## L-32: Return Bomb
A low level callee may consume all callers gas unexpectedly. Avoid unlimited implicit decoding of returndata on calls to unchecked addresses. You can limit the gas by passing a gas limit as an option to the call. For example, `unknownAddress.call{gas: gasLimitHere}("calldata")` That would act as a safety net from OOG errors.
<details><summary>1 Found Instances</summary>
- Found in src/ReturnBomb.sol [Line: 22](../tests/contract-playground/src/ReturnBomb.sol#L22)
```solidity
(success, ret) = badGuy.call(
```
</details>
## L-33: Function Used to Initialize State Variable
Instead of using a function to initialize a state variable in its declaration; declare the state variable and initialize it in the constructor.
<details><summary>3 Found Instances</summary>
- Found in src/FunctionInitializingState.sol [Line: 6](../tests/contract-playground/src/FunctionInitializingState.sol#L6)
```solidity
uint public v = set(); // Initialize from function (sets to 77)
```
- Found in src/FunctionInitializingState.sol [Line: 8](../tests/contract-playground/src/FunctionInitializingState.sol#L8)
```solidity
uint public x = set(); // Initialize from function (sets to 88)
```
- Found in src/FunctionInitializingState.sol [Line: 9](../tests/contract-playground/src/FunctionInitializingState.sol#L9)
```solidity
uint public f = tes();
```
</details>
## L-34: Dead Code
Functions that are not used. Consider removing them.
<details><summary>12 Found Instances</summary>
- Found in src/ArbitraryTransferFrom.sol [Line: 18](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L18)
```solidity
function bad1(address from, address to, uint256 amount) internal {
```
- Found in src/ContractLocksEther.sol [Line: 54](../tests/contract-playground/src/ContractLocksEther.sol#L54)
```solidity
function _sendEther(address payable recipient, uint256 amount) internal {
```
- Found in src/DeadCode.sol [Line: 16](../tests/contract-playground/src/DeadCode.sol#L16)
```solidity
function unusedInternalFunction() internal pure returns (string memory) {
```
- Found in src/DeletionNestedMappingStructureContract.sol [Line: 14](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L14)
```solidity
function remove() internal{
```
- Found in src/IncorrectShift.sol [Line: 5](../tests/contract-playground/src/IncorrectShift.sol#L5)
```solidity
function shiftBad() internal pure returns (uint shifted) {
```
- Found in src/IncorrectShift.sol [Line: 13](../tests/contract-playground/src/IncorrectShift.sol#L13)
```solidity
function shiftGood() internal pure returns (uint shifted) {
```
- Found in src/UncheckedReturn.sol [Line: 12](../tests/contract-playground/src/UncheckedReturn.sol#L12)
```solidity
function callOneAndDoNothing() internal pure {
```
- Found in src/UncheckedReturn.sol [Line: 20](../tests/contract-playground/src/UncheckedReturn.sol#L20)
```solidity
function callOneAndDoSomething() internal {
```
- Found in src/UncheckedReturn.sol [Line: 25](../tests/contract-playground/src/UncheckedReturn.sol#L25)
```solidity
function callTwoAndDoNothing() internal pure {
```
- Found in src/UncheckedReturn.sol [Line: 30](../tests/contract-playground/src/UncheckedReturn.sol#L30)
```solidity
function callTwoAndDoSomething() internal pure {
```
- Found in src/UncheckedReturn.sol [Line: 35](../tests/contract-playground/src/UncheckedReturn.sol#L35)
```solidity
function callTwoAndRequireSomething() internal pure {
```
- Found in src/UncheckedReturn.sol [Line: 40](../tests/contract-playground/src/UncheckedReturn.sol#L40)
```solidity
function callTwoAndEmitError() internal pure {
```
</details>
## L-35: Storage Array Length not Cached
Calling `.length` on a storage array in a loop condition is expensive. Consider caching the length in a local variable in memory before the loop and reusing it.
<details><summary>3 Found Instances</summary>
- Found in src/CacheArrayLength.sol [Line: 12](../tests/contract-playground/src/CacheArrayLength.sol#L12)
```solidity
for (uint i = 0; i < array.length; i++) {
```
- Found in src/CacheArrayLength.sol [Line: 44](../tests/contract-playground/src/CacheArrayLength.sol#L44)
```solidity
for (uint i = 0; i < array.length + anotherArray.length; i++) {}
```
- Found in src/CacheArrayLength.sol [Line: 50](../tests/contract-playground/src/CacheArrayLength.sol#L50)
```solidity
for (uint i = 0; i < array.length + anotherArray.length; i++) {
```
</details>
## L-36: State change in `assert()` statement
An argument to `assert()` modifies the state. Use `require` for invariants modifying state.
<details><summary>1 Found Instances</summary>
- Found in src/AssertStateChange.sol [Line: 9](../tests/contract-playground/src/AssertStateChange.sol#L9)
```solidity
assert((s_a += 1) > 10);
```
</details>
## L-37: Costly operations inside loop
Invoking `SSTORE` operations in loops may waste gas. Use a local variable to hold the loop computation result.
<details><summary>19 Found Instances</summary>
- Found in src/CacheArrayLength.sol [Line: 25](../tests/contract-playground/src/CacheArrayLength.sol#L25)
```solidity
for (uint i = 0; i < array.length; i++) {
```
- Found in src/CacheArrayLength.sol [Line: 35](../tests/contract-playground/src/CacheArrayLength.sol#L35)
```solidity
for (uint i = 0; i < array.length + anotherArray.length; i++) {
```
- Found in src/CostlyOperationsInsideLoops.sol [Line: 10](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L10)
```solidity
for (uint i = 0; i < loop_count; i++) {
```
- Found in src/EnumerableSetIteration.sol [Line: 29](../tests/contract-playground/src/EnumerableSetIteration.sol#L29)
```solidity
for (uint256 i = 0; i < bytes32Set.length(); i++) {
```
- Found in src/EnumerableSetIteration.sol [Line: 38](../tests/contract-playground/src/EnumerableSetIteration.sol#L38)
```solidity
while(i < bytes32Set.length()) {
```
- Found in src/EnumerableSetIteration.sol [Line: 48](../tests/contract-playground/src/EnumerableSetIteration.sol#L48)
```solidity
do {
```
- Found in src/EnumerableSetIteration.sol [Line: 57](../tests/contract-playground/src/EnumerableSetIteration.sol#L57)
```solidity
for (uint256 i = 0; i < addressSet.length(); i++) {
```
- Found in src/EnumerableSetIteration.sol [Line: 65](../tests/contract-playground/src/EnumerableSetIteration.sol#L65)
```solidity
for (uint256 i = 0; i < uintSet.length(); i++) {
```
- Found in src/MsgValueInLoop.sol [Line: 12](../tests/contract-playground/src/MsgValueInLoop.sol#L12)
```solidity
for (uint256 i = 0; i < receivers.length; i++) {
```
- Found in src/MsgValueInLoop.sol [Line: 25](../tests/contract-playground/src/MsgValueInLoop.sol#L25)
```solidity
for (uint256 i = 0; i < receivers.length; i++) {
```
- Found in src/MsgValueInLoop.sol [Line: 38](../tests/contract-playground/src/MsgValueInLoop.sol#L38)
```solidity
for (uint256 i = 0; i < receivers.length; i++) {
```
- Found in src/MsgValueInLoop.sol [Line: 54](../tests/contract-playground/src/MsgValueInLoop.sol#L54)
```solidity
while (i < receivers.length) {
```
- Found in src/MsgValueInLoop.sol [Line: 71](../tests/contract-playground/src/MsgValueInLoop.sol#L71)
```solidity
do {
```
- Found in src/RevertsAndRequriesInLoops.sol [Line: 10](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L10)
```solidity
for (uint256 id = 0; id < 10; ++id) {
```
- Found in src/RevertsAndRequriesInLoops.sol [Line: 17](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L17)
```solidity
for (uint256 id = 0; id < 10; ++id) {
```
- Found in src/RevertsAndRequriesInLoops.sol [Line: 27](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L27)
```solidity
for (uint256 id = 0; id < 10; ++id) {
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 47](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L47)
```solidity
for (uint256 i = 0; i < s_useMe; ++i) {
```
- Found in src/eth2/DepositContract.sol [Line: 134](../tests/contract-playground/src/eth2/DepositContract.sol#L134)
```solidity
for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 17](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L17)
```solidity
for (uint256 j = 9; j != 0; --j) {
```
</details>
## L-38: Builtin Symbol Shadowing
Name clashes with a built-in-symbol. Consider renaming it.
<details><summary>4 Found Instances</summary>
- Found in src/BuiltinSymbolShadow.sol [Line: 5](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L5)
```solidity
uint now; // BAD
```
- Found in src/BuiltinSymbolShadow.sol [Line: 8](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L8)
```solidity
function assert(bool condition) public {}
```
- Found in src/BuiltinSymbolShadow.sol [Line: 17](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L17)
```solidity
modifier blockhash() {
```
- Found in src/BuiltinSymbolShadow.sol [Line: 22](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L22)
```solidity
event sha256();
```
</details>
## L-39: Void constructor
Call to a constructor that is not implemented.
<details><summary>1 Found Instances</summary>
- Found in src/VoidConstructor.sol [Line: 16](../tests/contract-playground/src/VoidConstructor.sol#L16)
```solidity
VoidConstructor()
```
</details>
## L-40: Missing Inheritance
There is an interface / abstract contract that is potentially missing (not included in) the inheritance of this contract.
<details><summary>3 Found Instances</summary>
- Found in src/MissingInheritance.sol [Line: 7](../tests/contract-playground/src/MissingInheritance.sol#L7)
Is this contract supposed to implement an interface? Consider extending one of the following: IMissingInheritanceCounter
```solidity
contract MissingInheritanceCounter {
```
- Found in src/MissingInheritance.sol [Line: 41](../tests/contract-playground/src/MissingInheritance.sol#L41)
Is this contract supposed to implement an interface? Consider extending one of the following: IMissingChild, IMissingParent
```solidity
contract MissingContract2 {
```
- Found in src/TestERC20.sol [Line: 4](../tests/contract-playground/src/TestERC20.sol#L4)
Is this contract supposed to implement an interface? Consider extending one of the following: IERC20
```solidity
contract TestERC20 {
```
</details>
## L-41: Unused Import
Redundant import statement. Consider removing it.
<details><summary>3 Found Instances</summary>
- Found in src/StateVariables.sol [Line: 4](../tests/contract-playground/src/StateVariables.sol#L4)
```solidity
import {Counter} from "./Counter.sol";
```
- Found in src/UnusedImport.sol [Line: 6](../tests/contract-playground/src/UnusedImport.sol#L6)
```solidity
import "./U2.sol";
```
- Found in src/UnusedImport.sol [Line: 9](../tests/contract-playground/src/UnusedImport.sol#L9)
```solidity
import {U3} from "./U3.sol";
```
</details>
## L-42: Function Pointer in Constructor
solc versions below 0.5.9 contain a compiler bug leading to unexpected behavior when calling uninitialized function pointers in constructors. It is recommended to not use function pointers in constructors.
<details><summary>1 Found Instances</summary>
- Found in src/FunctionPointers.sol [Line: 13](../tests/contract-playground/src/FunctionPointers.sol#L13)
```solidity
function(uint, uint) pure returns (uint) operation;
```
</details>
## L-43: State Variable Could Be Constant
State variables that are not updated following deployment should be declared constant to save gas. Add the `constant` attribute to state variables that never change.
<details><summary>45 Found Instances</summary>
- Found in src/CostlyOperationsInsideLoops.sol [Line: 6](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L6)
```solidity
uint loop_count = 100;
```
- Found in src/FunctionInitializingState.sol [Line: 7](../tests/contract-playground/src/FunctionInitializingState.sol#L7)
```solidity
uint public w = 5;
```
- Found in src/FunctionInitializingState.sol [Line: 58](../tests/contract-playground/src/FunctionInitializingState.sol#L58)
```solidity
uint public w = 5;
```
- Found in src/IncorrectERC20.sol [Line: 5](../tests/contract-playground/src/IncorrectERC20.sol#L5)
```solidity
string public name = "IncorrectToken";
```
- Found in src/IncorrectERC20.sol [Line: 6](../tests/contract-playground/src/IncorrectERC20.sol#L6)
```solidity
string public symbol = "ICT";
```
- Found in src/IncorrectERC20.sol [Line: 7](../tests/contract-playground/src/IncorrectERC20.sol#L7)
```solidity
uint8 public decimals = 18;
```
- Found in src/IncorrectERC20.sol [Line: 8](../tests/contract-playground/src/IncorrectERC20.sol#L8)
```solidity
uint256 public totalSupply = 1000000;
```
- Found in src/IncorrectERC20.sol [Line: 48](../tests/contract-playground/src/IncorrectERC20.sol#L48)
```solidity
string public name = "CorrectToken";
```
- Found in src/IncorrectERC20.sol [Line: 49](../tests/contract-playground/src/IncorrectERC20.sol#L49)
```solidity
string public symbol = "CRT";
```
- Found in src/IncorrectERC20.sol [Line: 50](../tests/contract-playground/src/IncorrectERC20.sol#L50)
```solidity
uint8 public decimals = 18;
```
- Found in src/IncorrectERC20.sol [Line: 51](../tests/contract-playground/src/IncorrectERC20.sol#L51)
```solidity
uint256 private _totalSupply = 1000000 * 10 ** uint(decimals);
```
- Found in src/IncorrectERC721.sol [Line: 5](../tests/contract-playground/src/IncorrectERC721.sol#L5)
```solidity
string public name = "IncorrectNFT";
```
- Found in src/IncorrectERC721.sol [Line: 6](../tests/contract-playground/src/IncorrectERC721.sol#L6)
```solidity
string public symbol = "INFT";
```
- Found in src/IncorrectERC721.sol [Line: 145](../tests/contract-playground/src/IncorrectERC721.sol#L145)
```solidity
string public name = "CorrectNFT";
```
- Found in src/IncorrectERC721.sol [Line: 146](../tests/contract-playground/src/IncorrectERC721.sol#L146)
```solidity
string public symbol = "CNFT";
```
- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 8](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L8)
```solidity
uint256 public constantValue = 100;
```
- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 13](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L13)
```solidity
SVIERC20 public h = SVIERC20(address(3)); // This could be declared constant
```
- Found in src/StateVariables.sol [Line: 13](../tests/contract-playground/src/StateVariables.sol#L13)
```solidity
uint256 private staticNonEmptyPrivateNumber = 1;
```
- Found in src/StateVariables.sol [Line: 14](../tests/contract-playground/src/StateVariables.sol#L14)
```solidity
uint256 internal staticNonEmptyInternalNumber = 2;
```
- Found in src/StateVariables.sol [Line: 15](../tests/contract-playground/src/StateVariables.sol#L15)
```solidity
uint256 public staticNonEmptyPublicNumber = 3;
```
- Found in src/StateVariablesManipulation.sol [Line: 40](../tests/contract-playground/src/StateVariablesManipulation.sol#L40)
```solidity
int256 public simpleInt = 100;
```
- Found in src/StateVariablesManipulation.sol [Line: 41](../tests/contract-playground/src/StateVariablesManipulation.sol#L41)
```solidity
bool public simpleBool = true;
```
- Found in src/StateVariablesManipulation.sol [Line: 72](../tests/contract-playground/src/StateVariablesManipulation.sol#L72)
```solidity
uint256[5] public assignToMeNow = [1, 4, 5, 8, 9]; // 1 state var assigned here
```
- Found in src/Trump.sol [Line: 130](../tests/contract-playground/src/Trump.sol#L130)
```solidity
uint256 private _taxWalletPercentage = 50;
```
- Found in src/Trump.sol [Line: 131](../tests/contract-playground/src/Trump.sol#L131)
```solidity
uint256 private _teamWalletPercentage = 50;
```
- Found in src/Trump.sol [Line: 135](../tests/contract-playground/src/Trump.sol#L135)
```solidity
uint256 private _initialBuyTax=20;
```
- Found in src/Trump.sol [Line: 136](../tests/contract-playground/src/Trump.sol#L136)
```solidity
uint256 private _initialSellTax=20;
```
- Found in src/Trump.sol [Line: 137](../tests/contract-playground/src/Trump.sol#L137)
```solidity
uint256 private _finalBuyTax=1;
```
- Found in src/Trump.sol [Line: 138](../tests/contract-playground/src/Trump.sol#L138)
```solidity
uint256 private _finalSellTax=1;
```
- Found in src/Trump.sol [Line: 139](../tests/contract-playground/src/Trump.sol#L139)
```solidity
uint256 private _reduceBuyTaxAt=20;
```
- Found in src/Trump.sol [Line: 140](../tests/contract-playground/src/Trump.sol#L140)
```solidity
uint256 private _reduceSellTaxAt=20;
```
- Found in src/Trump.sol [Line: 141](../tests/contract-playground/src/Trump.sol#L141)
```solidity
uint256 private _preventSwapBefore=20;
```
- Found in src/Trump.sol [Line: 150](../tests/contract-playground/src/Trump.sol#L150)
```solidity
uint256 public _taxSwapThreshold= 47000 * 10**_decimals;
```
- Found in src/Trump.sol [Line: 151](../tests/contract-playground/src/Trump.sol#L151)
```solidity
uint256 public _maxTaxSwap= 470000 * 10**_decimals;
```
- Found in src/UninitializedStateVariable.sol [Line: 8](../tests/contract-playground/src/UninitializedStateVariable.sol#L8)
```solidity
string public s_publisher = "Blockchain Ltd."; // GOOD (because it's initialized here.)
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L14)
```solidity
uint256 s_1 = 0;
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L16)
```solidity
uint256 s_2 = 0;
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L19)
```solidity
uint256 s_3 = 0; // this is a side comment
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L22)
```solidity
uint256 s_4 = 0; // scc-dblah
```
- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L29)
```solidity
this is longer comment */ uint256 s_5 = 0;
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L14)
```solidity
uint256 s_1 = 0;
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L16)
```solidity
uint256 s_2 = 0;
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L19)
```solidity
uint256 s_3 = 0; // this is a side comment
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L22)
```solidity
uint256 s_4 = 0; // scc-dblah
```
- Found in src/cloc/HeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L29)
```solidity
this is longer comment */ uint256 s_5 = 0;
```
</details>
## L-44: State Change Without Event
There are state variable changes in this function but no event is emitted. Consider emitting an event to enable offchain indexers to track the changes.
<details><summary>115 Found Instances</summary>
- Found in src/AdminContract.sol [Line: 14](../tests/contract-playground/src/AdminContract.sol#L14)
```solidity
function someOtherImportantThing() external nonReentrant onlyOwner {
```
- Found in src/AssertStateChange.sol [Line: 8](../tests/contract-playground/src/AssertStateChange.sol#L8)
```solidity
function bad() public {
```
- Found in src/AssertStateChange.sol [Line: 12](../tests/contract-playground/src/AssertStateChange.sol#L12)
```solidity
function good() public {
```
- Found in src/CacheArrayLength.sol [Line: 23](../tests/contract-playground/src/CacheArrayLength.sol#L23)
```solidity
function c3() external {
```
- Found in src/CacheArrayLength.sol [Line: 32](../tests/contract-playground/src/CacheArrayLength.sol#L32)
```solidity
function c4() external {
```
- Found in src/Casting.sol [Line: 37](../tests/contract-playground/src/Casting.sol#L37)
```solidity
function unsafeUintCasting() external {
```
- Found in src/Casting.sol [Line: 75](../tests/contract-playground/src/Casting.sol#L75)
```solidity
function unsafeIntCasting() external {
```
- Found in src/Casting.sol [Line: 113](../tests/contract-playground/src/Casting.sol#L113)
```solidity
function unsafeBytes32Casting() external {
```
- Found in src/CostlyOperationsInsideLoops.sol [Line: 9](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L9)
```solidity
function bad() external {
```
- Found in src/CostlyOperationsInsideLoops.sol [Line: 15](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L15)
```solidity
function good() external {
```
- Found in src/Counter.sol [Line: 7](../tests/contract-playground/src/Counter.sol#L7)
```solidity
function setNumber(uint256 newNumber) public {
```
- Found in src/Counter.sol [Line: 11](../tests/contract-playground/src/Counter.sol#L11)
```solidity
function increment() public {
```
- Found in src/Counter.sol [Line: 16](../tests/contract-playground/src/Counter.sol#L16)
```solidity
function callIncrement() external {
```
- Found in src/Counter.sol [Line: 21](../tests/contract-playground/src/Counter.sol#L21)
```solidity
function incrementByTwoMagic() external {
```
- Found in src/Counter.sol [Line: 28](../tests/contract-playground/src/Counter.sol#L28)
```solidity
function incrementByTwoConstant() external {
```
- Found in src/DeadCode.sol [Line: 11](../tests/contract-playground/src/DeadCode.sol#L11)
```solidity
function setValue(uint256 _value) external {
```
- Found in src/DivisionBeforeMultiplication.sol [Line: 7](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L7)
```solidity
function calculateWrong(uint a, uint b, uint c, uint d) external {
```
- Found in src/DivisionBeforeMultiplication.sol [Line: 11](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L11)
```solidity
function calculateAlsoWrong(uint a, uint b, uint c) external {
```
- Found in src/DivisionBeforeMultiplication.sol [Line: 15](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L15)
```solidity
function calculateAl(uint a, uint b, uint c) external {
```
- Found in src/DivisionBeforeMultiplication.sol [Line: 19](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L19)
```solidity
function calculateStillWrong(uint a, uint b, uint c) external {
```
- Found in src/DivisionBeforeMultiplication.sol [Line: 23](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L23)
```solidity
function calculateCorrect(uint a, uint b, uint c) external {
```
- Found in src/DivisionBeforeMultiplication.sol [Line: 27](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L27)
```solidity
function calculateAlsoCorrect(uint a, uint b, uint c, uint d) external {
```
- Found in src/EnumerableSetIteration.sol [Line: 28](../tests/contract-playground/src/EnumerableSetIteration.sol#L28)
```solidity
function badBytes32IterationInForLoop() external {
```
- Found in src/EnumerableSetIteration.sol [Line: 36](../tests/contract-playground/src/EnumerableSetIteration.sol#L36)
```solidity
function badBytes32IterationInWhileLoop() external {
```
- Found in src/EnumerableSetIteration.sol [Line: 46](../tests/contract-playground/src/EnumerableSetIteration.sol#L46)
```solidity
function badBytes32IterationInDoWhileLoop() external {
```
- Found in src/EnumerableSetIteration.sol [Line: 56](../tests/contract-playground/src/EnumerableSetIteration.sol#L56)
```solidity
function badAddressIteration() external {
```
- Found in src/EnumerableSetIteration.sol [Line: 64](../tests/contract-playground/src/EnumerableSetIteration.sol#L64)
```solidity
function badUintIteration() external {
```
- Found in src/ExternalCalls.sol [Line: 11](../tests/contract-playground/src/ExternalCalls.sol#L11)
```solidity
function extCall(uint256 m_a) public payable {
```
- Found in src/ExternalCalls.sol [Line: 19](../tests/contract-playground/src/ExternalCalls.sol#L19)
```solidity
function baseThing(address x) public {
```
- Found in src/ExternalCalls.sol [Line: 78](../tests/contract-playground/src/ExternalCalls.sol#L78)
```solidity
function notExt1() external {
```
- Found in src/ExternalCalls.sol [Line: 82](../tests/contract-playground/src/ExternalCalls.sol#L82)
```solidity
function notExt2() external {
```
- Found in src/IncorrectERC20.sol [Line: 17](../tests/contract-playground/src/IncorrectERC20.sol#L17)
```solidity
function transfer(address to, uint256 value) public {
```
- Found in src/IncorrectERC20.sol [Line: 23](../tests/contract-playground/src/IncorrectERC20.sol#L23)
```solidity
function approve(address spender, uint256 value) public {
```
- Found in src/IncorrectERC20.sol [Line: 27](../tests/contract-playground/src/IncorrectERC20.sol#L27)
```solidity
function transferFrom(address from, address to, uint256 value) public {
```
- Found in src/IncorrectERC20.sol [Line: 68](../tests/contract-playground/src/IncorrectERC20.sol#L68)
```solidity
function transfer(
```
- Found in src/IncorrectERC20.sol [Line: 83](../tests/contract-playground/src/IncorrectERC20.sol#L83)
```solidity
function approve(address spender, uint256 amount) external returns (bool) {
```
- Found in src/IncorrectERC20.sol [Line: 88](../tests/contract-playground/src/IncorrectERC20.sol#L88)
```solidity
function transferFrom(
```
- Found in src/IncorrectERC721.sol [Line: 22](../tests/contract-playground/src/IncorrectERC721.sol#L22)
```solidity
function approve(
```
- Found in src/IncorrectERC721.sol [Line: 41](../tests/contract-playground/src/IncorrectERC721.sol#L41)
```solidity
function setApprovalForAll(
```
- Found in src/IncorrectERC721.sol [Line: 56](../tests/contract-playground/src/IncorrectERC721.sol#L56)
```solidity
function transferFrom(
```
- Found in src/IncorrectERC721.sol [Line: 86](../tests/contract-playground/src/IncorrectERC721.sol#L86)
```solidity
function mint(address to, uint256 tokenId) external returns (uint72) {
```
- Found in src/InternalFunctions.sol [Line: 12](../tests/contract-playground/src/InternalFunctions.sol#L12)
```solidity
function setValue(uint256 _newValue) external onlyOwner {
```
- Found in src/MissingInheritance.sol [Line: 10](../tests/contract-playground/src/MissingInheritance.sol#L10)
```solidity
function increment() external {
```
- Found in src/MissingInheritance.sol [Line: 25](../tests/contract-playground/src/MissingInheritance.sol#L25)
```solidity
function increment() external {
```
- Found in src/MsgValueInLoop.sol [Line: 10](../tests/contract-playground/src/MsgValueInLoop.sol#L10)
```solidity
function bad(address[] memory receivers) external payable {
```
- Found in src/MsgValueInLoop.sol [Line: 22](../tests/contract-playground/src/MsgValueInLoop.sol#L22)
```solidity
function good(address[] memory receivers) external payable {
```
- Found in src/MsgValueInLoop.sol [Line: 36](../tests/contract-playground/src/MsgValueInLoop.sol#L36)
```solidity
function bad(address[] memory receivers) external payable {
```
- Found in src/MsgValueInLoop.sol [Line: 51](../tests/contract-playground/src/MsgValueInLoop.sol#L51)
```solidity
function bad(address[] memory receivers) external payable {
```
- Found in src/MsgValueInLoop.sol [Line: 68](../tests/contract-playground/src/MsgValueInLoop.sol#L68)
```solidity
function bad(address[] memory receivers) external payable {
```
- Found in src/OutOfOrderRetryable.sol [Line: 175](../tests/contract-playground/src/OutOfOrderRetryable.sol#L175)
```solidity
function unstake() public {
```
- Found in src/RevertsAndRequriesInLoops.sol [Line: 9](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L9)
```solidity
function deductMassFundsV1() external {
```
- Found in src/RevertsAndRequriesInLoops.sol [Line: 16](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L16)
```solidity
function deductMassFundsV2() external {
```
- Found in src/RevertsAndRequriesInLoops.sol [Line: 25](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L25)
```solidity
function deductMassFundsV3() external returns(uint256[] memory failedIds) {
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 22](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L22)
```solidity
function badSituation1() external {
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 31](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L31)
```solidity
function badSituation2() external {
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 42](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L42)
```solidity
function badSituation3() external {
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 57](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L57)
```solidity
function goodSituation1() external {
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 66](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L66)
```solidity
function goodSituation2() external {
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 81](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L81)
```solidity
function badSituation4() external onlyOwner {
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 87](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L87)
```solidity
function goodSituation3() external onlyOwner {
```
- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 39](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L39)
```solidity
function changeIt() external {
```
- Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 37](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L37)
```solidity
function changeNotImmutableVar() external {
```
- Found in src/StateVariables.sol [Line: 47](../tests/contract-playground/src/StateVariables.sol#L47)
```solidity
function setAddrNoZeroError(address newAddr) public {
```
- Found in src/StateVariables.sol [Line: 52](../tests/contract-playground/src/StateVariables.sol#L52)
```solidity
function setAddrNoZeroRequire(address newAddr) public {
```
- Found in src/StateVariables.sol [Line: 57](../tests/contract-playground/src/StateVariables.sol#L57)
```solidity
function setAddrNoCheck(address newAddr) public {
```
- Found in src/StateVariables.sol [Line: 61](../tests/contract-playground/src/StateVariables.sol#L61)
```solidity
function setEmptyAlteredNumbers(
```
- Found in src/StateVariables.sol [Line: 71](../tests/contract-playground/src/StateVariables.sol#L71)
```solidity
function setNonEmptyAlteredNumbers(
```
- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 23](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L23)
```solidity
function stateChangedNoEventEmitted(uint256 a) external {
```
- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 28](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L28)
```solidity
function stateChangedNoEventEmittedPlusEquals(uint256 a) external {
```
- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 33](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L33)
```solidity
function stateChangedToBooleanNoEventEmitted() external {
```
- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 45](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L45)
```solidity
function stateChangedToConstantNoEventEmitted() external {
```
- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 50](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L50)
```solidity
function stateChangedNoEventEmitted() external {
```
- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 55](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L55)
```solidity
function addressChangedNotEmitted(address a) external {
```
- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 68](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L68)
```solidity
function wholeStructChangedEventNotEmitted(uint256 a, uint256 b) external {
```
- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 81](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L81)
```solidity
function structMemberChangedEventNotEmitted(uint256 a, uint256 b) external {
```
- Found in src/StateVariablesManipulation.sol [Line: 48](../tests/contract-playground/src/StateVariablesManipulation.sol#L48)
```solidity
function manipulateStateVarDirectly(
```
- Found in src/StateVariablesManipulation.sol [Line: 80](../tests/contract-playground/src/StateVariablesManipulation.sol#L80)
```solidity
function manipulateDirectly(uint256[5] calldata _values) external {
```
- Found in src/StateVariablesManipulation.sol [Line: 85](../tests/contract-playground/src/StateVariablesManipulation.sol#L85)
```solidity
function manipulateViaIndexAccess() external {
```
- Found in src/StateVariablesManipulation.sol [Line: 120](../tests/contract-playground/src/StateVariablesManipulation.sol#L120)
```solidity
function manipulateStateVariables() external {
```
- Found in src/StateVariablesManipulation.sol [Line: 126](../tests/contract-playground/src/StateVariablesManipulation.sol#L126)
```solidity
function manipulateStateVariables2() external {
```
- Found in src/StateVariablesManipulation.sol [Line: 139](../tests/contract-playground/src/StateVariablesManipulation.sol#L139)
```solidity
function manipulateStateVariables4() external {
```
- Found in src/StateVariablesManipulation.sol [Line: 160](../tests/contract-playground/src/StateVariablesManipulation.sol#L160)
```solidity
function manipulateStateVariables6() external {
```
- Found in src/StateVariablesManipulation.sol [Line: 176](../tests/contract-playground/src/StateVariablesManipulation.sol#L176)
```solidity
function manipulateStateVariables7() external {
```
- Found in src/StateVariablesManipulation.sol [Line: 182](../tests/contract-playground/src/StateVariablesManipulation.sol#L182)
```solidity
function manipulateStateVariables8() external {
```
- Found in src/StateVariablesManipulation.sol [Line: 281](../tests/contract-playground/src/StateVariablesManipulation.sol#L281)
```solidity
function manipulateDirectly() external {
```
- Found in src/StateVariablesManipulation.sol [Line: 286](../tests/contract-playground/src/StateVariablesManipulation.sol#L286)
```solidity
function manipulateViaIndexAccess() external {
```
- Found in src/StateVariablesManipulation.sol [Line: 314](../tests/contract-playground/src/StateVariablesManipulation.sol#L314)
```solidity
function manipulateDirectly() external {
```
- Found in src/StateVariablesManipulation.sol [Line: 321](../tests/contract-playground/src/StateVariablesManipulation.sol#L321)
```solidity
function manipulateViaIndexAccess() external {
```
- Found in src/StateVariablesManipulation.sol [Line: 332](../tests/contract-playground/src/StateVariablesManipulation.sol#L332)
```solidity
function manipulateViaMemberAccess() external {
```
- Found in src/StateVariablesManipulation.sol [Line: 337](../tests/contract-playground/src/StateVariablesManipulation.sol#L337)
```solidity
function manipulateViaMemberAccess2() external {
```
- Found in src/StateVariablesManipulation.sol [Line: 353](../tests/contract-playground/src/StateVariablesManipulation.sol#L353)
```solidity
function add(uint256 i) external {
```
- Found in src/StorageParameters.sol [Line: 7](../tests/contract-playground/src/StorageParameters.sol#L7)
```solidity
function editArrays() external {
```
- Found in src/TxOriginUsedForAuth.sol [Line: 16](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L16)
```solidity
function authorizeUser(address _user) external {
```
- Found in src/TxOriginUsedForAuth.sol [Line: 22](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L22)
```solidity
function revokeUser(address _user) external {
```
- Found in src/UnprotectedInitialize.sol [Line: 21](../tests/contract-playground/src/UnprotectedInitialize.sol#L21)
```solidity
function initializeWithModifier() external firstTimeInitializing {
```
- Found in src/UnprotectedInitialize.sol [Line: 27](../tests/contract-playground/src/UnprotectedInitialize.sol#L27)
```solidity
function initializeWithRevert() external {
```
- Found in src/UnprotectedInitialize.sol [Line: 37](../tests/contract-playground/src/UnprotectedInitialize.sol#L37)
```solidity
function initializeWithoutModifierOrRevert() external {
```
- Found in src/UnprotectedInitialize.sol [Line: 70](../tests/contract-playground/src/UnprotectedInitialize.sol#L70)
```solidity
function initializeWithoutProtection() external {
```
- Found in src/UnusedError.sol [Line: 16](../tests/contract-playground/src/UnusedError.sol#L16)
```solidity
function perform() external {
```
- Found in src/UnusedStateVariables.sol [Line: 15](../tests/contract-playground/src/UnusedStateVariables.sol#L15)
```solidity
function setValue(uint256 v) external {
```
- Found in src/ZeroAddressCheck.sol [Line: 12](../tests/contract-playground/src/ZeroAddressCheck.sol#L12)
```solidity
function goodAddress1(address newAddr) external {
```
- Found in src/ZeroAddressCheck.sol [Line: 17](../tests/contract-playground/src/ZeroAddressCheck.sol#L17)
```solidity
function goodAddress2(address newAddr) external {
```
- Found in src/ZeroAddressCheck.sol [Line: 22](../tests/contract-playground/src/ZeroAddressCheck.sol#L22)
```solidity
function goodToken1(address newAddr) external {
```
- Found in src/ZeroAddressCheck.sol [Line: 27](../tests/contract-playground/src/ZeroAddressCheck.sol#L27)
```solidity
function goodToken2(address newAddr) external {
```
- Found in src/ZeroAddressCheck.sol [Line: 32](../tests/contract-playground/src/ZeroAddressCheck.sol#L32)
```solidity
function goodToken3(IERC20 newToken) external {
```
- Found in src/ZeroAddressCheck.sol [Line: 37](../tests/contract-playground/src/ZeroAddressCheck.sol#L37)
```solidity
function goodToken4(IERC20 newToken) external {
```
- Found in src/ZeroAddressCheck.sol [Line: 42](../tests/contract-playground/src/ZeroAddressCheck.sol#L42)
```solidity
function bad1(address newAddr) external {
```
- Found in src/ZeroAddressCheck.sol [Line: 46](../tests/contract-playground/src/ZeroAddressCheck.sol#L46)
```solidity
function bad2(IERC20 newToken) external {
```
- Found in src/ZeroAddressCheck.sol [Line: 50](../tests/contract-playground/src/ZeroAddressCheck.sol#L50)
```solidity
function bad3(address newAddr) external {
```
- Found in src/inheritance/ExtendedInheritance.sol [Line: 14](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L14)
```solidity
function doSomethingElse(address target) external {
```
- Found in src/nested/1/Nested.sol [Line: 10](../tests/contract-playground/src/nested/1/Nested.sol#L10)
```solidity
function updateHorseNumber(uint256 newNumberOfHorses) external {
```
- Found in src/nested/2/Nested.sol [Line: 10](../tests/contract-playground/src/nested/2/Nested.sol#L10)
```solidity
function updateHorseNumber(uint256 newNumberOfHorses) external {
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 15](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L15)
```solidity
function increment(uint256 newNumber) public {
```
- Found in src/parent_chain/ParentChainContract.sol [Line: 32](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L32)
```solidity
function someOtherImportantThing() external nonReentrant onlyOwner {
```
- Found in src/router/InternalCalls.sol [Line: 120](../tests/contract-playground/src/router/InternalCalls.sol#L120)
```solidity
function main() public {
```
</details>
## L-45: State Variable Could Be Immutable
State variables that are only changed in the constructor should be declared immutable to save gas. Add the `immutable` attribute to state variables that are only changed in the constructor
<details><summary>36 Found Instances</summary>
- Found in src/ArbitraryTransferFrom.sol [Line: 9](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L9)
```solidity
IERC20 s_token;
```
- Found in src/EmitAfterExternalCall.sol [Line: 15](../tests/contract-playground/src/EmitAfterExternalCall.sol#L15)
```solidity
MaliciousActor s_actor;
```
- Found in src/ExternalCalls.sol [Line: 25](../tests/contract-playground/src/ExternalCalls.sol#L25)
```solidity
MyTarget t1;
```
- Found in src/FunctionInitializingState.sol [Line: 57](../tests/contract-playground/src/FunctionInitializingState.sol#L57)
```solidity
uint public v;
```
- Found in src/FunctionInitializingState.sol [Line: 59](../tests/contract-playground/src/FunctionInitializingState.sol#L59)
```solidity
uint public x;
```
- Found in src/InconsistentUints.sol [Line: 5](../tests/contract-playground/src/InconsistentUints.sol#L5)
```solidity
uint public uintVariable; // 1
```
- Found in src/InconsistentUints.sol [Line: 6](../tests/contract-playground/src/InconsistentUints.sol#L6)
```solidity
uint256 public uint256Variable; // 1
```
- Found in src/InternalFunctions.sol [Line: 5](../tests/contract-playground/src/InternalFunctions.sol#L5)
```solidity
address public owner;
```
- Found in src/MultiplePlaceholders.sol [Line: 5](../tests/contract-playground/src/MultiplePlaceholders.sol#L5)
```solidity
address internal owner;
```
- Found in src/OutOfOrderRetryable.sol [Line: 39](../tests/contract-playground/src/OutOfOrderRetryable.sol#L39)
```solidity
address public inbox;
```
- Found in src/OutOfOrderRetryable.sol [Line: 40](../tests/contract-playground/src/OutOfOrderRetryable.sol#L40)
```solidity
address public l2contract;
```
- Found in src/OutOfOrderRetryable.sol [Line: 41](../tests/contract-playground/src/OutOfOrderRetryable.sol#L41)
```solidity
uint256 public maxSubmissionCost;
```
- Found in src/OutOfOrderRetryable.sol [Line: 42](../tests/contract-playground/src/OutOfOrderRetryable.sol#L42)
```solidity
uint256 public gasLimit;
```
- Found in src/OutOfOrderRetryable.sol [Line: 43](../tests/contract-playground/src/OutOfOrderRetryable.sol#L43)
```solidity
uint256 public maxFeePerGas;
```
- Found in src/OutOfOrderRetryable.sol [Line: 44](../tests/contract-playground/src/OutOfOrderRetryable.sol#L44)
```solidity
uint256 public gas;
```
- Found in src/StateChangeAfterExternalCall.sol [Line: 14](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L14)
```solidity
MaliciousActor s_actor;
```
- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 11](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L11)
```solidity
uint256 public variableValue; // This one cannot be marked constant. (It can be marked immutable)
```
- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 29](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L29)
```solidity
uint256 public variableValue;
```
- Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 6](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L6)
```solidity
uint256 potentiallyImmutableUint;
```
- Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 9](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L9)
```solidity
address potentiallyImmutableAddr;
```
- Found in src/StorageConditionals.sol [Line: 5](../tests/contract-playground/src/StorageConditionals.sol#L5)
```solidity
uint256 private s_sameConditionals;
```
- Found in src/StorageConditionals.sol [Line: 6](../tests/contract-playground/src/StorageConditionals.sol#L6)
```solidity
uint256 private s_differentConditionals;
```
- Found in src/TestERC20.sol [Line: 7](../tests/contract-playground/src/TestERC20.sol#L7)
```solidity
string public name;
```
- Found in src/TestERC20.sol [Line: 8](../tests/contract-playground/src/TestERC20.sol#L8)
```solidity
string public symbol;
```
- Found in src/Trump.sol [Line: 128](../tests/contract-playground/src/Trump.sol#L128)
```solidity
address payable private _taxWallet;
```
- Found in src/Trump.sol [Line: 129](../tests/contract-playground/src/Trump.sol#L129)
```solidity
address payable private _teamWallet;
```
- Found in src/TxOriginUsedForAuth.sol [Line: 5](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L5)
```solidity
address public owner;
```
- Found in src/UninitializedStateVariable.sol [Line: 9](../tests/contract-playground/src/UninitializedStateVariable.sol#L9)
```solidity
uint256 public numPages; // GOOD (because it's initialized in constructor)
```
- Found in src/UninitializedStateVariable.sol [Line: 37](../tests/contract-playground/src/UninitializedStateVariable.sol#L37)
```solidity
uint256 public myVar; // initialized in extension, hence not captured
```
- Found in src/UnprotectedInitialize.sol [Line: 9](../tests/contract-playground/src/UnprotectedInitialize.sol#L9)
```solidity
address private owner;
```
- Found in src/auditor_mode/ExternalCalls.sol [Line: 9](../tests/contract-playground/src/auditor_mode/ExternalCalls.sol#L9)
```solidity
address private target;
```
- Found in src/auditor_mode/ExternalCalls.sol [Line: 10](../tests/contract-playground/src/auditor_mode/ExternalCalls.sol#L10)
```solidity
ExternalContractInterface private targetContract;
```
- Found in src/eth2/DepositContract.sol [Line: 66](../tests/contract-playground/src/eth2/DepositContract.sol#L66)
```solidity
bytes32[DEPOSIT_CONTRACT_TREE_DEPTH] zero_hashes;
```
- Found in src/reused_contract_name/ContractA.sol [Line: 5](../tests/contract-playground/src/reused_contract_name/ContractA.sol#L5)
```solidity
uint public x;
```
- Found in src/reused_contract_name/ContractB.sol [Line: 5](../tests/contract-playground/src/reused_contract_name/ContractB.sol#L5)
```solidity
address public x;
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 8](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L8)
```solidity
address private s_router;
```
</details>
## L-46: Multiple Placeholders in Modifier
Design the modifier to only contain 1 placeholder statement. If that is not possible, split the logic into multiple modifiers.
<details><summary>3 Found Instances</summary>
- Found in src/MultiplePlaceholders.sol [Line: 12](../tests/contract-playground/src/MultiplePlaceholders.sol#L12)
```solidity
modifier checkOwner() {
```
- Found in src/MultiplePlaceholders.sol [Line: 19](../tests/contract-playground/src/MultiplePlaceholders.sol#L19)
```solidity
modifier test2(uint256 a, uint256 b) {
```
- Found in src/MultiplePlaceholders.sol [Line: 40](../tests/contract-playground/src/MultiplePlaceholders.sol#L40)
```solidity
modifier test4(uint256 a, uint256 b) {
```
</details>
## L-47: Incorrect Use Of Modifier
If a modifier does not execute `_` or revert, the execution of the function will return the default value, which can be misleading for the caller. It is recommended that all the paths in a modifier must execute _ or revert.
<details><summary>2 Found Instances</summary>
- Found in src/IncorrectModifier.sol [Line: 22](../tests/contract-playground/src/IncorrectModifier.sol#L22)
```solidity
modifier modifierIfRetBAD() {
```
- Found in src/IncorrectModifier.sol [Line: 30](../tests/contract-playground/src/IncorrectModifier.sol#L30)
```solidity
modifier modifierIfPlaceBAD() {
```
</details>
## L-48: Unchecked Return
Function returns a value but it is ignored. Consider checking the return value.
<details><summary>35 Found Instances</summary>
- Found in src/ArbitraryTransferFrom.sol [Line: 19](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L19)
```solidity
s_token.transferFrom(from, to, amount);
```
- Found in src/ArbitraryTransferFrom.sol [Line: 34](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L34)
```solidity
s_token.transferFrom(from_msgsender, to, am);
```
- Found in src/ArbitraryTransferFrom.sol [Line: 54](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L54)
```solidity
s_token.transferFrom(msg.sender, to, amount);
```
- Found in src/DeprecatedOZFunctions.sol [Line: 32](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L32)
```solidity
token.approve(spender, value);
```
- Found in src/DeprecatedOZFunctions.sol [Line: 47](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L47)
```solidity
token.transferFrom(from, to, value);
```
- Found in src/EnumerableSetIteration.sol [Line: 17](../tests/contract-playground/src/EnumerableSetIteration.sol#L17)
```solidity
bytes32Set.add(bytes32s[i]);
```
- Found in src/EnumerableSetIteration.sol [Line: 20](../tests/contract-playground/src/EnumerableSetIteration.sol#L20)
```solidity
addressSet.add(addresses[i]);
```
- Found in src/EnumerableSetIteration.sol [Line: 23](../tests/contract-playground/src/EnumerableSetIteration.sol#L23)
```solidity
uintSet.add(uints[i]);
```
- Found in src/EnumerableSetIteration.sol [Line: 31](../tests/contract-playground/src/EnumerableSetIteration.sol#L31)
```solidity
bytes32Set.remove(thisBytes32);
```
- Found in src/EnumerableSetIteration.sol [Line: 40](../tests/contract-playground/src/EnumerableSetIteration.sol#L40)
```solidity
bytes32Set.remove(thisBytes32);
```
- Found in src/EnumerableSetIteration.sol [Line: 50](../tests/contract-playground/src/EnumerableSetIteration.sol#L50)
```solidity
bytes32Set.remove(thisBytes32);
```
- Found in src/EnumerableSetIteration.sol [Line: 59](../tests/contract-playground/src/EnumerableSetIteration.sol#L59)
```solidity
addressSet.remove(thisAddress);
```
- Found in src/EnumerableSetIteration.sol [Line: 67](../tests/contract-playground/src/EnumerableSetIteration.sol#L67)
```solidity
uintSet.remove(thisUint);
```
- Found in src/OutOfOrderRetryable.sol [Line: 65](../tests/contract-playground/src/OutOfOrderRetryable.sol#L65)
```solidity
IInbox(inbox).createRetryableTicket({
```
- Found in src/OutOfOrderRetryable.sol [Line: 77](../tests/contract-playground/src/OutOfOrderRetryable.sol#L77)
```solidity
IInbox(inbox).createRetryableTicket({
```
- Found in src/OutOfOrderRetryable.sol [Line: 92](../tests/contract-playground/src/OutOfOrderRetryable.sol#L92)
```solidity
IInbox(inbox).createRetryableTicket({
```
- Found in src/OutOfOrderRetryable.sol [Line: 107](../tests/contract-playground/src/OutOfOrderRetryable.sol#L107)
```solidity
IInbox(inbox).createRetryableTicket({
```
- Found in src/OutOfOrderRetryable.sol [Line: 129](../tests/contract-playground/src/OutOfOrderRetryable.sol#L129)
```solidity
IInbox(inbox).outboundTransferCustomRefund(
```
- Found in src/OutOfOrderRetryable.sol [Line: 151](../tests/contract-playground/src/OutOfOrderRetryable.sol#L151)
```solidity
IInbox(inbox).unsafeCreateRetryableTicket(
```
- Found in src/StateVariablesManipulation.sol [Line: 142](../tests/contract-playground/src/StateVariablesManipulation.sol#L142)
```solidity
manipulateHelper(p1);
```
- Found in src/Trump.sol [Line: 344](../tests/contract-playground/src/Trump.sol#L344)
```solidity
IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
```
- Found in src/UncheckedReturn.sol [Line: 14](../tests/contract-playground/src/UncheckedReturn.sol#L14)
```solidity
one();
```
- Found in src/UncheckedReturn.sol [Line: 27](../tests/contract-playground/src/UncheckedReturn.sol#L27)
```solidity
UncheckedHelperExternal(address(0x12345)).two();
```
- Found in src/router/ExternalCalls.sol [Line: 27](../tests/contract-playground/src/router/ExternalCalls.sol#L27)
```solidity
a.abc();
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 23](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L23)
```solidity
router1.swapExactTokensForTokens(amountIn, amountOutMin, path, to, block.timestamp);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 24](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L24)
```solidity
router1.swapTokensForExactTokens(amountOut, amountInMax, path, to, block.timestamp);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 25](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L25)
```solidity
router1.swapExactETHForTokens(amountOutMin, path, to, block.timestamp);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 26](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L26)
```solidity
router1.swapTokensForExactETH(amountOut, amountInMax, path, to, block.timestamp);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 27](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L27)
```solidity
router1.swapExactTokensForETH(amountIn, amountOutMin, path, to, block.timestamp);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 46](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L46)
```solidity
router1.swapExactTokensForTokens(amountIn, amountOutMin, path, to, deadline);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 47](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L47)
```solidity
router1.swapTokensForExactTokens(amountOut, amountInMax, path, to, deadline);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 48](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L48)
```solidity
router1.swapExactETHForTokens(amountOutMin, path, to, deadline);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 49](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L49)
```solidity
router1.swapTokensForExactETH(amountOut, amountInMax, path, to, deadline);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 50](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L50)
```solidity
router1.swapExactTokensForETH(amountIn, amountOutMin, path, to, deadline);
```
- Found in src/uniswap/UniswapV2Swapper.sol [Line: 51](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L51)
```solidity
router1.swapETHForExactTokens(amountOut, path, to, deadline);
```
</details>
```