This is page 102 of 103. Use http://codebase.md/cyfrin/aderyn?lines=true&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.json:
--------------------------------------------------------------------------------
```json
1 | {
2 | "files_summary": {
3 | "total_source_units": 126,
4 | "total_sloc": 4727
5 | },
6 | "files_details": {
7 | "files_details": [
8 | {
9 | "file_path": "src/AbstractContract.sol",
10 | "n_sloc": 12
11 | },
12 | {
13 | "file_path": "src/AderynIgnoreCustomDetectors.sol",
14 | "n_sloc": 17
15 | },
16 | {
17 | "file_path": "src/AdminContract.sol",
18 | "n_sloc": 11
19 | },
20 | {
21 | "file_path": "src/ArbitraryTransferFrom.sol",
22 | "n_sloc": 37
23 | },
24 | {
25 | "file_path": "src/AssemblyExample.sol",
26 | "n_sloc": 9
27 | },
28 | {
29 | "file_path": "src/AssertStateChange.sol",
30 | "n_sloc": 11
31 | },
32 | {
33 | "file_path": "src/BooleanEquality.sol",
34 | "n_sloc": 27
35 | },
36 | {
37 | "file_path": "src/BuiltinSymbolShadow.sol",
38 | "n_sloc": 14
39 | },
40 | {
41 | "file_path": "src/CacheArrayLength.sol",
42 | "n_sloc": 38
43 | },
44 | {
45 | "file_path": "src/CallGraphTests.sol",
46 | "n_sloc": 49
47 | },
48 | {
49 | "file_path": "src/Casting.sol",
50 | "n_sloc": 146
51 | },
52 | {
53 | "file_path": "src/CompilerBugStorageSignedIntegerArray.sol",
54 | "n_sloc": 13
55 | },
56 | {
57 | "file_path": "src/ConstFuncChangeState.sol",
58 | "n_sloc": 15
59 | },
60 | {
61 | "file_path": "src/ConstantFuncsAssembly.sol",
62 | "n_sloc": 26
63 | },
64 | {
65 | "file_path": "src/ConstantsLiterals.sol",
66 | "n_sloc": 28
67 | },
68 | {
69 | "file_path": "src/ContractLocksEther.sol",
70 | "n_sloc": 142
71 | },
72 | {
73 | "file_path": "src/ContractWithTodo.sol",
74 | "n_sloc": 7
75 | },
76 | {
77 | "file_path": "src/CostlyOperationsInsideLoops.sol",
78 | "n_sloc": 17
79 | },
80 | {
81 | "file_path": "src/Counter.sol",
82 | "n_sloc": 20
83 | },
84 | {
85 | "file_path": "src/CrazyPragma.sol",
86 | "n_sloc": 4
87 | },
88 | {
89 | "file_path": "src/DangerousStrictEquality1.sol",
90 | "n_sloc": 6
91 | },
92 | {
93 | "file_path": "src/DangerousStrictEquality2.sol",
94 | "n_sloc": 9
95 | },
96 | {
97 | "file_path": "src/DangerousUnaryOperator.sol",
98 | "n_sloc": 13
99 | },
100 | {
101 | "file_path": "src/DeadCode.sol",
102 | "n_sloc": 23
103 | },
104 | {
105 | "file_path": "src/DelegateCallWithoutAddressCheck.sol",
106 | "n_sloc": 31
107 | },
108 | {
109 | "file_path": "src/DeletionNestedMappingStructureContract.sol",
110 | "n_sloc": 11
111 | },
112 | {
113 | "file_path": "src/DeprecatedOZFunctions.sol",
114 | "n_sloc": 32
115 | },
116 | {
117 | "file_path": "src/DivisionBeforeMultiplication.sol",
118 | "n_sloc": 22
119 | },
120 | {
121 | "file_path": "src/DynamicArrayLengthAssignment.sol",
122 | "n_sloc": 16
123 | },
124 | {
125 | "file_path": "src/EmitAfterExternalCall.sol",
126 | "n_sloc": 67
127 | },
128 | {
129 | "file_path": "src/EmptyBlocks.sol",
130 | "n_sloc": 48
131 | },
132 | {
133 | "file_path": "src/EnumerableSetIteration.sol",
134 | "n_sloc": 55
135 | },
136 | {
137 | "file_path": "src/ExperimentalEncoder.sol",
138 | "n_sloc": 4
139 | },
140 | {
141 | "file_path": "src/ExternalCalls.sol",
142 | "n_sloc": 60
143 | },
144 | {
145 | "file_path": "src/FunctionInitializingState.sol",
146 | "n_sloc": 49
147 | },
148 | {
149 | "file_path": "src/FunctionPointers.sol",
150 | "n_sloc": 10
151 | },
152 | {
153 | "file_path": "src/FunctionSignatureCollision.sol",
154 | "n_sloc": 9
155 | },
156 | {
157 | "file_path": "src/HugeConstants.sol",
158 | "n_sloc": 36
159 | },
160 | {
161 | "file_path": "src/IgnoreEverything.sol",
162 | "n_sloc": 5
163 | },
164 | {
165 | "file_path": "src/InconsistentUints.sol",
166 | "n_sloc": 17
167 | },
168 | {
169 | "file_path": "src/IncorrectCaretOperator.sol",
170 | "n_sloc": 16
171 | },
172 | {
173 | "file_path": "src/IncorrectERC20.sol",
174 | "n_sloc": 98
175 | },
176 | {
177 | "file_path": "src/IncorrectERC721.sol",
178 | "n_sloc": 238
179 | },
180 | {
181 | "file_path": "src/IncorrectModifier.sol",
182 | "n_sloc": 65
183 | },
184 | {
185 | "file_path": "src/IncorrectShift.sol",
186 | "n_sloc": 17
187 | },
188 | {
189 | "file_path": "src/InternalFunctions.sol",
190 | "n_sloc": 22
191 | },
192 | {
193 | "file_path": "src/KeccakContract.sol",
194 | "n_sloc": 21
195 | },
196 | {
197 | "file_path": "src/LocalVariableShadow.sol",
198 | "n_sloc": 23
199 | },
200 | {
201 | "file_path": "src/MissingInheritance.sol",
202 | "n_sloc": 39
203 | },
204 | {
205 | "file_path": "src/MisusedBoolean.sol",
206 | "n_sloc": 67
207 | },
208 | {
209 | "file_path": "src/MsgValueInLoop.sol",
210 | "n_sloc": 55
211 | },
212 | {
213 | "file_path": "src/MultipleConstructorSchemes.sol",
214 | "n_sloc": 10
215 | },
216 | {
217 | "file_path": "src/MultiplePlaceholders.sol",
218 | "n_sloc": 40
219 | },
220 | {
221 | "file_path": "src/OnceModifierExample.sol",
222 | "n_sloc": 8
223 | },
224 | {
225 | "file_path": "src/OnlyLibrary.sol",
226 | "n_sloc": 2
227 | },
228 | {
229 | "file_path": "src/OutOfOrderRetryable.sol",
230 | "n_sloc": 165
231 | },
232 | {
233 | "file_path": "src/PragmaRange.sol",
234 | "n_sloc": 6
235 | },
236 | {
237 | "file_path": "src/PreDeclaredVarUsage.sol",
238 | "n_sloc": 9
239 | },
240 | {
241 | "file_path": "src/PublicFunction.sol",
242 | "n_sloc": 15
243 | },
244 | {
245 | "file_path": "src/PublicVariableReadInExternalContext.sol",
246 | "n_sloc": 32
247 | },
248 | {
249 | "file_path": "src/RTLO.sol",
250 | "n_sloc": 7
251 | },
252 | {
253 | "file_path": "src/RedundantStatements.sol",
254 | "n_sloc": 14
255 | },
256 | {
257 | "file_path": "src/ReturnBomb.sol",
258 | "n_sloc": 44
259 | },
260 | {
261 | "file_path": "src/RevertsAndRequriesInLoops.sol",
262 | "n_sloc": 27
263 | },
264 | {
265 | "file_path": "src/SendEtherNoChecks.sol",
266 | "n_sloc": 58
267 | },
268 | {
269 | "file_path": "src/SendEtherNoChecksLibImport.sol",
270 | "n_sloc": 17
271 | },
272 | {
273 | "file_path": "src/StateChangeAfterExternalCall.sol",
274 | "n_sloc": 54
275 | },
276 | {
277 | "file_path": "src/StateShadowing.sol",
278 | "n_sloc": 17
279 | },
280 | {
281 | "file_path": "src/StateVariableCouldBeDeclaredConstant.sol",
282 | "n_sloc": 27
283 | },
284 | {
285 | "file_path": "src/StateVariableCouldBeDeclaredImmutable.sol",
286 | "n_sloc": 22
287 | },
288 | {
289 | "file_path": "src/StateVariables.sol",
290 | "n_sloc": 58
291 | },
292 | {
293 | "file_path": "src/StateVariablesChangesWithoutEvents.sol",
294 | "n_sloc": 80
295 | },
296 | {
297 | "file_path": "src/StateVariablesManipulation.sol",
298 | "n_sloc": 250
299 | },
300 | {
301 | "file_path": "src/StorageConditionals.sol",
302 | "n_sloc": 59
303 | },
304 | {
305 | "file_path": "src/StorageParameters.sol",
306 | "n_sloc": 16
307 | },
308 | {
309 | "file_path": "src/T11sTranferer.sol",
310 | "n_sloc": 8
311 | },
312 | {
313 | "file_path": "src/TautologicalCompare.sol",
314 | "n_sloc": 17
315 | },
316 | {
317 | "file_path": "src/TautologyOrContradiction.sol",
318 | "n_sloc": 11
319 | },
320 | {
321 | "file_path": "src/TestERC20.sol",
322 | "n_sloc": 62
323 | },
324 | {
325 | "file_path": "src/TransientKeyword.sol",
326 | "n_sloc": 10
327 | },
328 | {
329 | "file_path": "src/Trump.sol",
330 | "n_sloc": 281
331 | },
332 | {
333 | "file_path": "src/TxOriginUsedForAuth.sol",
334 | "n_sloc": 43
335 | },
336 | {
337 | "file_path": "src/U2.sol",
338 | "n_sloc": 3
339 | },
340 | {
341 | "file_path": "src/U3.sol",
342 | "n_sloc": 2
343 | },
344 | {
345 | "file_path": "src/U4.sol",
346 | "n_sloc": 3
347 | },
348 | {
349 | "file_path": "src/U5.sol",
350 | "n_sloc": 6
351 | },
352 | {
353 | "file_path": "src/UncheckedCalls.sol",
354 | "n_sloc": 24
355 | },
356 | {
357 | "file_path": "src/UncheckedReturn.sol",
358 | "n_sloc": 33
359 | },
360 | {
361 | "file_path": "src/UncheckedSend.sol",
362 | "n_sloc": 18
363 | },
364 | {
365 | "file_path": "src/UninitializedLocalVariables.sol",
366 | "n_sloc": 62
367 | },
368 | {
369 | "file_path": "src/UninitializedStateVariable.sol",
370 | "n_sloc": 29
371 | },
372 | {
373 | "file_path": "src/UnprotectedInitialize.sol",
374 | "n_sloc": 44
375 | },
376 | {
377 | "file_path": "src/UnsafeERC721Mint.sol",
378 | "n_sloc": 18
379 | },
380 | {
381 | "file_path": "src/UnusedError.sol",
382 | "n_sloc": 23
383 | },
384 | {
385 | "file_path": "src/UnusedImport.sol",
386 | "n_sloc": 10
387 | },
388 | {
389 | "file_path": "src/UnusedStateVariables.sol",
390 | "n_sloc": 12
391 | },
392 | {
393 | "file_path": "src/UsingSelfdestruct.sol",
394 | "n_sloc": 6
395 | },
396 | {
397 | "file_path": "src/VoidConstructor.sol",
398 | "n_sloc": 21
399 | },
400 | {
401 | "file_path": "src/WeakRandomness.sol",
402 | "n_sloc": 59
403 | },
404 | {
405 | "file_path": "src/WrongOrderOfLayout.sol",
406 | "n_sloc": 13
407 | },
408 | {
409 | "file_path": "src/YulReturn.sol",
410 | "n_sloc": 8
411 | },
412 | {
413 | "file_path": "src/ZeroAddressCheck.sol",
414 | "n_sloc": 41
415 | },
416 | {
417 | "file_path": "src/auditor_mode/ExternalCalls.sol",
418 | "n_sloc": 65
419 | },
420 | {
421 | "file_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
422 | "n_sloc": 45
423 | },
424 | {
425 | "file_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
426 | "n_sloc": 32
427 | },
428 | {
429 | "file_path": "src/cloc/EmptyContractFile.sol",
430 | "n_sloc": 0
431 | },
432 | {
433 | "file_path": "src/cloc/HeavilyCommentedContract.sol",
434 | "n_sloc": 21
435 | },
436 | {
437 | "file_path": "src/control_flow/SimpleProgram.sol",
438 | "n_sloc": 188
439 | },
440 | {
441 | "file_path": "src/eth2/DepositContract.sol",
442 | "n_sloc": 96
443 | },
444 | {
445 | "file_path": "src/inheritance/ExtendedInheritance.sol",
446 | "n_sloc": 18
447 | },
448 | {
449 | "file_path": "src/inheritance/IContractInheritance.sol",
450 | "n_sloc": 4
451 | },
452 | {
453 | "file_path": "src/inheritance/InheritanceBase.sol",
454 | "n_sloc": 12
455 | },
456 | {
457 | "file_path": "src/nested/1/Nested.sol",
458 | "n_sloc": 10
459 | },
460 | {
461 | "file_path": "src/nested/2/Nested.sol",
462 | "n_sloc": 7
463 | },
464 | {
465 | "file_path": "src/nested_mappings/LaterVersion.sol",
466 | "n_sloc": 10
467 | },
468 | {
469 | "file_path": "src/nested_mappings/NestedMappings.sol",
470 | "n_sloc": 10
471 | },
472 | {
473 | "file_path": "src/parent_chain/ParentChainContract.sol",
474 | "n_sloc": 29
475 | },
476 | {
477 | "file_path": "src/reused_contract_name/ContractA.sol",
478 | "n_sloc": 7
479 | },
480 | {
481 | "file_path": "src/reused_contract_name/ContractB.sol",
482 | "n_sloc": 7
483 | },
484 | {
485 | "file_path": "src/router/ExternalCalls.sol",
486 | "n_sloc": 30
487 | },
488 | {
489 | "file_path": "src/router/FallbackAndReceiveOverrides.sol",
490 | "n_sloc": 17
491 | },
492 | {
493 | "file_path": "src/router/InternalCalls.sol",
494 | "n_sloc": 135
495 | },
496 | {
497 | "file_path": "src/router/ModifierCalls.sol",
498 | "n_sloc": 33
499 | },
500 | {
501 | "file_path": "src/router/VarOverridesFunction.sol",
502 | "n_sloc": 20
503 | },
504 | {
505 | "file_path": "src/uniswap/UniswapV2Swapper.sol",
506 | "n_sloc": 50
507 | },
508 | {
509 | "file_path": "src/uniswap/UniswapV3Swapper.sol",
510 | "n_sloc": 150
511 | }
512 | ]
513 | },
514 | "issue_count": {
515 | "high": 39,
516 | "low": 48
517 | },
518 | "high_issues": {
519 | "issues": [
520 | {
521 | "title": "`abi.encodePacked()` Hash Collision",
522 | "description": "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.",
523 | "detector_name": "abi-encode-packed-hash-collision",
524 | "instances": [
525 | {
526 | "contract_path": "src/KeccakContract.sol",
527 | "line_no": 18,
528 | "src": "587:16",
529 | "src_char": "587:16"
530 | },
531 | {
532 | "contract_path": "src/KeccakContract.sol",
533 | "line_no": 22,
534 | "src": "734:16",
535 | "src_char": "734:16"
536 | },
537 | {
538 | "contract_path": "src/KeccakContract.sol",
539 | "line_no": 26,
540 | "src": "887:16",
541 | "src_char": "887:16"
542 | }
543 | ]
544 | },
545 | {
546 | "title": "Arbitrary `from` Passed to `transferFrom`",
547 | "description": "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.",
548 | "detector_name": "arbitrary-transfer-from",
549 | "instances": [
550 | {
551 | "contract_path": "src/ArbitraryTransferFrom.sol",
552 | "line_no": 24,
553 | "src": "738:42",
554 | "src_char": "738:42"
555 | },
556 | {
557 | "contract_path": "src/ArbitraryTransferFrom.sol",
558 | "line_no": 29,
559 | "src": "879:53",
560 | "src_char": "879:53"
561 | },
562 | {
563 | "contract_path": "src/DeprecatedOZFunctions.sol",
564 | "line_no": 17,
565 | "src": "579:39",
566 | "src_char": "579:39"
567 | },
568 | {
569 | "contract_path": "src/DeprecatedOZFunctions.sol",
570 | "line_no": 47,
571 | "src": "1598:35",
572 | "src_char": "1598:35"
573 | }
574 | ]
575 | },
576 | {
577 | "title": "Unprotected initializer",
578 | "description": "Consider protecting the initializer functions with modifiers.",
579 | "detector_name": "unprotected-initializer",
580 | "instances": [
581 | {
582 | "contract_path": "src/UnprotectedInitialize.sol",
583 | "line_no": 37,
584 | "src": "916:33",
585 | "src_char": "916:33"
586 | },
587 | {
588 | "contract_path": "src/UnprotectedInitialize.sol",
589 | "line_no": 70,
590 | "src": "1798:27",
591 | "src_char": "1798:27"
592 | }
593 | ]
594 | },
595 | {
596 | "title": "Unsafe Casting of integers",
597 | "description": "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.",
598 | "detector_name": "unsafe-casting",
599 | "instances": [
600 | {
601 | "contract_path": "src/Casting.sol",
602 | "line_no": 42,
603 | "src": "1127:10",
604 | "src_char": "1127:10"
605 | },
606 | {
607 | "contract_path": "src/Casting.sol",
608 | "line_no": 43,
609 | "src": "1159:10",
610 | "src_char": "1159:10"
611 | },
612 | {
613 | "contract_path": "src/Casting.sol",
614 | "line_no": 44,
615 | "src": "1191:10",
616 | "src_char": "1191:10"
617 | },
618 | {
619 | "contract_path": "src/Casting.sol",
620 | "line_no": 45,
621 | "src": "1223:10",
622 | "src_char": "1223:10"
623 | },
624 | {
625 | "contract_path": "src/Casting.sol",
626 | "line_no": 46,
627 | "src": "1255:10",
628 | "src_char": "1255:10"
629 | },
630 | {
631 | "contract_path": "src/Casting.sol",
632 | "line_no": 47,
633 | "src": "1287:10",
634 | "src_char": "1287:10"
635 | },
636 | {
637 | "contract_path": "src/Casting.sol",
638 | "line_no": 48,
639 | "src": "1319:10",
640 | "src_char": "1319:10"
641 | },
642 | {
643 | "contract_path": "src/Casting.sol",
644 | "line_no": 49,
645 | "src": "1351:10",
646 | "src_char": "1351:10"
647 | },
648 | {
649 | "contract_path": "src/Casting.sol",
650 | "line_no": 50,
651 | "src": "1383:10",
652 | "src_char": "1383:10"
653 | },
654 | {
655 | "contract_path": "src/Casting.sol",
656 | "line_no": 51,
657 | "src": "1415:10",
658 | "src_char": "1415:10"
659 | },
660 | {
661 | "contract_path": "src/Casting.sol",
662 | "line_no": 52,
663 | "src": "1447:10",
664 | "src_char": "1447:10"
665 | },
666 | {
667 | "contract_path": "src/Casting.sol",
668 | "line_no": 53,
669 | "src": "1479:10",
670 | "src_char": "1479:10"
671 | },
672 | {
673 | "contract_path": "src/Casting.sol",
674 | "line_no": 54,
675 | "src": "1511:10",
676 | "src_char": "1511:10"
677 | },
678 | {
679 | "contract_path": "src/Casting.sol",
680 | "line_no": 55,
681 | "src": "1543:10",
682 | "src_char": "1543:10"
683 | },
684 | {
685 | "contract_path": "src/Casting.sol",
686 | "line_no": 56,
687 | "src": "1575:10",
688 | "src_char": "1575:10"
689 | },
690 | {
691 | "contract_path": "src/Casting.sol",
692 | "line_no": 57,
693 | "src": "1607:10",
694 | "src_char": "1607:10"
695 | },
696 | {
697 | "contract_path": "src/Casting.sol",
698 | "line_no": 58,
699 | "src": "1639:10",
700 | "src_char": "1639:10"
701 | },
702 | {
703 | "contract_path": "src/Casting.sol",
704 | "line_no": 59,
705 | "src": "1671:10",
706 | "src_char": "1671:10"
707 | },
708 | {
709 | "contract_path": "src/Casting.sol",
710 | "line_no": 60,
711 | "src": "1703:10",
712 | "src_char": "1703:10"
713 | },
714 | {
715 | "contract_path": "src/Casting.sol",
716 | "line_no": 61,
717 | "src": "1734:9",
718 | "src_char": "1734:9"
719 | },
720 | {
721 | "contract_path": "src/Casting.sol",
722 | "line_no": 62,
723 | "src": "1764:9",
724 | "src_char": "1764:9"
725 | },
726 | {
727 | "contract_path": "src/Casting.sol",
728 | "line_no": 63,
729 | "src": "1794:9",
730 | "src_char": "1794:9"
731 | },
732 | {
733 | "contract_path": "src/Casting.sol",
734 | "line_no": 64,
735 | "src": "1824:9",
736 | "src_char": "1824:9"
737 | },
738 | {
739 | "contract_path": "src/Casting.sol",
740 | "line_no": 65,
741 | "src": "1854:9",
742 | "src_char": "1854:9"
743 | },
744 | {
745 | "contract_path": "src/Casting.sol",
746 | "line_no": 66,
747 | "src": "1884:9",
748 | "src_char": "1884:9"
749 | },
750 | {
751 | "contract_path": "src/Casting.sol",
752 | "line_no": 67,
753 | "src": "1915:9",
754 | "src_char": "1915:9"
755 | },
756 | {
757 | "contract_path": "src/Casting.sol",
758 | "line_no": 68,
759 | "src": "1946:10",
760 | "src_char": "1946:10"
761 | },
762 | {
763 | "contract_path": "src/Casting.sol",
764 | "line_no": 69,
765 | "src": "1978:10",
766 | "src_char": "1978:10"
767 | },
768 | {
769 | "contract_path": "src/Casting.sol",
770 | "line_no": 70,
771 | "src": "2010:10",
772 | "src_char": "2010:10"
773 | },
774 | {
775 | "contract_path": "src/Casting.sol",
776 | "line_no": 71,
777 | "src": "2042:10",
778 | "src_char": "2042:10"
779 | },
780 | {
781 | "contract_path": "src/Casting.sol",
782 | "line_no": 72,
783 | "src": "2075:9",
784 | "src_char": "2075:9"
785 | },
786 | {
787 | "contract_path": "src/Casting.sol",
788 | "line_no": 80,
789 | "src": "2304:9",
790 | "src_char": "2304:9"
791 | },
792 | {
793 | "contract_path": "src/Casting.sol",
794 | "line_no": 81,
795 | "src": "2334:9",
796 | "src_char": "2334:9"
797 | },
798 | {
799 | "contract_path": "src/Casting.sol",
800 | "line_no": 82,
801 | "src": "2364:9",
802 | "src_char": "2364:9"
803 | },
804 | {
805 | "contract_path": "src/Casting.sol",
806 | "line_no": 83,
807 | "src": "2394:9",
808 | "src_char": "2394:9"
809 | },
810 | {
811 | "contract_path": "src/Casting.sol",
812 | "line_no": 84,
813 | "src": "2424:9",
814 | "src_char": "2424:9"
815 | },
816 | {
817 | "contract_path": "src/Casting.sol",
818 | "line_no": 85,
819 | "src": "2454:9",
820 | "src_char": "2454:9"
821 | },
822 | {
823 | "contract_path": "src/Casting.sol",
824 | "line_no": 86,
825 | "src": "2484:9",
826 | "src_char": "2484:9"
827 | },
828 | {
829 | "contract_path": "src/Casting.sol",
830 | "line_no": 87,
831 | "src": "2514:9",
832 | "src_char": "2514:9"
833 | },
834 | {
835 | "contract_path": "src/Casting.sol",
836 | "line_no": 88,
837 | "src": "2544:9",
838 | "src_char": "2544:9"
839 | },
840 | {
841 | "contract_path": "src/Casting.sol",
842 | "line_no": 89,
843 | "src": "2574:9",
844 | "src_char": "2574:9"
845 | },
846 | {
847 | "contract_path": "src/Casting.sol",
848 | "line_no": 90,
849 | "src": "2604:9",
850 | "src_char": "2604:9"
851 | },
852 | {
853 | "contract_path": "src/Casting.sol",
854 | "line_no": 91,
855 | "src": "2634:9",
856 | "src_char": "2634:9"
857 | },
858 | {
859 | "contract_path": "src/Casting.sol",
860 | "line_no": 92,
861 | "src": "2664:9",
862 | "src_char": "2664:9"
863 | },
864 | {
865 | "contract_path": "src/Casting.sol",
866 | "line_no": 93,
867 | "src": "2694:9",
868 | "src_char": "2694:9"
869 | },
870 | {
871 | "contract_path": "src/Casting.sol",
872 | "line_no": 94,
873 | "src": "2724:9",
874 | "src_char": "2724:9"
875 | },
876 | {
877 | "contract_path": "src/Casting.sol",
878 | "line_no": 95,
879 | "src": "2754:9",
880 | "src_char": "2754:9"
881 | },
882 | {
883 | "contract_path": "src/Casting.sol",
884 | "line_no": 96,
885 | "src": "2784:9",
886 | "src_char": "2784:9"
887 | },
888 | {
889 | "contract_path": "src/Casting.sol",
890 | "line_no": 97,
891 | "src": "2814:9",
892 | "src_char": "2814:9"
893 | },
894 | {
895 | "contract_path": "src/Casting.sol",
896 | "line_no": 98,
897 | "src": "2844:9",
898 | "src_char": "2844:9"
899 | },
900 | {
901 | "contract_path": "src/Casting.sol",
902 | "line_no": 99,
903 | "src": "2873:8",
904 | "src_char": "2873:8"
905 | },
906 | {
907 | "contract_path": "src/Casting.sol",
908 | "line_no": 100,
909 | "src": "2901:8",
910 | "src_char": "2901:8"
911 | },
912 | {
913 | "contract_path": "src/Casting.sol",
914 | "line_no": 101,
915 | "src": "2929:8",
916 | "src_char": "2929:8"
917 | },
918 | {
919 | "contract_path": "src/Casting.sol",
920 | "line_no": 102,
921 | "src": "2957:8",
922 | "src_char": "2957:8"
923 | },
924 | {
925 | "contract_path": "src/Casting.sol",
926 | "line_no": 103,
927 | "src": "2985:8",
928 | "src_char": "2985:8"
929 | },
930 | {
931 | "contract_path": "src/Casting.sol",
932 | "line_no": 104,
933 | "src": "3013:8",
934 | "src_char": "3013:8"
935 | },
936 | {
937 | "contract_path": "src/Casting.sol",
938 | "line_no": 105,
939 | "src": "3042:8",
940 | "src_char": "3042:8"
941 | },
942 | {
943 | "contract_path": "src/Casting.sol",
944 | "line_no": 106,
945 | "src": "3071:9",
946 | "src_char": "3071:9"
947 | },
948 | {
949 | "contract_path": "src/Casting.sol",
950 | "line_no": 107,
951 | "src": "3101:9",
952 | "src_char": "3101:9"
953 | },
954 | {
955 | "contract_path": "src/Casting.sol",
956 | "line_no": 108,
957 | "src": "3131:9",
958 | "src_char": "3131:9"
959 | },
960 | {
961 | "contract_path": "src/Casting.sol",
962 | "line_no": 109,
963 | "src": "3161:9",
964 | "src_char": "3161:9"
965 | },
966 | {
967 | "contract_path": "src/Casting.sol",
968 | "line_no": 110,
969 | "src": "3192:8",
970 | "src_char": "3192:8"
971 | },
972 | {
973 | "contract_path": "src/Casting.sol",
974 | "line_no": 118,
975 | "src": "3488:10",
976 | "src_char": "3488:10"
977 | },
978 | {
979 | "contract_path": "src/Casting.sol",
980 | "line_no": 119,
981 | "src": "3520:10",
982 | "src_char": "3520:10"
983 | },
984 | {
985 | "contract_path": "src/Casting.sol",
986 | "line_no": 120,
987 | "src": "3552:10",
988 | "src_char": "3552:10"
989 | },
990 | {
991 | "contract_path": "src/Casting.sol",
992 | "line_no": 121,
993 | "src": "3584:10",
994 | "src_char": "3584:10"
995 | },
996 | {
997 | "contract_path": "src/Casting.sol",
998 | "line_no": 122,
999 | "src": "3616:10",
1000 | "src_char": "3616:10"
1001 | },
1002 | {
1003 | "contract_path": "src/Casting.sol",
1004 | "line_no": 123,
1005 | "src": "3648:10",
1006 | "src_char": "3648:10"
1007 | },
1008 | {
1009 | "contract_path": "src/Casting.sol",
1010 | "line_no": 124,
1011 | "src": "3680:10",
1012 | "src_char": "3680:10"
1013 | },
1014 | {
1015 | "contract_path": "src/Casting.sol",
1016 | "line_no": 125,
1017 | "src": "3712:10",
1018 | "src_char": "3712:10"
1019 | },
1020 | {
1021 | "contract_path": "src/Casting.sol",
1022 | "line_no": 126,
1023 | "src": "3744:10",
1024 | "src_char": "3744:10"
1025 | },
1026 | {
1027 | "contract_path": "src/Casting.sol",
1028 | "line_no": 127,
1029 | "src": "3776:10",
1030 | "src_char": "3776:10"
1031 | },
1032 | {
1033 | "contract_path": "src/Casting.sol",
1034 | "line_no": 128,
1035 | "src": "3808:10",
1036 | "src_char": "3808:10"
1037 | },
1038 | {
1039 | "contract_path": "src/Casting.sol",
1040 | "line_no": 129,
1041 | "src": "3840:10",
1042 | "src_char": "3840:10"
1043 | },
1044 | {
1045 | "contract_path": "src/Casting.sol",
1046 | "line_no": 130,
1047 | "src": "3872:10",
1048 | "src_char": "3872:10"
1049 | },
1050 | {
1051 | "contract_path": "src/Casting.sol",
1052 | "line_no": 131,
1053 | "src": "3904:10",
1054 | "src_char": "3904:10"
1055 | },
1056 | {
1057 | "contract_path": "src/Casting.sol",
1058 | "line_no": 132,
1059 | "src": "3936:10",
1060 | "src_char": "3936:10"
1061 | },
1062 | {
1063 | "contract_path": "src/Casting.sol",
1064 | "line_no": 133,
1065 | "src": "3968:10",
1066 | "src_char": "3968:10"
1067 | },
1068 | {
1069 | "contract_path": "src/Casting.sol",
1070 | "line_no": 134,
1071 | "src": "4000:10",
1072 | "src_char": "4000:10"
1073 | },
1074 | {
1075 | "contract_path": "src/Casting.sol",
1076 | "line_no": 135,
1077 | "src": "4032:10",
1078 | "src_char": "4032:10"
1079 | },
1080 | {
1081 | "contract_path": "src/Casting.sol",
1082 | "line_no": 136,
1083 | "src": "4064:10",
1084 | "src_char": "4064:10"
1085 | },
1086 | {
1087 | "contract_path": "src/Casting.sol",
1088 | "line_no": 137,
1089 | "src": "4096:10",
1090 | "src_char": "4096:10"
1091 | },
1092 | {
1093 | "contract_path": "src/Casting.sol",
1094 | "line_no": 138,
1095 | "src": "4128:10",
1096 | "src_char": "4128:10"
1097 | },
1098 | {
1099 | "contract_path": "src/Casting.sol",
1100 | "line_no": 139,
1101 | "src": "4160:10",
1102 | "src_char": "4160:10"
1103 | },
1104 | {
1105 | "contract_path": "src/Casting.sol",
1106 | "line_no": 140,
1107 | "src": "4191:9",
1108 | "src_char": "4191:9"
1109 | },
1110 | {
1111 | "contract_path": "src/Casting.sol",
1112 | "line_no": 141,
1113 | "src": "4221:9",
1114 | "src_char": "4221:9"
1115 | },
1116 | {
1117 | "contract_path": "src/Casting.sol",
1118 | "line_no": 142,
1119 | "src": "4251:9",
1120 | "src_char": "4251:9"
1121 | },
1122 | {
1123 | "contract_path": "src/Casting.sol",
1124 | "line_no": 143,
1125 | "src": "4282:9",
1126 | "src_char": "4282:9"
1127 | },
1128 | {
1129 | "contract_path": "src/Casting.sol",
1130 | "line_no": 144,
1131 | "src": "4313:10",
1132 | "src_char": "4313:10"
1133 | },
1134 | {
1135 | "contract_path": "src/Casting.sol",
1136 | "line_no": 145,
1137 | "src": "4345:10",
1138 | "src_char": "4345:10"
1139 | },
1140 | {
1141 | "contract_path": "src/Casting.sol",
1142 | "line_no": 146,
1143 | "src": "4377:10",
1144 | "src_char": "4377:10"
1145 | },
1146 | {
1147 | "contract_path": "src/Casting.sol",
1148 | "line_no": 147,
1149 | "src": "4409:10",
1150 | "src_char": "4409:10"
1151 | },
1152 | {
1153 | "contract_path": "src/Casting.sol",
1154 | "line_no": 148,
1155 | "src": "4443:10",
1156 | "src_char": "4443:10"
1157 | },
1158 | {
1159 | "contract_path": "src/Casting.sol",
1160 | "line_no": 155,
1161 | "src": "4642:14",
1162 | "src_char": "4642:14"
1163 | }
1164 | ]
1165 | },
1166 | {
1167 | "title": "EnumerableSet.remove Corrupts Order",
1168 | "description": "If the order of an EnumerableSet is required, removing items in a loop using `at` and `remove` corrupts this order.\nConsider using a different data structure or removing items by collecting them during the loop, then removing after the loop.",
1169 | "detector_name": "enumerable-loop-removal",
1170 | "instances": [
1171 | {
1172 | "contract_path": "src/EnumerableSetIteration.sol",
1173 | "line_no": 31,
1174 | "src": "1105:17",
1175 | "src_char": "1105:17"
1176 | },
1177 | {
1178 | "contract_path": "src/EnumerableSetIteration.sol",
1179 | "line_no": 40,
1180 | "src": "1350:17",
1181 | "src_char": "1350:17"
1182 | },
1183 | {
1184 | "contract_path": "src/EnumerableSetIteration.sol",
1185 | "line_no": 50,
1186 | "src": "1586:17",
1187 | "src_char": "1586:17"
1188 | },
1189 | {
1190 | "contract_path": "src/EnumerableSetIteration.sol",
1191 | "line_no": 59,
1192 | "src": "1865:17",
1193 | "src_char": "1865:17"
1194 | },
1195 | {
1196 | "contract_path": "src/EnumerableSetIteration.sol",
1197 | "line_no": 67,
1198 | "src": "2083:14",
1199 | "src_char": "2083:14"
1200 | }
1201 | ]
1202 | },
1203 | {
1204 | "title": "Experimental ABI Encoder",
1205 | "description": "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.",
1206 | "detector_name": "experimental-encoder",
1207 | "instances": [
1208 | {
1209 | "contract_path": "src/ExperimentalEncoder.sol",
1210 | "line_no": 2,
1211 | "src": "23:33",
1212 | "src_char": "23:33"
1213 | }
1214 | ]
1215 | },
1216 | {
1217 | "title": "Incorrect Assembly Shift Parameter Order",
1218 | "description": "Example: `shl(shifted, 4)` will shift the right constant `4` by `a` bits. The correct order is `shl(4, shifted)`.",
1219 | "detector_name": "incorrect-shift-order",
1220 | "instances": [
1221 | {
1222 | "contract_path": "src/IncorrectShift.sol",
1223 | "line_no": 7,
1224 | "src": "192:15",
1225 | "src_char": "192:15"
1226 | },
1227 | {
1228 | "contract_path": "src/IncorrectShift.sol",
1229 | "line_no": 8,
1230 | "src": "238:15",
1231 | "src_char": "238:15"
1232 | }
1233 | ]
1234 | },
1235 | {
1236 | "title": "Storage Array Edited with Memory",
1237 | "description": "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.",
1238 | "detector_name": "storage-array-memory-edit",
1239 | "instances": [
1240 | {
1241 | "contract_path": "src/StorageParameters.sol",
1242 | "line_no": 11,
1243 | "src": "241:10",
1244 | "src_char": "241:10"
1245 | }
1246 | ]
1247 | },
1248 | {
1249 | "title": "Contract Has Multiple Constructors",
1250 | "description": "In some versions of Solidity, contracts compile with multiple constructors. The first constructor takes precedence. This can lead to unexpected behavior.",
1251 | "detector_name": "multiple-constructors",
1252 | "instances": [
1253 | {
1254 | "contract_path": "src/MultipleConstructorSchemes.sol",
1255 | "line_no": 3,
1256 | "src": "25:180",
1257 | "src_char": "25:180"
1258 | }
1259 | ]
1260 | },
1261 | {
1262 | "title": "Contract Name Reused in Different Files",
1263 | "description": "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.",
1264 | "detector_name": "reused-contract-name",
1265 | "instances": [
1266 | {
1267 | "contract_path": "src/EmitAfterExternalCall.sol",
1268 | "line_no": 4,
1269 | "src": "66:14",
1270 | "src_char": "66:14"
1271 | },
1272 | {
1273 | "contract_path": "src/StateChangeAfterExternalCall.sol",
1274 | "line_no": 4,
1275 | "src": "66:14",
1276 | "src_char": "66:14"
1277 | },
1278 | {
1279 | "contract_path": "src/Trump.sol",
1280 | "line_no": 18,
1281 | "src": "270:7",
1282 | "src_char": "270:7"
1283 | },
1284 | {
1285 | "contract_path": "src/Trump.sol",
1286 | "line_no": 24,
1287 | "src": "394:6",
1288 | "src_char": "394:6"
1289 | },
1290 | {
1291 | "contract_path": "src/Trump.sol",
1292 | "line_no": 73,
1293 | "src": "2166:7",
1294 | "src_char": "2166:7"
1295 | },
1296 | {
1297 | "contract_path": "src/Trump.sol",
1298 | "line_no": 103,
1299 | "src": "2952:18",
1300 | "src_char": "2952:18"
1301 | },
1302 | {
1303 | "contract_path": "src/ZeroAddressCheck.sol",
1304 | "line_no": 4,
1305 | "src": "67:6",
1306 | "src_char": "67:6"
1307 | },
1308 | {
1309 | "contract_path": "src/eth2/DepositContract.sol",
1310 | "line_no": 44,
1311 | "src": "3759:6",
1312 | "src_char": "2271:6"
1313 | },
1314 | {
1315 | "contract_path": "src/nested/1/Nested.sol",
1316 | "line_no": 7,
1317 | "src": "214:6",
1318 | "src_char": "214:6"
1319 | },
1320 | {
1321 | "contract_path": "src/nested/2/Nested.sol",
1322 | "line_no": 7,
1323 | "src": "214:6",
1324 | "src_char": "214:6"
1325 | },
1326 | {
1327 | "contract_path": "src/reused_contract_name/ContractA.sol",
1328 | "line_no": 4,
1329 | "src": "70:10",
1330 | "src_char": "70:10"
1331 | },
1332 | {
1333 | "contract_path": "src/reused_contract_name/ContractB.sol",
1334 | "line_no": 4,
1335 | "src": "70:10",
1336 | "src_char": "70:10"
1337 | },
1338 | {
1339 | "contract_path": "src/router/ExternalCalls.sol",
1340 | "line_no": 4,
1341 | "src": "80:1",
1342 | "src_char": "80:1"
1343 | },
1344 | {
1345 | "contract_path": "src/router/ExternalCalls.sol",
1346 | "line_no": 8,
1347 | "src": "143:1",
1348 | "src_char": "143:1"
1349 | },
1350 | {
1351 | "contract_path": "src/router/ExternalCalls.sol",
1352 | "line_no": 12,
1353 | "src": "188:1",
1354 | "src_char": "188:1"
1355 | },
1356 | {
1357 | "contract_path": "src/router/ExternalCalls.sol",
1358 | "line_no": 31,
1359 | "src": "630:1",
1360 | "src_char": "630:1"
1361 | },
1362 | {
1363 | "contract_path": "src/router/ExternalCalls.sol",
1364 | "line_no": 35,
1365 | "src": "701:1",
1366 | "src_char": "701:1"
1367 | },
1368 | {
1369 | "contract_path": "src/router/ModifierCalls.sol",
1370 | "line_no": 4,
1371 | "src": "88:1",
1372 | "src_char": "88:1"
1373 | },
1374 | {
1375 | "contract_path": "src/router/ModifierCalls.sol",
1376 | "line_no": 12,
1377 | "src": "179:1",
1378 | "src_char": "179:1"
1379 | },
1380 | {
1381 | "contract_path": "src/router/ModifierCalls.sol",
1382 | "line_no": 28,
1383 | "src": "347:1",
1384 | "src_char": "347:1"
1385 | },
1386 | {
1387 | "contract_path": "src/router/ModifierCalls.sol",
1388 | "line_no": 41,
1389 | "src": "538:1",
1390 | "src_char": "538:1"
1391 | },
1392 | {
1393 | "contract_path": "src/router/VarOverridesFunction.sol",
1394 | "line_no": 4,
1395 | "src": "70:1",
1396 | "src_char": "70:1"
1397 | },
1398 | {
1399 | "contract_path": "src/router/VarOverridesFunction.sol",
1400 | "line_no": 9,
1401 | "src": "150:1",
1402 | "src_char": "150:1"
1403 | },
1404 | {
1405 | "contract_path": "src/router/VarOverridesFunction.sol",
1406 | "line_no": 13,
1407 | "src": "219:1",
1408 | "src_char": "219:1"
1409 | },
1410 | {
1411 | "contract_path": "src/router/VarOverridesFunction.sol",
1412 | "line_no": 17,
1413 | "src": "285:1",
1414 | "src_char": "285:1"
1415 | },
1416 | {
1417 | "contract_path": "src/router/VarOverridesFunction.sol",
1418 | "line_no": 21,
1419 | "src": "341:1",
1420 | "src_char": "341:1"
1421 | }
1422 | ]
1423 | },
1424 | {
1425 | "title": "Nested Structs in Mappings pre-0.5.0",
1426 | "description": "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.",
1427 | "detector_name": "nested-struct-in-mapping",
1428 | "instances": [
1429 | {
1430 | "contract_path": "src/nested_mappings/NestedMappings.sol",
1431 | "line_no": 17,
1432 | "src": "367:58",
1433 | "src_char": "367:58"
1434 | }
1435 | ]
1436 | },
1437 | {
1438 | "title": "`selfdestruct` is Deprecated",
1439 | "description": "Remove the `selfdestruct` instruction from the code.",
1440 | "detector_name": "selfdestruct",
1441 | "instances": [
1442 | {
1443 | "contract_path": "src/UsingSelfdestruct.sol",
1444 | "line_no": 7,
1445 | "src": "146:12",
1446 | "src_char": "146:12"
1447 | }
1448 | ]
1449 | },
1450 | {
1451 | "title": "Direct assignment of array length",
1452 | "description": "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",
1453 | "detector_name": "dynamic-array-length-assignment",
1454 | "instances": [
1455 | {
1456 | "contract_path": "src/DynamicArrayLengthAssignment.sol",
1457 | "line_no": 13,
1458 | "src": "295:14",
1459 | "src_char": "295:14"
1460 | },
1461 | {
1462 | "contract_path": "src/DynamicArrayLengthAssignment.sol",
1463 | "line_no": 14,
1464 | "src": "325:18",
1465 | "src_char": "325:18"
1466 | },
1467 | {
1468 | "contract_path": "src/DynamicArrayLengthAssignment.sol",
1469 | "line_no": 15,
1470 | "src": "359:33",
1471 | "src_char": "359:33"
1472 | },
1473 | {
1474 | "contract_path": "src/DynamicArrayLengthAssignment.sol",
1475 | "line_no": 16,
1476 | "src": "408:15",
1477 | "src_char": "408:15"
1478 | },
1479 | {
1480 | "contract_path": "src/DynamicArrayLengthAssignment.sol",
1481 | "line_no": 17,
1482 | "src": "439:14",
1483 | "src_char": "439:14"
1484 | }
1485 | ]
1486 | },
1487 | {
1488 | "title": "Incorrect use of caret operator",
1489 | "description": "The caret operator is usually mistakenly thought of as an exponentiation operator but actually, it's a bitwise xor operator.",
1490 | "detector_name": "incorrect-caret-operator",
1491 | "instances": [
1492 | {
1493 | "contract_path": "src/IncorrectCaretOperator.sol",
1494 | "line_no": 16,
1495 | "src": "519:8",
1496 | "src_char": "519:8"
1497 | },
1498 | {
1499 | "contract_path": "src/IncorrectCaretOperator.sol",
1500 | "line_no": 17,
1501 | "src": "549:16",
1502 | "src_char": "549:16"
1503 | },
1504 | {
1505 | "contract_path": "src/IncorrectCaretOperator.sol",
1506 | "line_no": 18,
1507 | "src": "587:21",
1508 | "src_char": "587:21"
1509 | },
1510 | {
1511 | "contract_path": "src/IncorrectCaretOperator.sol",
1512 | "line_no": 19,
1513 | "src": "631:13",
1514 | "src_char": "631:13"
1515 | },
1516 | {
1517 | "contract_path": "src/IncorrectCaretOperator.sol",
1518 | "line_no": 20,
1519 | "src": "708:12",
1520 | "src_char": "708:12"
1521 | }
1522 | ]
1523 | },
1524 | {
1525 | "title": "Yul block contains `return`",
1526 | "description": "This causes the transaction execution to halt, and nothing after that call will execute including code following the assembly block.",
1527 | "detector_name": "yul-return",
1528 | "instances": [
1529 | {
1530 | "contract_path": "src/YulReturn.sol",
1531 | "line_no": 8,
1532 | "src": "171:12",
1533 | "src_char": "171:12"
1534 | }
1535 | ]
1536 | },
1537 | {
1538 | "title": "Shadowed State Variable",
1539 | "description": "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.",
1540 | "detector_name": "state-variable-shadowing",
1541 | "instances": [
1542 | {
1543 | "contract_path": "src/StateShadowing.sol",
1544 | "line_no": 15,
1545 | "src": "239:13",
1546 | "src_char": "239:13"
1547 | }
1548 | ]
1549 | },
1550 | {
1551 | "title": "Unchecked `bool success` value for ETH send",
1552 | "description": "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.",
1553 | "detector_name": "unchecked-send",
1554 | "instances": [
1555 | {
1556 | "contract_path": "src/UncheckedSend.sol",
1557 | "line_no": 24,
1558 | "src": "815:22",
1559 | "src_char": "815:22"
1560 | }
1561 | ]
1562 | },
1563 | {
1564 | "title": "Misused boolean with logical operators",
1565 | "description": "The patterns `if (… || true)` and `if (.. && false)` will always evaluate to true and false respectively.",
1566 | "detector_name": "misused-boolean",
1567 | "instances": [
1568 | {
1569 | "contract_path": "src/MisusedBoolean.sol",
1570 | "line_no": 12,
1571 | "src": "257:19",
1572 | "src_char": "257:19"
1573 | },
1574 | {
1575 | "contract_path": "src/MisusedBoolean.sol",
1576 | "line_no": 19,
1577 | "src": "419:20",
1578 | "src_char": "419:20"
1579 | },
1580 | {
1581 | "contract_path": "src/MisusedBoolean.sol",
1582 | "line_no": 26,
1583 | "src": "582:20",
1584 | "src_char": "582:20"
1585 | },
1586 | {
1587 | "contract_path": "src/MisusedBoolean.sol",
1588 | "line_no": 33,
1589 | "src": "745:19",
1590 | "src_char": "745:19"
1591 | },
1592 | {
1593 | "contract_path": "src/MisusedBoolean.sol",
1594 | "line_no": 40,
1595 | "src": "908:51",
1596 | "src_char": "908:51"
1597 | },
1598 | {
1599 | "contract_path": "src/MisusedBoolean.sol",
1600 | "line_no": 47,
1601 | "src": "1060:52",
1602 | "src_char": "1060:52"
1603 | },
1604 | {
1605 | "contract_path": "src/MisusedBoolean.sol",
1606 | "line_no": 54,
1607 | "src": "1213:53",
1608 | "src_char": "1213:53"
1609 | },
1610 | {
1611 | "contract_path": "src/MisusedBoolean.sol",
1612 | "line_no": 61,
1613 | "src": "1366:21",
1614 | "src_char": "1366:21"
1615 | },
1616 | {
1617 | "contract_path": "src/MisusedBoolean.sol",
1618 | "line_no": 68,
1619 | "src": "1530:17",
1620 | "src_char": "1530:17"
1621 | },
1622 | {
1623 | "contract_path": "src/MisusedBoolean.sol",
1624 | "line_no": 75,
1625 | "src": "1691:18",
1626 | "src_char": "1691:18"
1627 | }
1628 | ]
1629 | },
1630 | {
1631 | "title": "ETH transferred without address checks",
1632 | "description": "Consider introducing checks for `msg.sender` to ensure the recipient of the money is as intended.",
1633 | "detector_name": "eth-send-unchecked-address",
1634 | "instances": [
1635 | {
1636 | "contract_path": "src/ArbitraryTransferFrom.sol",
1637 | "line_no": 23,
1638 | "src": "672:4",
1639 | "src_char": "672:4"
1640 | },
1641 | {
1642 | "contract_path": "src/ArbitraryTransferFrom.sol",
1643 | "line_no": 28,
1644 | "src": "813:4",
1645 | "src_char": "813:4"
1646 | },
1647 | {
1648 | "contract_path": "src/ArbitraryTransferFrom.sol",
1649 | "line_no": 37,
1650 | "src": "1112:5",
1651 | "src_char": "1112:5"
1652 | },
1653 | {
1654 | "contract_path": "src/ArbitraryTransferFrom.sol",
1655 | "line_no": 41,
1656 | "src": "1235:5",
1657 | "src_char": "1235:5"
1658 | },
1659 | {
1660 | "contract_path": "src/ArbitraryTransferFrom.sol",
1661 | "line_no": 45,
1662 | "src": "1369:5",
1663 | "src_char": "1369:5"
1664 | },
1665 | {
1666 | "contract_path": "src/ArbitraryTransferFrom.sol",
1667 | "line_no": 49,
1668 | "src": "1506:5",
1669 | "src_char": "1506:5"
1670 | },
1671 | {
1672 | "contract_path": "src/CallGraphTests.sol",
1673 | "line_no": 38,
1674 | "src": "686:16",
1675 | "src_char": "686:16"
1676 | },
1677 | {
1678 | "contract_path": "src/ContractLocksEther.sol",
1679 | "line_no": 94,
1680 | "src": "2981:11",
1681 | "src_char": "2981:11"
1682 | },
1683 | {
1684 | "contract_path": "src/ContractLocksEther.sol",
1685 | "line_no": 131,
1686 | "src": "4205:11",
1687 | "src_char": "4205:11"
1688 | },
1689 | {
1690 | "contract_path": "src/ContractLocksEther.sol",
1691 | "line_no": 167,
1692 | "src": "5373:11",
1693 | "src_char": "5373:11"
1694 | },
1695 | {
1696 | "contract_path": "src/ContractLocksEther.sol",
1697 | "line_no": 194,
1698 | "src": "6342:11",
1699 | "src_char": "6342:11"
1700 | },
1701 | {
1702 | "contract_path": "src/DeprecatedOZFunctions.sol",
1703 | "line_no": 16,
1704 | "src": "488:16",
1705 | "src_char": "488:16"
1706 | },
1707 | {
1708 | "contract_path": "src/DeprecatedOZFunctions.sol",
1709 | "line_no": 26,
1710 | "src": "821:11",
1711 | "src_char": "821:11"
1712 | },
1713 | {
1714 | "contract_path": "src/ExternalCalls.sol",
1715 | "line_no": 67,
1716 | "src": "1218:4",
1717 | "src_char": "1218:4"
1718 | },
1719 | {
1720 | "contract_path": "src/OutOfOrderRetryable.sol",
1721 | "line_no": 167,
1722 | "src": "4685:13",
1723 | "src_char": "4685:13"
1724 | },
1725 | {
1726 | "contract_path": "src/OutOfOrderRetryable.sol",
1727 | "line_no": 175,
1728 | "src": "5072:7",
1729 | "src_char": "5072:7"
1730 | },
1731 | {
1732 | "contract_path": "src/SendEtherNoChecks.sol",
1733 | "line_no": 53,
1734 | "src": "1060:5",
1735 | "src_char": "1060:5"
1736 | },
1737 | {
1738 | "contract_path": "src/SendEtherNoChecks.sol",
1739 | "line_no": 77,
1740 | "src": "1405:5",
1741 | "src_char": "1405:5"
1742 | },
1743 | {
1744 | "contract_path": "src/SendEtherNoChecks.sol",
1745 | "line_no": 99,
1746 | "src": "1795:5",
1747 | "src_char": "1795:5"
1748 | },
1749 | {
1750 | "contract_path": "src/Trump.sol",
1751 | "line_no": 321,
1752 | "src": "10940:10",
1753 | "src_char": "10940:10"
1754 | },
1755 | {
1756 | "contract_path": "src/UncheckedCalls.sol",
1757 | "line_no": 6,
1758 | "src": "99:110",
1759 | "src_char": "99:110"
1760 | },
1761 | {
1762 | "contract_path": "src/UncheckedCalls.sol",
1763 | "line_no": 22,
1764 | "src": "572:359",
1765 | "src_char": "572:359"
1766 | },
1767 | {
1768 | "contract_path": "src/UncheckedSend.sol",
1769 | "line_no": 6,
1770 | "src": "85:246",
1771 | "src_char": "85:246"
1772 | },
1773 | {
1774 | "contract_path": "src/UncheckedSend.sol",
1775 | "line_no": 12,
1776 | "src": "337:190",
1777 | "src_char": "337:190"
1778 | },
1779 | {
1780 | "contract_path": "src/UncheckedSend.sol",
1781 | "line_no": 17,
1782 | "src": "533:184",
1783 | "src_char": "533:184"
1784 | },
1785 | {
1786 | "contract_path": "src/UncheckedSend.sol",
1787 | "line_no": 22,
1788 | "src": "723:186",
1789 | "src_char": "723:186"
1790 | },
1791 | {
1792 | "contract_path": "src/UninitializedStateVariable.sol",
1793 | "line_no": 17,
1794 | "src": "563:8",
1795 | "src_char": "563:8"
1796 | }
1797 | ]
1798 | },
1799 | {
1800 | "title": "`delegatecall` to an Arbitrary Address",
1801 | "description": "Making a `delegatecall` to an arbitrary address without any checks is dangerous. Consider adding requirements on the target address.",
1802 | "detector_name": "delegate-call-unchecked-address",
1803 | "instances": [
1804 | {
1805 | "contract_path": "src/DelegateCallWithoutAddressCheck.sol",
1806 | "line_no": 15,
1807 | "src": "392:9",
1808 | "src_char": "392:9"
1809 | },
1810 | {
1811 | "contract_path": "src/UncheckedCalls.sol",
1812 | "line_no": 14,
1813 | "src": "323:118",
1814 | "src_char": "323:118"
1815 | },
1816 | {
1817 | "contract_path": "src/UncheckedCalls.sol",
1818 | "line_no": 22,
1819 | "src": "572:359",
1820 | "src_char": "572:359"
1821 | },
1822 | {
1823 | "contract_path": "src/auditor_mode/ExternalCalls.sol",
1824 | "line_no": 38,
1825 | "src": "1253:28",
1826 | "src_char": "1253:28"
1827 | },
1828 | {
1829 | "contract_path": "src/inheritance/ExtendedInheritance.sol",
1830 | "line_no": 14,
1831 | "src": "391:15",
1832 | "src_char": "391:15"
1833 | }
1834 | ]
1835 | },
1836 | {
1837 | "title": "Tautological comparison",
1838 | "description": "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.",
1839 | "detector_name": "tautological-compare",
1840 | "instances": [
1841 | {
1842 | "contract_path": "src/TautologicalCompare.sol",
1843 | "line_no": 18,
1844 | "src": "528:6",
1845 | "src_char": "528:6"
1846 | },
1847 | {
1848 | "contract_path": "src/TautologicalCompare.sol",
1849 | "line_no": 23,
1850 | "src": "634:5",
1851 | "src_char": "634:5"
1852 | },
1853 | {
1854 | "contract_path": "src/TautologicalCompare.sol",
1855 | "line_no": 28,
1856 | "src": "739:5",
1857 | "src_char": "739:5"
1858 | }
1859 | ]
1860 | },
1861 | {
1862 | "title": "RTLO character detected in file: \\u{202e}",
1863 | "description": "The right to left override character may be misleading and cause potential attacks by visually misordering method arguments.",
1864 | "detector_name": "rtlo",
1865 | "instances": [
1866 | {
1867 | "contract_path": "src/RTLO.sol",
1868 | "line_no": 3,
1869 | "src": "33:157",
1870 | "src_char": "33:155"
1871 | }
1872 | ]
1873 | },
1874 | {
1875 | "title": "Dangerous unary operator",
1876 | "description": "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.",
1877 | "detector_name": "dangerous-unary-operator",
1878 | "instances": [
1879 | {
1880 | "contract_path": "src/DangerousUnaryOperator.sol",
1881 | "line_no": 12,
1882 | "src": "220:10",
1883 | "src_char": "220:10"
1884 | },
1885 | {
1886 | "contract_path": "src/DangerousUnaryOperator.sol",
1887 | "line_no": 13,
1888 | "src": "247:10",
1889 | "src_char": "247:10"
1890 | }
1891 | ]
1892 | },
1893 | {
1894 | "title": "Tautology or Contradiction in comparison",
1895 | "description": "The condition has been determined to be either always true or always false due to the integer range in which we're operating.",
1896 | "detector_name": "tautology-or-contradiction",
1897 | "instances": [
1898 | {
1899 | "contract_path": "src/EmitAfterExternalCall.sol",
1900 | "line_no": 48,
1901 | "src": "1168:5",
1902 | "src_char": "1168:5"
1903 | },
1904 | {
1905 | "contract_path": "src/TautologyOrContradiction.sol",
1906 | "line_no": 13,
1907 | "src": "296:7",
1908 | "src_char": "296:7"
1909 | },
1910 | {
1911 | "contract_path": "src/TautologyOrContradiction.sol",
1912 | "line_no": 16,
1913 | "src": "369:11",
1914 | "src_char": "369:11"
1915 | }
1916 | ]
1917 | },
1918 | {
1919 | "title": "Dangerous strict equality checks on contract balances",
1920 | "description": "A contract's balance can be forcibly manipulated by another selfdestructing contract. Therefore, it's recommended to use >, <, >= or <= instead of strict equality.",
1921 | "detector_name": "strict-equality-contract-balance",
1922 | "instances": [
1923 | {
1924 | "contract_path": "src/DangerousStrictEquality1.sol",
1925 | "line_no": 6,
1926 | "src": "177:25",
1927 | "src_char": "177:25"
1928 | },
1929 | {
1930 | "contract_path": "src/DangerousStrictEquality2.sol",
1931 | "line_no": 6,
1932 | "src": "177:34",
1933 | "src_char": "177:34"
1934 | },
1935 | {
1936 | "contract_path": "src/DangerousStrictEquality2.sol",
1937 | "line_no": 10,
1938 | "src": "305:43",
1939 | "src_char": "305:43"
1940 | }
1941 | ]
1942 | },
1943 | {
1944 | "title": "Signed integer array in storage (solc `<0.5.10`)",
1945 | "description": "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.",
1946 | "detector_name": "signed-integer-storage-array",
1947 | "instances": [
1948 | {
1949 | "contract_path": "src/CompilerBugStorageSignedIntegerArray.sol",
1950 | "line_no": 9,
1951 | "src": "230:10",
1952 | "src_char": "230:10"
1953 | }
1954 | ]
1955 | },
1956 | {
1957 | "title": "Weak Randomness",
1958 | "description": "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.",
1959 | "detector_name": "weak-randomness",
1960 | "instances": [
1961 | {
1962 | "contract_path": "src/WeakRandomness.sol",
1963 | "line_no": 6,
1964 | "src": "188:70",
1965 | "src_char": "188:70"
1966 | },
1967 | {
1968 | "contract_path": "src/WeakRandomness.sol",
1969 | "line_no": 11,
1970 | "src": "386:41",
1971 | "src_char": "386:41"
1972 | },
1973 | {
1974 | "contract_path": "src/WeakRandomness.sol",
1975 | "line_no": 16,
1976 | "src": "597:20",
1977 | "src_char": "597:20"
1978 | },
1979 | {
1980 | "contract_path": "src/WeakRandomness.sol",
1981 | "line_no": 21,
1982 | "src": "793:20",
1983 | "src_char": "793:20"
1984 | },
1985 | {
1986 | "contract_path": "src/WeakRandomness.sol",
1987 | "line_no": 25,
1988 | "src": "915:20",
1989 | "src_char": "915:20"
1990 | },
1991 | {
1992 | "contract_path": "src/WeakRandomness.sol",
1993 | "line_no": 31,
1994 | "src": "1095:5",
1995 | "src_char": "1095:5"
1996 | },
1997 | {
1998 | "contract_path": "src/WeakRandomness.sol",
1999 | "line_no": 35,
2000 | "src": "1217:37",
2001 | "src_char": "1217:37"
2002 | },
2003 | {
2004 | "contract_path": "src/WeakRandomness.sol",
2005 | "line_no": 41,
2006 | "src": "1434:9",
2007 | "src_char": "1434:9"
2008 | },
2009 | {
2010 | "contract_path": "src/WeakRandomness.sol",
2011 | "line_no": 45,
2012 | "src": "1563:16",
2013 | "src_char": "1563:16"
2014 | }
2015 | ]
2016 | },
2017 | {
2018 | "title": "Usage of variable before declaration",
2019 | "description": "Declare the variable before using it to avoid unintended consequences.",
2020 | "detector_name": "pre-declared-local-variable-usage",
2021 | "instances": [
2022 | {
2023 | "contract_path": "src/PreDeclaredVarUsage.sol",
2024 | "line_no": 8,
2025 | "src": "196:1",
2026 | "src_char": "196:1"
2027 | }
2028 | ]
2029 | },
2030 | {
2031 | "title": "Deletion from a nested mapping",
2032 | "description": "A deletion in a structure containing a mapping will not delete the mapping. The remaining data may be used to compromise the contract.",
2033 | "detector_name": "delete-nested-mapping",
2034 | "instances": [
2035 | {
2036 | "contract_path": "src/DeletionNestedMappingStructureContract.sol",
2037 | "line_no": 17,
2038 | "src": "426:25",
2039 | "src_char": "426:25"
2040 | }
2041 | ]
2042 | },
2043 | {
2044 | "title": "Use of `tx.origin` for authentication",
2045 | "description": "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.",
2046 | "detector_name": "tx-origin-used-for-auth",
2047 | "instances": [
2048 | {
2049 | "contract_path": "src/TxOriginUsedForAuth.sol",
2050 | "line_no": 40,
2051 | "src": "1117:183",
2052 | "src_char": "1117:183"
2053 | },
2054 | {
2055 | "contract_path": "src/TxOriginUsedForAuth.sol",
2056 | "line_no": 51,
2057 | "src": "1431:90",
2058 | "src_char": "1431:90"
2059 | },
2060 | {
2061 | "contract_path": "src/TxOriginUsedForAuth.sol",
2062 | "line_no": 59,
2063 | "src": "1610:68",
2064 | "src_char": "1610:68"
2065 | }
2066 | ]
2067 | },
2068 | {
2069 | "title": "Loop contains `msg.value`",
2070 | "description": "Provide an explicit array of amounts alongside the receivers array, and check that the sum of all amounts matches `msg.value`.",
2071 | "detector_name": "msg-value-in-loop",
2072 | "instances": [
2073 | {
2074 | "contract_path": "src/MsgValueInLoop.sol",
2075 | "line_no": 12,
2076 | "src": "289:107",
2077 | "src_char": "289:107"
2078 | },
2079 | {
2080 | "contract_path": "src/MsgValueInLoop.sol",
2081 | "line_no": 38,
2082 | "src": "988:94",
2083 | "src_char": "988:94"
2084 | },
2085 | {
2086 | "contract_path": "src/MsgValueInLoop.sol",
2087 | "line_no": 54,
2088 | "src": "1415:93",
2089 | "src_char": "1415:93"
2090 | },
2091 | {
2092 | "contract_path": "src/MsgValueInLoop.sol",
2093 | "line_no": 71,
2094 | "src": "1844:97",
2095 | "src_char": "1844:97"
2096 | }
2097 | ]
2098 | },
2099 | {
2100 | "title": "Contract locks Ether without a withdraw function",
2101 | "description": "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.",
2102 | "detector_name": "contract-locks-ether",
2103 | "instances": [
2104 | {
2105 | "contract_path": "src/ContractLocksEther.sol",
2106 | "line_no": 5,
2107 | "src": "73:10",
2108 | "src_char": "73:10"
2109 | },
2110 | {
2111 | "contract_path": "src/ContractLocksEther.sol",
2112 | "line_no": 31,
2113 | "src": "822:11",
2114 | "src_char": "822:11"
2115 | },
2116 | {
2117 | "contract_path": "src/EmptyBlocks.sol",
2118 | "line_no": 20,
2119 | "src": "344:39",
2120 | "src_char": "344:39"
2121 | },
2122 | {
2123 | "contract_path": "src/EmptyBlocks.sol",
2124 | "line_no": 44,
2125 | "src": "630:11",
2126 | "src_char": "630:11"
2127 | },
2128 | {
2129 | "contract_path": "src/ExternalCalls.sol",
2130 | "line_no": 8,
2131 | "src": "139:8",
2132 | "src_char": "139:8"
2133 | },
2134 | {
2135 | "contract_path": "src/MsgValueInLoop.sol",
2136 | "line_no": 7,
2137 | "src": "103:15",
2138 | "src_char": "103:15"
2139 | },
2140 | {
2141 | "contract_path": "src/MsgValueInLoop.sol",
2142 | "line_no": 19,
2143 | "src": "423:19",
2144 | "src_char": "423:19"
2145 | },
2146 | {
2147 | "contract_path": "src/MsgValueInLoop.sol",
2148 | "line_no": 33,
2149 | "src": "831:15",
2150 | "src_char": "831:15"
2151 | },
2152 | {
2153 | "contract_path": "src/MsgValueInLoop.sol",
2154 | "line_no": 48,
2155 | "src": "1233:15",
2156 | "src_char": "1233:15"
2157 | },
2158 | {
2159 | "contract_path": "src/MsgValueInLoop.sol",
2160 | "line_no": 65,
2161 | "src": "1659:15",
2162 | "src_char": "1659:15"
2163 | },
2164 | {
2165 | "contract_path": "src/OutOfOrderRetryable.sol",
2166 | "line_no": 38,
2167 | "src": "1028:2",
2168 | "src_char": "1028:2"
2169 | },
2170 | {
2171 | "contract_path": "src/eth2/DepositContract.sol",
2172 | "line_no": 58,
2173 | "src": "4547:15",
2174 | "src_char": "3059:15"
2175 | },
2176 | {
2177 | "contract_path": "src/router/FallbackAndReceiveOverrides.sol",
2178 | "line_no": 4,
2179 | "src": "70:1",
2180 | "src_char": "70:1"
2181 | },
2182 | {
2183 | "contract_path": "src/router/FallbackAndReceiveOverrides.sol",
2184 | "line_no": 10,
2185 | "src": "172:1",
2186 | "src_char": "172:1"
2187 | },
2188 | {
2189 | "contract_path": "src/router/FallbackAndReceiveOverrides.sol",
2190 | "line_no": 14,
2191 | "src": "237:1",
2192 | "src_char": "237:1"
2193 | }
2194 | ]
2195 | },
2196 | {
2197 | "title": "Incorrect ERC721 interface",
2198 | "description": "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.",
2199 | "detector_name": "incorrect-erc721-interface",
2200 | "instances": [
2201 | {
2202 | "contract_path": "src/IncorrectERC721.sol",
2203 | "line_no": 14,
2204 | "src": "433:9",
2205 | "src_char": "433:9"
2206 | },
2207 | {
2208 | "contract_path": "src/IncorrectERC721.sol",
2209 | "line_no": 18,
2210 | "src": "551:7",
2211 | "src_char": "551:7"
2212 | },
2213 | {
2214 | "contract_path": "src/IncorrectERC721.sol",
2215 | "line_no": 22,
2216 | "src": "696:7",
2217 | "src_char": "696:7"
2218 | },
2219 | {
2220 | "contract_path": "src/IncorrectERC721.sol",
2221 | "line_no": 37,
2222 | "src": "1092:11",
2223 | "src_char": "1092:11"
2224 | },
2225 | {
2226 | "contract_path": "src/IncorrectERC721.sol",
2227 | "line_no": 41,
2228 | "src": "1231:17",
2229 | "src_char": "1231:17"
2230 | },
2231 | {
2232 | "contract_path": "src/IncorrectERC721.sol",
2233 | "line_no": 49,
2234 | "src": "1484:16",
2235 | "src_char": "1484:16"
2236 | },
2237 | {
2238 | "contract_path": "src/IncorrectERC721.sol",
2239 | "line_no": 56,
2240 | "src": "1684:12",
2241 | "src_char": "1684:12"
2242 | },
2243 | {
2244 | "contract_path": "src/IncorrectERC721.sol",
2245 | "line_no": 71,
2246 | "src": "2086:16",
2247 | "src_char": "2086:16"
2248 | }
2249 | ]
2250 | },
2251 | {
2252 | "title": "Incorrect ERC20 interface",
2253 | "description": "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.",
2254 | "detector_name": "incorrect-erc20-interface",
2255 | "instances": [
2256 | {
2257 | "contract_path": "src/IncorrectERC20.sol",
2258 | "line_no": 17,
2259 | "src": "483:8",
2260 | "src_char": "483:8"
2261 | },
2262 | {
2263 | "contract_path": "src/IncorrectERC20.sol",
2264 | "line_no": 23,
2265 | "src": "690:7",
2266 | "src_char": "690:7"
2267 | },
2268 | {
2269 | "contract_path": "src/IncorrectERC20.sol",
2270 | "line_no": 27,
2271 | "src": "808:12",
2272 | "src_char": "808:12"
2273 | },
2274 | {
2275 | "contract_path": "src/IncorrectERC20.sol",
2276 | "line_no": 35,
2277 | "src": "1146:9",
2278 | "src_char": "1146:9"
2279 | },
2280 | {
2281 | "contract_path": "src/IncorrectERC20.sol",
2282 | "line_no": 39,
2283 | "src": "1249:9",
2284 | "src_char": "1249:9"
2285 | }
2286 | ]
2287 | },
2288 | {
2289 | "title": "Out of Order Retryable Transaction",
2290 | "description": "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\n order if they fail in the first go. Since this operation happens off chain, the sequencer is in control of the\n order of these transactions. Therefore, restrict the use to at most 1 ticket call per function.",
2291 | "detector_name": "out-of-order-retryable",
2292 | "instances": [
2293 | {
2294 | "contract_path": "src/OutOfOrderRetryable.sol",
2295 | "line_no": 63,
2296 | "src": "1649:11",
2297 | "src_char": "1649:11"
2298 | },
2299 | {
2300 | "contract_path": "src/OutOfOrderRetryable.sol",
2301 | "line_no": 90,
2302 | "src": "2557:22",
2303 | "src_char": "2557:22"
2304 | }
2305 | ]
2306 | },
2307 | {
2308 | "title": "Constant functions changes state",
2309 | "description": "Function is declared constant/view but it changes state. Ensure that the attributes of contract compiled prior to 0.5 are correct.",
2310 | "detector_name": "constant-function-changes-state",
2311 | "instances": [
2312 | {
2313 | "contract_path": "src/ConstFuncChangeState.sol",
2314 | "line_no": 8,
2315 | "src": "173:112",
2316 | "src_char": "173:112"
2317 | }
2318 | ]
2319 | },
2320 | {
2321 | "title": "Function Selector Collision",
2322 | "description": "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.",
2323 | "detector_name": "function-selector-collision",
2324 | "instances": [
2325 | {
2326 | "contract_path": "src/FunctionSignatureCollision.sol",
2327 | "line_no": 7,
2328 | "src": "166:8",
2329 | "src_char": "166:8",
2330 | "hint": "collides with the following function name(s) in scope: OwnerTransferV7b711143"
2331 | },
2332 | {
2333 | "contract_path": "src/FunctionSignatureCollision.sol",
2334 | "line_no": 13,
2335 | "src": "231:22",
2336 | "src_char": "231:22",
2337 | "hint": "collides with the following function name(s) in scope: withdraw"
2338 | }
2339 | ]
2340 | },
2341 | {
2342 | "title": "Unchecked Low level calls",
2343 | "description": "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.",
2344 | "detector_name": "unchecked-low-level-call",
2345 | "instances": [
2346 | {
2347 | "contract_path": "src/DelegateCallWithoutAddressCheck.sol",
2348 | "line_no": 16,
2349 | "src": "452:21",
2350 | "src_char": "452:21"
2351 | },
2352 | {
2353 | "contract_path": "src/DelegateCallWithoutAddressCheck.sol",
2354 | "line_no": 20,
2355 | "src": "583:26",
2356 | "src_char": "583:26"
2357 | },
2358 | {
2359 | "contract_path": "src/DelegateCallWithoutAddressCheck.sol",
2360 | "line_no": 36,
2361 | "src": "1071:21",
2362 | "src_char": "1071:21"
2363 | },
2364 | {
2365 | "contract_path": "src/DelegateCallWithoutAddressCheck.sol",
2366 | "line_no": 42,
2367 | "src": "1287:21",
2368 | "src_char": "1287:21"
2369 | },
2370 | {
2371 | "contract_path": "src/UncheckedCalls.sol",
2372 | "line_no": 7,
2373 | "src": "172:30",
2374 | "src_char": "172:30"
2375 | },
2376 | {
2377 | "contract_path": "src/UncheckedCalls.sol",
2378 | "line_no": 11,
2379 | "src": "293:17",
2380 | "src_char": "293:17"
2381 | },
2382 | {
2383 | "contract_path": "src/UncheckedCalls.sol",
2384 | "line_no": 15,
2385 | "src": "409:25",
2386 | "src_char": "409:25"
2387 | },
2388 | {
2389 | "contract_path": "src/UncheckedCalls.sol",
2390 | "line_no": 19,
2391 | "src": "536:23",
2392 | "src_char": "536:23"
2393 | },
2394 | {
2395 | "contract_path": "src/UncheckedCalls.sol",
2396 | "line_no": 23,
2397 | "src": "651:27",
2398 | "src_char": "651:27"
2399 | },
2400 | {
2401 | "contract_path": "src/UncheckedCalls.sol",
2402 | "line_no": 25,
2403 | "src": "689:66",
2404 | "src_char": "689:66"
2405 | },
2406 | {
2407 | "contract_path": "src/UncheckedCalls.sol",
2408 | "line_no": 27,
2409 | "src": "766:86",
2410 | "src_char": "766:86"
2411 | },
2412 | {
2413 | "contract_path": "src/UncheckedCalls.sol",
2414 | "line_no": 29,
2415 | "src": "863:61",
2416 | "src_char": "863:61"
2417 | },
2418 | {
2419 | "contract_path": "src/UncheckedCalls.sol",
2420 | "line_no": 34,
2421 | "src": "1028:19",
2422 | "src_char": "1028:19"
2423 | },
2424 | {
2425 | "contract_path": "src/inheritance/ExtendedInheritance.sol",
2426 | "line_no": 16,
2427 | "src": "488:71",
2428 | "src_char": "488:71"
2429 | }
2430 | ]
2431 | },
2432 | {
2433 | "title": "Reentrancy: State change after external call",
2434 | "description": "Changing state after an external call can lead to re-entrancy attacks.Use the checks-effects-interactions pattern to avoid this issue.",
2435 | "detector_name": "reentrancy-state-change",
2436 | "instances": [
2437 | {
2438 | "contract_path": "src/StateChangeAfterExternalCall.sol",
2439 | "line_no": 24,
2440 | "src": "588:15",
2441 | "src_char": "588:15",
2442 | "hint": "State is changed at: `s_useMe += 1`"
2443 | },
2444 | {
2445 | "contract_path": "src/StateChangeAfterExternalCall.sol",
2446 | "line_no": 33,
2447 | "src": "735:15",
2448 | "src_char": "735:15",
2449 | "hint": "State is changed at: `s_useMe -= 1`"
2450 | },
2451 | {
2452 | "contract_path": "src/StateChangeAfterExternalCall.sol",
2453 | "line_no": 52,
2454 | "src": "1272:15",
2455 | "src_char": "1272:15",
2456 | "hint": "State is changed at: `s_useMe += 4`"
2457 | },
2458 | {
2459 | "contract_path": "src/StateChangeAfterExternalCall.sol",
2460 | "line_no": 82,
2461 | "src": "1814:15",
2462 | "src_char": "1814:15",
2463 | "hint": "State is changed at: `s_useMe += 1`"
2464 | },
2465 | {
2466 | "contract_path": "src/Trump.sol",
2467 | "line_no": 342,
2468 | "src": "11731:110",
2469 | "src_char": "11731:110",
2470 | "hint": "State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`"
2471 | },
2472 | {
2473 | "contract_path": "src/Trump.sol",
2474 | "line_no": 343,
2475 | "src": "11851:129",
2476 | "src_char": "11851:129",
2477 | "hint": "State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`"
2478 | },
2479 | {
2480 | "contract_path": "src/Trump.sol",
2481 | "line_no": 344,
2482 | "src": "11990:71",
2483 | "src_char": "11990:71",
2484 | "hint": "State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`"
2485 | }
2486 | ]
2487 | }
2488 | ]
2489 | },
2490 | "low_issues": {
2491 | "issues": [
2492 | {
2493 | "title": "`delegatecall` in loop",
2494 | "description": "Using `delegatecall` in loop may consume excessive gas, or worse, lead to more severe issues.",
2495 | "detector_name": "delegatecall-in-loop",
2496 | "instances": [
2497 | {
2498 | "contract_path": "src/inheritance/ExtendedInheritance.sol",
2499 | "line_no": 15,
2500 | "src": "474:96",
2501 | "src_char": "474:96"
2502 | }
2503 | ]
2504 | },
2505 | {
2506 | "title": "Centralization Risk",
2507 | "description": "Contracts have owners with privileged rights to perform admin tasks and need to be trusted to not perform malicious updates or drain funds.",
2508 | "detector_name": "centralization-risk",
2509 | "instances": [
2510 | {
2511 | "contract_path": "src/AdminContract.sol",
2512 | "line_no": 7,
2513 | "src": "270:7",
2514 | "src_char": "270:7"
2515 | },
2516 | {
2517 | "contract_path": "src/AdminContract.sol",
2518 | "line_no": 10,
2519 | "src": "376:9",
2520 | "src_char": "376:9"
2521 | },
2522 | {
2523 | "contract_path": "src/AdminContract.sol",
2524 | "line_no": 14,
2525 | "src": "505:9",
2526 | "src_char": "505:9"
2527 | },
2528 | {
2529 | "contract_path": "src/DeprecatedOZFunctions.sol",
2530 | "line_no": 7,
2531 | "src": "295:13",
2532 | "src_char": "295:13"
2533 | },
2534 | {
2535 | "contract_path": "src/EmptyBlocks.sol",
2536 | "line_no": 6,
2537 | "src": "188:7",
2538 | "src_char": "188:7"
2539 | },
2540 | {
2541 | "contract_path": "src/InternalFunctions.sol",
2542 | "line_no": 12,
2543 | "src": "250:9",
2544 | "src_char": "250:9"
2545 | },
2546 | {
2547 | "contract_path": "src/SendEtherNoChecksLibImport.sol",
2548 | "line_no": 7,
2549 | "src": "276:7",
2550 | "src_char": "276:7"
2551 | },
2552 | {
2553 | "contract_path": "src/SendEtherNoChecksLibImport.sol",
2554 | "line_no": 7,
2555 | "src": "285:13",
2556 | "src_char": "285:13"
2557 | },
2558 | {
2559 | "contract_path": "src/SendEtherNoChecksLibImport.sol",
2560 | "line_no": 16,
2561 | "src": "516:9",
2562 | "src_char": "516:9"
2563 | },
2564 | {
2565 | "contract_path": "src/SendEtherNoChecksLibImport.sol",
2566 | "line_no": 20,
2567 | "src": "614:28",
2568 | "src_char": "614:28"
2569 | },
2570 | {
2571 | "contract_path": "src/StateChangeAfterExternalCall.sol",
2572 | "line_no": 81,
2573 | "src": "1794:9",
2574 | "src_char": "1794:9"
2575 | },
2576 | {
2577 | "contract_path": "src/StateChangeAfterExternalCall.sol",
2578 | "line_no": 87,
2579 | "src": "1911:9",
2580 | "src_char": "1911:9"
2581 | },
2582 | {
2583 | "contract_path": "src/Trump.sol",
2584 | "line_no": 92,
2585 | "src": "2714:9",
2586 | "src_char": "2714:9"
2587 | },
2588 | {
2589 | "contract_path": "src/Trump.sol",
2590 | "line_no": 123,
2591 | "src": "3592:7",
2592 | "src_char": "3592:7"
2593 | },
2594 | {
2595 | "contract_path": "src/Trump.sol",
2596 | "line_no": 299,
2597 | "src": "10185:9",
2598 | "src_char": "10185:9"
2599 | },
2600 | {
2601 | "contract_path": "src/Trump.sol",
2602 | "line_no": 338,
2603 | "src": "11494:11",
2604 | "src_char": "11494:11"
2605 | },
2606 | {
2607 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
2608 | "line_no": 9,
2609 | "src": "322:7",
2610 | "src_char": "322:7"
2611 | },
2612 | {
2613 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
2614 | "line_no": 11,
2615 | "src": "396:9",
2616 | "src_char": "396:9"
2617 | },
2618 | {
2619 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
2620 | "line_no": 35,
2621 | "src": "975:13",
2622 | "src_char": "975:13"
2623 | },
2624 | {
2625 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
2626 | "line_no": 38,
2627 | "src": "1108:14",
2628 | "src_char": "1108:14"
2629 | },
2630 | {
2631 | "contract_path": "src/parent_chain/ParentChainContract.sol",
2632 | "line_no": 7,
2633 | "src": "282:7",
2634 | "src_char": "282:7"
2635 | },
2636 | {
2637 | "contract_path": "src/parent_chain/ParentChainContract.sol",
2638 | "line_no": 28,
2639 | "src": "725:9",
2640 | "src_char": "725:9"
2641 | },
2642 | {
2643 | "contract_path": "src/parent_chain/ParentChainContract.sol",
2644 | "line_no": 32,
2645 | "src": "854:9",
2646 | "src_char": "854:9"
2647 | }
2648 | ]
2649 | },
2650 | {
2651 | "title": "Solmate's SafeTransferLib",
2652 | "description": "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.\nhttps://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol#L9 \n`@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`\n",
2653 | "detector_name": "solmate-safe-transfer-lib",
2654 | "instances": [
2655 | {
2656 | "contract_path": "src/T11sTranferer.sol",
2657 | "line_no": 4,
2658 | "src": "57:84",
2659 | "src_char": "57:84"
2660 | }
2661 | ]
2662 | },
2663 | {
2664 | "title": "`ecrecover` Signature Malleability",
2665 | "description": "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.",
2666 | "detector_name": "ecrecover",
2667 | "instances": [
2668 | {
2669 | "contract_path": "src/inheritance/ExtendedInheritance.sol",
2670 | "line_no": 22,
2671 | "src": "737:9",
2672 | "src_char": "737:9"
2673 | }
2674 | ]
2675 | },
2676 | {
2677 | "title": "Deprecated OpenZeppelin Function",
2678 | "description": "Openzeppelin has deprecated several functions and replaced with newer versions. Please consult https://docs.openzeppelin.com/",
2679 | "detector_name": "deprecated-oz-function",
2680 | "instances": [
2681 | {
2682 | "contract_path": "src/DeprecatedOZFunctions.sol",
2683 | "line_no": 22,
2684 | "src": "737:10",
2685 | "src_char": "737:10"
2686 | },
2687 | {
2688 | "contract_path": "src/DeprecatedOZFunctions.sol",
2689 | "line_no": 27,
2690 | "src": "898:17",
2691 | "src_char": "898:17"
2692 | }
2693 | ]
2694 | },
2695 | {
2696 | "title": "Unsafe ERC20 Operation",
2697 | "description": "ERC20 functions may not behave as expected. For example: return values are not always meaningful. It is recommended to use OpenZeppelin's SafeERC20 library.",
2698 | "detector_name": "unsafe-erc20-operation",
2699 | "instances": [
2700 | {
2701 | "contract_path": "src/ArbitraryTransferFrom.sol",
2702 | "line_no": 19,
2703 | "src": "601:20",
2704 | "src_char": "601:20"
2705 | },
2706 | {
2707 | "contract_path": "src/ArbitraryTransferFrom.sol",
2708 | "line_no": 34,
2709 | "src": "1046:20",
2710 | "src_char": "1046:20"
2711 | },
2712 | {
2713 | "contract_path": "src/ArbitraryTransferFrom.sol",
2714 | "line_no": 54,
2715 | "src": "1699:20",
2716 | "src_char": "1699:20"
2717 | },
2718 | {
2719 | "contract_path": "src/ContractLocksEther.sol",
2720 | "line_no": 162,
2721 | "src": "5185:18",
2722 | "src_char": "5185:18"
2723 | },
2724 | {
2725 | "contract_path": "src/DeprecatedOZFunctions.sol",
2726 | "line_no": 32,
2727 | "src": "1062:13",
2728 | "src_char": "1062:13"
2729 | },
2730 | {
2731 | "contract_path": "src/DeprecatedOZFunctions.sol",
2732 | "line_no": 37,
2733 | "src": "1272:13",
2734 | "src_char": "1272:13"
2735 | },
2736 | {
2737 | "contract_path": "src/DeprecatedOZFunctions.sol",
2738 | "line_no": 38,
2739 | "src": "1322:13",
2740 | "src_char": "1322:13"
2741 | },
2742 | {
2743 | "contract_path": "src/DeprecatedOZFunctions.sol",
2744 | "line_no": 42,
2745 | "src": "1424:13",
2746 | "src_char": "1424:13"
2747 | },
2748 | {
2749 | "contract_path": "src/DeprecatedOZFunctions.sol",
2750 | "line_no": 47,
2751 | "src": "1598:18",
2752 | "src_char": "1598:18"
2753 | },
2754 | {
2755 | "contract_path": "src/IncorrectModifier.sol",
2756 | "line_no": 83,
2757 | "src": "2103:23",
2758 | "src_char": "2103:23"
2759 | },
2760 | {
2761 | "contract_path": "src/OutOfOrderRetryable.sol",
2762 | "line_no": 171,
2763 | "src": "4927:28",
2764 | "src_char": "4927:28"
2765 | },
2766 | {
2767 | "contract_path": "src/OutOfOrderRetryable.sol",
2768 | "line_no": 180,
2769 | "src": "5328:28",
2770 | "src_char": "5328:28"
2771 | },
2772 | {
2773 | "contract_path": "src/SendEtherNoChecks.sol",
2774 | "line_no": 67,
2775 | "src": "1255:19",
2776 | "src_char": "1255:19"
2777 | },
2778 | {
2779 | "contract_path": "src/StateShadowing.sol",
2780 | "line_no": 22,
2781 | "src": "368:19",
2782 | "src_char": "368:19"
2783 | },
2784 | {
2785 | "contract_path": "src/Trump.sol",
2786 | "line_no": 309,
2787 | "src": "10512:19",
2788 | "src_char": "10512:19"
2789 | },
2790 | {
2791 | "contract_path": "src/Trump.sol",
2792 | "line_no": 310,
2793 | "src": "10557:20",
2794 | "src_char": "10557:20"
2795 | },
2796 | {
2797 | "contract_path": "src/Trump.sol",
2798 | "line_no": 318,
2799 | "src": "10869:29",
2800 | "src_char": "10869:29"
2801 | },
2802 | {
2803 | "contract_path": "src/Trump.sol",
2804 | "line_no": 324,
2805 | "src": "11111:28",
2806 | "src_char": "11111:28"
2807 | },
2808 | {
2809 | "contract_path": "src/Trump.sol",
2810 | "line_no": 344,
2811 | "src": "11990:29",
2812 | "src_char": "11990:29"
2813 | },
2814 | {
2815 | "contract_path": "src/UninitializedStateVariable.sol",
2816 | "line_no": 18,
2817 | "src": "599:29",
2818 | "src_char": "599:29"
2819 | }
2820 | ]
2821 | },
2822 | {
2823 | "title": "Unspecific Solidity Pragma",
2824 | "description": "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;`",
2825 | "detector_name": "unspecific-solidity-pragma",
2826 | "instances": [
2827 | {
2828 | "contract_path": "src/BuiltinSymbolShadow.sol",
2829 | "line_no": 2,
2830 | "src": "32:23",
2831 | "src_char": "32:23"
2832 | },
2833 | {
2834 | "contract_path": "src/CompilerBugStorageSignedIntegerArray.sol",
2835 | "line_no": 2,
2836 | "src": "32:23",
2837 | "src_char": "32:23"
2838 | },
2839 | {
2840 | "contract_path": "src/ConstFuncChangeState.sol",
2841 | "line_no": 2,
2842 | "src": "32:23",
2843 | "src_char": "32:23"
2844 | },
2845 | {
2846 | "contract_path": "src/ConstantFuncsAssembly.sol",
2847 | "line_no": 2,
2848 | "src": "32:23",
2849 | "src_char": "32:23"
2850 | },
2851 | {
2852 | "contract_path": "src/ContractLocksEther.sol",
2853 | "line_no": 2,
2854 | "src": "32:23",
2855 | "src_char": "32:23"
2856 | },
2857 | {
2858 | "contract_path": "src/ContractWithTodo.sol",
2859 | "line_no": 2,
2860 | "src": "32:23",
2861 | "src_char": "32:23"
2862 | },
2863 | {
2864 | "contract_path": "src/CostlyOperationsInsideLoops.sol",
2865 | "line_no": 2,
2866 | "src": "32:23",
2867 | "src_char": "32:23"
2868 | },
2869 | {
2870 | "contract_path": "src/Counter.sol",
2871 | "line_no": 2,
2872 | "src": "39:24",
2873 | "src_char": "39:24"
2874 | },
2875 | {
2876 | "contract_path": "src/CrazyPragma.sol",
2877 | "line_no": 2,
2878 | "src": "32:32",
2879 | "src_char": "32:32"
2880 | },
2881 | {
2882 | "contract_path": "src/DangerousStrictEquality1.sol",
2883 | "line_no": 2,
2884 | "src": "32:23",
2885 | "src_char": "32:23"
2886 | },
2887 | {
2888 | "contract_path": "src/DangerousUnaryOperator.sol",
2889 | "line_no": 2,
2890 | "src": "32:23",
2891 | "src_char": "32:23"
2892 | },
2893 | {
2894 | "contract_path": "src/DelegateCallWithoutAddressCheck.sol",
2895 | "line_no": 2,
2896 | "src": "32:21",
2897 | "src_char": "32:21"
2898 | },
2899 | {
2900 | "contract_path": "src/DeletionNestedMappingStructureContract.sol",
2901 | "line_no": 2,
2902 | "src": "32:23",
2903 | "src_char": "32:23"
2904 | },
2905 | {
2906 | "contract_path": "src/FunctionInitializingState.sol",
2907 | "line_no": 2,
2908 | "src": "32:23",
2909 | "src_char": "32:23"
2910 | },
2911 | {
2912 | "contract_path": "src/FunctionSignatureCollision.sol",
2913 | "line_no": 2,
2914 | "src": "32:23",
2915 | "src_char": "32:23"
2916 | },
2917 | {
2918 | "contract_path": "src/InconsistentUints.sol",
2919 | "line_no": 1,
2920 | "src": "0:24",
2921 | "src_char": "0:24"
2922 | },
2923 | {
2924 | "contract_path": "src/IncorrectERC20.sol",
2925 | "line_no": 2,
2926 | "src": "32:23",
2927 | "src_char": "32:23"
2928 | },
2929 | {
2930 | "contract_path": "src/IncorrectERC721.sol",
2931 | "line_no": 2,
2932 | "src": "32:23",
2933 | "src_char": "32:23"
2934 | },
2935 | {
2936 | "contract_path": "src/MsgValueInLoop.sol",
2937 | "line_no": 2,
2938 | "src": "32:23",
2939 | "src_char": "32:23"
2940 | },
2941 | {
2942 | "contract_path": "src/OutOfOrderRetryable.sol",
2943 | "line_no": 2,
2944 | "src": "32:23",
2945 | "src_char": "32:23"
2946 | },
2947 | {
2948 | "contract_path": "src/PragmaRange.sol",
2949 | "line_no": 2,
2950 | "src": "32:31",
2951 | "src_char": "32:31"
2952 | },
2953 | {
2954 | "contract_path": "src/PreDeclaredVarUsage.sol",
2955 | "line_no": 2,
2956 | "src": "32:23",
2957 | "src_char": "32:23"
2958 | },
2959 | {
2960 | "contract_path": "src/RedundantStatements.sol",
2961 | "line_no": 2,
2962 | "src": "32:23",
2963 | "src_char": "32:23"
2964 | },
2965 | {
2966 | "contract_path": "src/TautologyOrContradiction.sol",
2967 | "line_no": 2,
2968 | "src": "32:23",
2969 | "src_char": "32:23"
2970 | },
2971 | {
2972 | "contract_path": "src/TxOriginUsedForAuth.sol",
2973 | "line_no": 2,
2974 | "src": "32:24",
2975 | "src_char": "32:24"
2976 | },
2977 | {
2978 | "contract_path": "src/UncheckedCalls.sol",
2979 | "line_no": 2,
2980 | "src": "32:23",
2981 | "src_char": "32:23"
2982 | },
2983 | {
2984 | "contract_path": "src/UncheckedSend.sol",
2985 | "line_no": 2,
2986 | "src": "32:23",
2987 | "src_char": "32:23"
2988 | },
2989 | {
2990 | "contract_path": "src/UnusedStateVariables.sol",
2991 | "line_no": 2,
2992 | "src": "32:24",
2993 | "src_char": "32:24"
2994 | },
2995 | {
2996 | "contract_path": "src/UsingSelfdestruct.sol",
2997 | "line_no": 2,
2998 | "src": "32:23",
2999 | "src_char": "32:23"
3000 | },
3001 | {
3002 | "contract_path": "src/VoidConstructor.sol",
3003 | "line_no": 2,
3004 | "src": "32:23",
3005 | "src_char": "32:23"
3006 | },
3007 | {
3008 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
3009 | "line_no": 6,
3010 | "src": "46:24",
3011 | "src_char": "46:24"
3012 | },
3013 | {
3014 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
3015 | "line_no": 6,
3016 | "src": "46:32",
3017 | "src_char": "46:32"
3018 | },
3019 | {
3020 | "contract_path": "src/inheritance/IContractInheritance.sol",
3021 | "line_no": 2,
3022 | "src": "32:24",
3023 | "src_char": "32:24"
3024 | },
3025 | {
3026 | "contract_path": "src/inheritance/InheritanceBase.sol",
3027 | "line_no": 2,
3028 | "src": "32:23",
3029 | "src_char": "32:23"
3030 | },
3031 | {
3032 | "contract_path": "src/nested_mappings/LaterVersion.sol",
3033 | "line_no": 2,
3034 | "src": "36:23",
3035 | "src_char": "36:23"
3036 | },
3037 | {
3038 | "contract_path": "src/nested_mappings/NestedMappings.sol",
3039 | "line_no": 2,
3040 | "src": "36:24",
3041 | "src_char": "36:24"
3042 | }
3043 | ]
3044 | },
3045 | {
3046 | "title": "Address State Variable Set Without Checks",
3047 | "description": "Check for `address(0)` when assigning values to address state variables.",
3048 | "detector_name": "state-no-address-check",
3049 | "instances": [
3050 | {
3051 | "contract_path": "src/ArbitraryTransferFrom.sol",
3052 | "line_no": 12,
3053 | "src": "267:15",
3054 | "src_char": "267:15"
3055 | },
3056 | {
3057 | "contract_path": "src/ExternalCalls.sol",
3058 | "line_no": 20,
3059 | "src": "347:16",
3060 | "src_char": "347:16"
3061 | },
3062 | {
3063 | "contract_path": "src/ExternalCalls.sol",
3064 | "line_no": 28,
3065 | "src": "459:6",
3066 | "src_char": "459:6"
3067 | },
3068 | {
3069 | "contract_path": "src/OutOfOrderRetryable.sol",
3070 | "line_no": 54,
3071 | "src": "1416:14",
3072 | "src_char": "1416:14"
3073 | },
3074 | {
3075 | "contract_path": "src/OutOfOrderRetryable.sol",
3076 | "line_no": 55,
3077 | "src": "1440:24",
3078 | "src_char": "1440:24"
3079 | },
3080 | {
3081 | "contract_path": "src/StateVariables.sol",
3082 | "line_no": 58,
3083 | "src": "2121:14",
3084 | "src_char": "2121:14"
3085 | },
3086 | {
3087 | "contract_path": "src/StateVariablesManipulation.sol",
3088 | "line_no": 56,
3089 | "src": "1657:17",
3090 | "src_char": "1657:17"
3091 | },
3092 | {
3093 | "contract_path": "src/ZeroAddressCheck.sol",
3094 | "line_no": 43,
3095 | "src": "1171:14",
3096 | "src_char": "1171:14"
3097 | },
3098 | {
3099 | "contract_path": "src/ZeroAddressCheck.sol",
3100 | "line_no": 47,
3101 | "src": "1248:16",
3102 | "src_char": "1248:16"
3103 | },
3104 | {
3105 | "contract_path": "src/ZeroAddressCheck.sol",
3106 | "line_no": 51,
3107 | "src": "1327:23",
3108 | "src_char": "1327:23"
3109 | },
3110 | {
3111 | "contract_path": "src/inheritance/ExtendedInheritance.sol",
3112 | "line_no": 18,
3113 | "src": "579:22",
3114 | "src_char": "579:22"
3115 | },
3116 | {
3117 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
3118 | "line_no": 11,
3119 | "src": "365:17",
3120 | "src_char": "365:17"
3121 | }
3122 | ]
3123 | },
3124 | {
3125 | "title": "Public Function Not Used Internally",
3126 | "description": "If a function is marked public but is not used internally, consider marking it as `external`.",
3127 | "detector_name": "unused-public-function",
3128 | "instances": [
3129 | {
3130 | "contract_path": "src/AderynIgnoreCustomDetectors.sol",
3131 | "line_no": 7,
3132 | "src": "174:2",
3133 | "src_char": "174:2"
3134 | },
3135 | {
3136 | "contract_path": "src/AderynIgnoreCustomDetectors.sol",
3137 | "line_no": 26,
3138 | "src": "583:2",
3139 | "src_char": "583:2"
3140 | },
3141 | {
3142 | "contract_path": "src/ArbitraryTransferFrom.sol",
3143 | "line_no": 32,
3144 | "src": "954:5",
3145 | "src_char": "954:5"
3146 | },
3147 | {
3148 | "contract_path": "src/AssemblyExample.sol",
3149 | "line_no": 6,
3150 | "src": "113:1",
3151 | "src_char": "113:1"
3152 | },
3153 | {
3154 | "contract_path": "src/AssertStateChange.sol",
3155 | "line_no": 8,
3156 | "src": "131:3",
3157 | "src_char": "131:3"
3158 | },
3159 | {
3160 | "contract_path": "src/AssertStateChange.sol",
3161 | "line_no": 12,
3162 | "src": "199:4",
3163 | "src_char": "199:4"
3164 | },
3165 | {
3166 | "contract_path": "src/BuiltinSymbolShadow.sol",
3167 | "line_no": 8,
3168 | "src": "125:41",
3169 | "src_char": "125:41"
3170 | },
3171 | {
3172 | "contract_path": "src/ConstFuncChangeState.sol",
3173 | "line_no": 8,
3174 | "src": "173:112",
3175 | "src_char": "173:112"
3176 | },
3177 | {
3178 | "contract_path": "src/ConstFuncChangeState.sol",
3179 | "line_no": 14,
3180 | "src": "339:108",
3181 | "src_char": "339:108"
3182 | },
3183 | {
3184 | "contract_path": "src/ConstFuncChangeState.sol",
3185 | "line_no": 20,
3186 | "src": "517:89",
3187 | "src_char": "517:89"
3188 | },
3189 | {
3190 | "contract_path": "src/ContractLocksEther.sol",
3191 | "line_no": 20,
3192 | "src": "539:10",
3193 | "src_char": "539:10"
3194 | },
3195 | {
3196 | "contract_path": "src/ContractLocksEther.sol",
3197 | "line_no": 49,
3198 | "src": "1379:10",
3199 | "src_char": "1379:10"
3200 | },
3201 | {
3202 | "contract_path": "src/ContractLocksEther.sol",
3203 | "line_no": 81,
3204 | "src": "2414:10",
3205 | "src_char": "2414:10"
3206 | },
3207 | {
3208 | "contract_path": "src/ContractLocksEther.sol",
3209 | "line_no": 118,
3210 | "src": "3653:10",
3211 | "src_char": "3653:10"
3212 | },
3213 | {
3214 | "contract_path": "src/ContractLocksEther.sol",
3215 | "line_no": 155,
3216 | "src": "4877:10",
3217 | "src_char": "4877:10"
3218 | },
3219 | {
3220 | "contract_path": "src/ContractLocksEther.sol",
3221 | "line_no": 181,
3222 | "src": "5775:10",
3223 | "src_char": "5775:10"
3224 | },
3225 | {
3226 | "contract_path": "src/ContractWithTodo.sol",
3227 | "line_no": 13,
3228 | "src": "337:15",
3229 | "src_char": "337:15"
3230 | },
3231 | {
3232 | "contract_path": "src/Counter.sol",
3233 | "line_no": 7,
3234 | "src": "129:9",
3235 | "src_char": "129:9"
3236 | },
3237 | {
3238 | "contract_path": "src/ExternalCalls.sol",
3239 | "line_no": 11,
3240 | "src": "194:7",
3241 | "src_char": "194:7"
3242 | },
3243 | {
3244 | "contract_path": "src/ExternalCalls.sol",
3245 | "line_no": 19,
3246 | "src": "309:9",
3247 | "src_char": "309:9"
3248 | },
3249 | {
3250 | "contract_path": "src/IncorrectERC20.sol",
3251 | "line_no": 17,
3252 | "src": "483:8",
3253 | "src_char": "483:8"
3254 | },
3255 | {
3256 | "contract_path": "src/IncorrectERC20.sol",
3257 | "line_no": 23,
3258 | "src": "690:7",
3259 | "src_char": "690:7"
3260 | },
3261 | {
3262 | "contract_path": "src/IncorrectERC20.sol",
3263 | "line_no": 27,
3264 | "src": "808:12",
3265 | "src_char": "808:12"
3266 | },
3267 | {
3268 | "contract_path": "src/IncorrectERC20.sol",
3269 | "line_no": 35,
3270 | "src": "1146:9",
3271 | "src_char": "1146:9"
3272 | },
3273 | {
3274 | "contract_path": "src/IncorrectERC20.sol",
3275 | "line_no": 39,
3276 | "src": "1249:9",
3277 | "src_char": "1249:9"
3278 | },
3279 | {
3280 | "contract_path": "src/LocalVariableShadow.sol",
3281 | "line_no": 10,
3282 | "src": "181:17",
3283 | "src_char": "181:17"
3284 | },
3285 | {
3286 | "contract_path": "src/LocalVariableShadow.sol",
3287 | "line_no": 16,
3288 | "src": "332:26",
3289 | "src_char": "332:26"
3290 | },
3291 | {
3292 | "contract_path": "src/LocalVariableShadow.sol",
3293 | "line_no": 31,
3294 | "src": "700:18",
3295 | "src_char": "700:18"
3296 | },
3297 | {
3298 | "contract_path": "src/OutOfOrderRetryable.sol",
3299 | "line_no": 167,
3300 | "src": "4685:13",
3301 | "src_char": "4685:13"
3302 | },
3303 | {
3304 | "contract_path": "src/OutOfOrderRetryable.sol",
3305 | "line_no": 175,
3306 | "src": "5072:7",
3307 | "src_char": "5072:7"
3308 | },
3309 | {
3310 | "contract_path": "src/ReturnBomb.sol",
3311 | "line_no": 16,
3312 | "src": "358:4",
3313 | "src_char": "358:4"
3314 | },
3315 | {
3316 | "contract_path": "src/ReturnBomb.sol",
3317 | "line_no": 32,
3318 | "src": "839:4",
3319 | "src_char": "839:4"
3320 | },
3321 | {
3322 | "contract_path": "src/ReturnBomb.sol",
3323 | "line_no": 47,
3324 | "src": "1273:4",
3325 | "src_char": "1273:4"
3326 | },
3327 | {
3328 | "contract_path": "src/ReturnBomb.sol",
3329 | "line_no": 63,
3330 | "src": "1646:4",
3331 | "src_char": "1646:4"
3332 | },
3333 | {
3334 | "contract_path": "src/StateVariables.sol",
3335 | "line_no": 47,
3336 | "src": "1764:18",
3337 | "src_char": "1764:18"
3338 | },
3339 | {
3340 | "contract_path": "src/StateVariables.sol",
3341 | "line_no": 52,
3342 | "src": "1915:20",
3343 | "src_char": "1915:20"
3344 | },
3345 | {
3346 | "contract_path": "src/StateVariables.sol",
3347 | "line_no": 57,
3348 | "src": "2072:14",
3349 | "src_char": "2072:14"
3350 | },
3351 | {
3352 | "contract_path": "src/StateVariables.sol",
3353 | "line_no": 61,
3354 | "src": "2157:22",
3355 | "src_char": "2157:22"
3356 | },
3357 | {
3358 | "contract_path": "src/StateVariables.sol",
3359 | "line_no": 71,
3360 | "src": "2539:25",
3361 | "src_char": "2539:25"
3362 | },
3363 | {
3364 | "contract_path": "src/Trump.sol",
3365 | "line_no": 180,
3366 | "src": "5624:4",
3367 | "src_char": "5624:4"
3368 | },
3369 | {
3370 | "contract_path": "src/Trump.sol",
3371 | "line_no": 184,
3372 | "src": "5711:6",
3373 | "src_char": "5711:6"
3374 | },
3375 | {
3376 | "contract_path": "src/Trump.sol",
3377 | "line_no": 188,
3378 | "src": "5802:8",
3379 | "src_char": "5802:8"
3380 | },
3381 | {
3382 | "contract_path": "src/UninitializedLocalVariables.sol",
3383 | "line_no": 7,
3384 | "src": "121:19",
3385 | "src_char": "121:19"
3386 | },
3387 | {
3388 | "contract_path": "src/UninitializedLocalVariables.sol",
3389 | "line_no": 23,
3390 | "src": "727:20",
3391 | "src_char": "727:20"
3392 | },
3393 | {
3394 | "contract_path": "src/UninitializedLocalVariables.sol",
3395 | "line_no": 41,
3396 | "src": "1527:17",
3397 | "src_char": "1527:17"
3398 | },
3399 | {
3400 | "contract_path": "src/UninitializedStateVariable.sol",
3401 | "line_no": 17,
3402 | "src": "563:8",
3403 | "src_char": "563:8"
3404 | },
3405 | {
3406 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
3407 | "line_no": 16,
3408 | "src": "475:27",
3409 | "src_char": "475:27"
3410 | },
3411 | {
3412 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
3413 | "line_no": 22,
3414 | "src": "653:28",
3415 | "src_char": "653:28"
3416 | },
3417 | {
3418 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
3419 | "line_no": 45,
3420 | "src": "1324:26",
3421 | "src_char": "1324:26"
3422 | },
3423 | {
3424 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
3425 | "line_no": 53,
3426 | "src": "1637:27",
3427 | "src_char": "1637:27"
3428 | },
3429 | {
3430 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
3431 | "line_no": 71,
3432 | "src": "2014:20",
3433 | "src_char": "2014:20"
3434 | },
3435 | {
3436 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
3437 | "line_no": 77,
3438 | "src": "2183:28",
3439 | "src_char": "2183:28"
3440 | },
3441 | {
3442 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
3443 | "line_no": 31,
3444 | "src": "500:3",
3445 | "src_char": "500:3"
3446 | },
3447 | {
3448 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
3449 | "line_no": 38,
3450 | "src": "637:5",
3451 | "src_char": "637:5"
3452 | },
3453 | {
3454 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
3455 | "line_no": 42,
3456 | "src": "738:4",
3457 | "src_char": "735:4"
3458 | },
3459 | {
3460 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
3461 | "line_no": 31,
3462 | "src": "509:3",
3463 | "src_char": "509:3"
3464 | },
3465 | {
3466 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
3467 | "line_no": 38,
3468 | "src": "646:4",
3469 | "src_char": "646:4"
3470 | },
3471 | {
3472 | "contract_path": "src/parent_chain/ParentChainContract.sol",
3473 | "line_no": 11,
3474 | "src": "355:9",
3475 | "src_char": "355:9"
3476 | },
3477 | {
3478 | "contract_path": "src/parent_chain/ParentChainContract.sol",
3479 | "line_no": 15,
3480 | "src": "422:9",
3481 | "src_char": "422:9"
3482 | },
3483 | {
3484 | "contract_path": "src/router/ExternalCalls.sol",
3485 | "line_no": 23,
3486 | "src": "384:4",
3487 | "src_char": "384:4"
3488 | },
3489 | {
3490 | "contract_path": "src/router/ExternalCalls.sol",
3491 | "line_no": 40,
3492 | "src": "776:4",
3493 | "src_char": "776:4"
3494 | },
3495 | {
3496 | "contract_path": "src/router/FallbackAndReceiveOverrides.sol",
3497 | "line_no": 22,
3498 | "src": "405:4",
3499 | "src_char": "405:4"
3500 | },
3501 | {
3502 | "contract_path": "src/router/InternalCalls.sol",
3503 | "line_no": 31,
3504 | "src": "510:4",
3505 | "src_char": "510:4"
3506 | },
3507 | {
3508 | "contract_path": "src/router/InternalCalls.sol",
3509 | "line_no": 46,
3510 | "src": "817:5",
3511 | "src_char": "817:5"
3512 | },
3513 | {
3514 | "contract_path": "src/router/InternalCalls.sol",
3515 | "line_no": 96,
3516 | "src": "1780:4",
3517 | "src_char": "1780:4"
3518 | },
3519 | {
3520 | "contract_path": "src/router/InternalCalls.sol",
3521 | "line_no": 120,
3522 | "src": "2306:4",
3523 | "src_char": "2306:4"
3524 | },
3525 | {
3526 | "contract_path": "src/router/InternalCalls.sol",
3527 | "line_no": 161,
3528 | "src": "3047:4",
3529 | "src_char": "3047:4"
3530 | },
3531 | {
3532 | "contract_path": "src/router/InternalCalls.sol",
3533 | "line_no": 169,
3534 | "src": "3165:4",
3535 | "src_char": "3165:4"
3536 | },
3537 | {
3538 | "contract_path": "src/router/InternalCalls.sol",
3539 | "line_no": 177,
3540 | "src": "3290:4",
3541 | "src_char": "3290:4"
3542 | },
3543 | {
3544 | "contract_path": "src/router/InternalCalls.sol",
3545 | "line_no": 183,
3546 | "src": "3379:4",
3547 | "src_char": "3379:4"
3548 | },
3549 | {
3550 | "contract_path": "src/router/ModifierCalls.sol",
3551 | "line_no": 22,
3552 | "src": "304:4",
3553 | "src_char": "304:4"
3554 | },
3555 | {
3556 | "contract_path": "src/router/ModifierCalls.sol",
3557 | "line_no": 35,
3558 | "src": "447:4",
3559 | "src_char": "447:4"
3560 | }
3561 | ]
3562 | },
3563 | {
3564 | "title": "Literal Instead of Constant",
3565 | "description": "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.",
3566 | "detector_name": "literal-instead-of-constant",
3567 | "instances": [
3568 | {
3569 | "contract_path": "src/AssertStateChange.sol",
3570 | "line_no": 9,
3571 | "src": "174:2",
3572 | "src_char": "174:2"
3573 | },
3574 | {
3575 | "contract_path": "src/AssertStateChange.sol",
3576 | "line_no": 14,
3577 | "src": "254:2",
3578 | "src_char": "254:2"
3579 | },
3580 | {
3581 | "contract_path": "src/BooleanEquality.sol",
3582 | "line_no": 6,
3583 | "src": "170:3",
3584 | "src_char": "170:3"
3585 | },
3586 | {
3587 | "contract_path": "src/BooleanEquality.sol",
3588 | "line_no": 13,
3589 | "src": "330:3",
3590 | "src_char": "330:3"
3591 | },
3592 | {
3593 | "contract_path": "src/BooleanEquality.sol",
3594 | "line_no": 15,
3595 | "src": "360:3",
3596 | "src_char": "360:3"
3597 | },
3598 | {
3599 | "contract_path": "src/BooleanEquality.sol",
3600 | "line_no": 20,
3601 | "src": "492:3",
3602 | "src_char": "492:3"
3603 | },
3604 | {
3605 | "contract_path": "src/BooleanEquality.sol",
3606 | "line_no": 27,
3607 | "src": "653:3",
3608 | "src_char": "653:3"
3609 | },
3610 | {
3611 | "contract_path": "src/BooleanEquality.sol",
3612 | "line_no": 29,
3613 | "src": "683:3",
3614 | "src_char": "683:3"
3615 | },
3616 | {
3617 | "contract_path": "src/CacheArrayLength.sol",
3618 | "line_no": 26,
3619 | "src": "611:3",
3620 | "src_char": "611:3"
3621 | },
3622 | {
3623 | "contract_path": "src/CacheArrayLength.sol",
3624 | "line_no": 27,
3625 | "src": "639:3",
3626 | "src_char": "639:3"
3627 | },
3628 | {
3629 | "contract_path": "src/CacheArrayLength.sol",
3630 | "line_no": 36,
3631 | "src": "1015:3",
3632 | "src_char": "1015:3"
3633 | },
3634 | {
3635 | "contract_path": "src/CacheArrayLength.sol",
3636 | "line_no": 37,
3637 | "src": "1043:3",
3638 | "src_char": "1043:3"
3639 | },
3640 | {
3641 | "contract_path": "src/Casting.sol",
3642 | "line_no": 20,
3643 | "src": "511:18",
3644 | "src_char": "511:18"
3645 | },
3646 | {
3647 | "contract_path": "src/Casting.sol",
3648 | "line_no": 26,
3649 | "src": "674:18",
3650 | "src_char": "674:18"
3651 | },
3652 | {
3653 | "contract_path": "src/Casting.sol",
3654 | "line_no": 38,
3655 | "src": "983:18",
3656 | "src_char": "983:18"
3657 | },
3658 | {
3659 | "contract_path": "src/Casting.sol",
3660 | "line_no": 76,
3661 | "src": "2165:18",
3662 | "src_char": "2165:18"
3663 | },
3664 | {
3665 | "contract_path": "src/CompilerBugStorageSignedIntegerArray.sol",
3666 | "line_no": 9,
3667 | "src": "235:1",
3668 | "src_char": "235:1"
3669 | },
3670 | {
3671 | "contract_path": "src/CompilerBugStorageSignedIntegerArray.sol",
3672 | "line_no": 14,
3673 | "src": "352:1",
3674 | "src_char": "352:1"
3675 | },
3676 | {
3677 | "contract_path": "src/ConstantsLiterals.sol",
3678 | "line_no": 25,
3679 | "src": "958:3",
3680 | "src_char": "958:3"
3681 | },
3682 | {
3683 | "contract_path": "src/ConstantsLiterals.sol",
3684 | "line_no": 26,
3685 | "src": "992:3",
3686 | "src_char": "992:3"
3687 | },
3688 | {
3689 | "contract_path": "src/ConstantsLiterals.sol",
3690 | "line_no": 27,
3691 | "src": "1032:4",
3692 | "src_char": "1032:4"
3693 | },
3694 | {
3695 | "contract_path": "src/ConstantsLiterals.sol",
3696 | "line_no": 28,
3697 | "src": "1068:4",
3698 | "src_char": "1068:4"
3699 | },
3700 | {
3701 | "contract_path": "src/ConstantsLiterals.sol",
3702 | "line_no": 29,
3703 | "src": "1117:42",
3704 | "src_char": "1117:42"
3705 | },
3706 | {
3707 | "contract_path": "src/ConstantsLiterals.sol",
3708 | "line_no": 30,
3709 | "src": "1192:42",
3710 | "src_char": "1192:42"
3711 | },
3712 | {
3713 | "contract_path": "src/ConstantsLiterals.sol",
3714 | "line_no": 31,
3715 | "src": "1275:66",
3716 | "src_char": "1275:66"
3717 | },
3718 | {
3719 | "contract_path": "src/DangerousStrictEquality2.sol",
3720 | "line_no": 6,
3721 | "src": "202:9",
3722 | "src_char": "202:9"
3723 | },
3724 | {
3725 | "contract_path": "src/DangerousStrictEquality2.sol",
3726 | "line_no": 10,
3727 | "src": "339:9",
3728 | "src_char": "339:9"
3729 | },
3730 | {
3731 | "contract_path": "src/DelegateCallWithoutAddressCheck.sol",
3732 | "line_no": 24,
3733 | "src": "718:1",
3734 | "src_char": "718:1"
3735 | },
3736 | {
3737 | "contract_path": "src/DelegateCallWithoutAddressCheck.sol",
3738 | "line_no": 24,
3739 | "src": "771:1",
3740 | "src_char": "771:1"
3741 | },
3742 | {
3743 | "contract_path": "src/DelegateCallWithoutAddressCheck.sol",
3744 | "line_no": 26,
3745 | "src": "838:1",
3746 | "src_char": "838:1"
3747 | },
3748 | {
3749 | "contract_path": "src/DynamicArrayLengthAssignment.sol",
3750 | "line_no": 13,
3751 | "src": "312:3",
3752 | "src_char": "312:3"
3753 | },
3754 | {
3755 | "contract_path": "src/DynamicArrayLengthAssignment.sol",
3756 | "line_no": 14,
3757 | "src": "346:3",
3758 | "src_char": "346:3"
3759 | },
3760 | {
3761 | "contract_path": "src/DynamicArrayLengthAssignment.sol",
3762 | "line_no": 17,
3763 | "src": "457:3",
3764 | "src_char": "457:3"
3765 | },
3766 | {
3767 | "contract_path": "src/FunctionInitializingState.sol",
3768 | "line_no": 23,
3769 | "src": "792:2",
3770 | "src_char": "792:2"
3771 | },
3772 | {
3773 | "contract_path": "src/FunctionInitializingState.sol",
3774 | "line_no": 26,
3775 | "src": "822:2",
3776 | "src_char": "822:2"
3777 | },
3778 | {
3779 | "contract_path": "src/FunctionInitializingState.sol",
3780 | "line_no": 34,
3781 | "src": "1111:2",
3782 | "src_char": "1111:2"
3783 | },
3784 | {
3785 | "contract_path": "src/FunctionInitializingState.sol",
3786 | "line_no": 37,
3787 | "src": "1141:2",
3788 | "src_char": "1141:2"
3789 | },
3790 | {
3791 | "contract_path": "src/FunctionInitializingState.sol",
3792 | "line_no": 42,
3793 | "src": "1270:4",
3794 | "src_char": "1270:4"
3795 | },
3796 | {
3797 | "contract_path": "src/FunctionInitializingState.sol",
3798 | "line_no": 42,
3799 | "src": "1277:4",
3800 | "src_char": "1277:4"
3801 | },
3802 | {
3803 | "contract_path": "src/FunctionInitializingState.sol",
3804 | "line_no": 48,
3805 | "src": "1461:4",
3806 | "src_char": "1461:4"
3807 | },
3808 | {
3809 | "contract_path": "src/FunctionInitializingState.sol",
3810 | "line_no": 48,
3811 | "src": "1468:4",
3812 | "src_char": "1468:4"
3813 | },
3814 | {
3815 | "contract_path": "src/IncorrectCaretOperator.sol",
3816 | "line_no": 17,
3817 | "src": "563:2",
3818 | "src_char": "563:2"
3819 | },
3820 | {
3821 | "contract_path": "src/IncorrectCaretOperator.sol",
3822 | "line_no": 18,
3823 | "src": "606:2",
3824 | "src_char": "606:2"
3825 | },
3826 | {
3827 | "contract_path": "src/MultiplePlaceholders.sol",
3828 | "line_no": 22,
3829 | "src": "423:3",
3830 | "src_char": "423:3"
3831 | },
3832 | {
3833 | "contract_path": "src/MultiplePlaceholders.sol",
3834 | "line_no": 33,
3835 | "src": "619:3",
3836 | "src_char": "619:3"
3837 | },
3838 | {
3839 | "contract_path": "src/MultiplePlaceholders.sol",
3840 | "line_no": 45,
3841 | "src": "825:3",
3842 | "src_char": "825:3"
3843 | },
3844 | {
3845 | "contract_path": "src/PreDeclaredVarUsage.sol",
3846 | "line_no": 8,
3847 | "src": "200:3",
3848 | "src_char": "200:3"
3849 | },
3850 | {
3851 | "contract_path": "src/PreDeclaredVarUsage.sol",
3852 | "line_no": 9,
3853 | "src": "222:3",
3854 | "src_char": "222:3"
3855 | },
3856 | {
3857 | "contract_path": "src/RevertsAndRequriesInLoops.sol",
3858 | "line_no": 10,
3859 | "src": "253:2",
3860 | "src_char": "253:2"
3861 | },
3862 | {
3863 | "contract_path": "src/RevertsAndRequriesInLoops.sol",
3864 | "line_no": 17,
3865 | "src": "442:2",
3866 | "src_char": "442:2"
3867 | },
3868 | {
3869 | "contract_path": "src/RevertsAndRequriesInLoops.sol",
3870 | "line_no": 26,
3871 | "src": "706:2",
3872 | "src_char": "706:2"
3873 | },
3874 | {
3875 | "contract_path": "src/RevertsAndRequriesInLoops.sol",
3876 | "line_no": 27,
3877 | "src": "745:2",
3878 | "src_char": "745:2"
3879 | },
3880 | {
3881 | "contract_path": "src/StateVariablesManipulation.sol",
3882 | "line_no": 121,
3883 | "src": "3471:2",
3884 | "src_char": "3471:2"
3885 | },
3886 | {
3887 | "contract_path": "src/StateVariablesManipulation.sol",
3888 | "line_no": 123,
3889 | "src": "3542:2",
3890 | "src_char": "3542:2"
3891 | },
3892 | {
3893 | "contract_path": "src/StateVariablesManipulation.sol",
3894 | "line_no": 192,
3895 | "src": "5408:3",
3896 | "src_char": "5408:3"
3897 | },
3898 | {
3899 | "contract_path": "src/StateVariablesManipulation.sol",
3900 | "line_no": 202,
3901 | "src": "5621:3",
3902 | "src_char": "5621:3"
3903 | },
3904 | {
3905 | "contract_path": "src/StateVariablesManipulation.sol",
3906 | "line_no": 233,
3907 | "src": "6372:1",
3908 | "src_char": "6372:1"
3909 | },
3910 | {
3911 | "contract_path": "src/StateVariablesManipulation.sol",
3912 | "line_no": 237,
3913 | "src": "6468:2",
3914 | "src_char": "6468:2"
3915 | },
3916 | {
3917 | "contract_path": "src/StateVariablesManipulation.sol",
3918 | "line_no": 239,
3919 | "src": "6543:2",
3920 | "src_char": "6543:2"
3921 | },
3922 | {
3923 | "contract_path": "src/StateVariablesManipulation.sol",
3924 | "line_no": 244,
3925 | "src": "6704:2",
3926 | "src_char": "6704:2"
3927 | },
3928 | {
3929 | "contract_path": "src/StateVariablesManipulation.sol",
3930 | "line_no": 258,
3931 | "src": "7236:1",
3932 | "src_char": "7236:1"
3933 | },
3934 | {
3935 | "contract_path": "src/StateVariablesManipulation.sol",
3936 | "line_no": 264,
3937 | "src": "7497:1",
3938 | "src_char": "7497:1"
3939 | },
3940 | {
3941 | "contract_path": "src/StateVariablesManipulation.sol",
3942 | "line_no": 333,
3943 | "src": "9506:3",
3944 | "src_char": "9506:3"
3945 | },
3946 | {
3947 | "contract_path": "src/StateVariablesManipulation.sol",
3948 | "line_no": 339,
3949 | "src": "9671:3",
3950 | "src_char": "9671:3"
3951 | },
3952 | {
3953 | "contract_path": "src/Trump.sol",
3954 | "line_no": 233,
3955 | "src": "7704:3",
3956 | "src_char": "7704:3"
3957 | },
3958 | {
3959 | "contract_path": "src/Trump.sol",
3960 | "line_no": 250,
3961 | "src": "8497:3",
3962 | "src_char": "8497:3"
3963 | },
3964 | {
3965 | "contract_path": "src/Trump.sol",
3966 | "line_no": 306,
3967 | "src": "10426:3",
3968 | "src_char": "10426:3"
3969 | },
3970 | {
3971 | "contract_path": "src/Trump.sol",
3972 | "line_no": 307,
3973 | "src": "10498:3",
3974 | "src_char": "10498:3"
3975 | },
3976 | {
3977 | "contract_path": "src/UncheckedReturn.sol",
3978 | "line_no": 27,
3979 | "src": "607:7",
3980 | "src_char": "607:7"
3981 | },
3982 | {
3983 | "contract_path": "src/UncheckedReturn.sol",
3984 | "line_no": 32,
3985 | "src": "805:7",
3986 | "src_char": "805:7"
3987 | },
3988 | {
3989 | "contract_path": "src/UncheckedReturn.sol",
3990 | "line_no": 37,
3991 | "src": "995:7",
3992 | "src_char": "995:7"
3993 | },
3994 | {
3995 | "contract_path": "src/UncheckedReturn.sol",
3996 | "line_no": 42,
3997 | "src": "1190:7",
3998 | "src_char": "1190:7"
3999 | },
4000 | {
4001 | "contract_path": "src/UninitializedLocalVariables.sol",
4002 | "line_no": 34,
4003 | "src": "1264:42",
4004 | "src_char": "1264:42"
4005 | },
4006 | {
4007 | "contract_path": "src/UninitializedLocalVariables.sol",
4008 | "line_no": 63,
4009 | "src": "2278:42",
4010 | "src_char": "2278:42"
4011 | },
4012 | {
4013 | "contract_path": "src/UninitializedLocalVariables.sol",
4014 | "line_no": 67,
4015 | "src": "2459:2",
4016 | "src_char": "2459:2"
4017 | },
4018 | {
4019 | "contract_path": "src/UninitializedLocalVariables.sol",
4020 | "line_no": 70,
4021 | "src": "2607:2",
4022 | "src_char": "2607:2"
4023 | },
4024 | {
4025 | "contract_path": "src/WeakRandomness.sol",
4026 | "line_no": 25,
4027 | "src": "933:2",
4028 | "src_char": "933:2"
4029 | },
4030 | {
4031 | "contract_path": "src/WeakRandomness.sol",
4032 | "line_no": 35,
4033 | "src": "1252:2",
4034 | "src_char": "1252:2"
4035 | },
4036 | {
4037 | "contract_path": "src/WeakRandomness.sol",
4038 | "line_no": 41,
4039 | "src": "1441:2",
4040 | "src_char": "1441:2"
4041 | },
4042 | {
4043 | "contract_path": "src/eth2/DepositContract.sol",
4044 | "line_no": 113,
4045 | "src": "7252:2",
4046 | "src_char": "5764:2"
4047 | },
4048 | {
4049 | "contract_path": "src/eth2/DepositContract.sol",
4050 | "line_no": 113,
4051 | "src": "7293:2",
4052 | "src_char": "5805:2"
4053 | }
4054 | ]
4055 | },
4056 | {
4057 | "title": "Empty `require()` / `revert()` Statement",
4058 | "description": "Use descriptive reason strings or custom errors for revert paths.",
4059 | "detector_name": "empty-require-revert",
4060 | "instances": [
4061 | {
4062 | "contract_path": "src/CallGraphTests.sol",
4063 | "line_no": 7,
4064 | "src": "128:7",
4065 | "src_char": "128:7"
4066 | },
4067 | {
4068 | "contract_path": "src/CallGraphTests.sol",
4069 | "line_no": 28,
4070 | "src": "531:6",
4071 | "src_char": "531:6"
4072 | },
4073 | {
4074 | "contract_path": "src/CallGraphTests.sol",
4075 | "line_no": 50,
4076 | "src": "936:6",
4077 | "src_char": "936:6"
4078 | },
4079 | {
4080 | "contract_path": "src/CallGraphTests.sol",
4081 | "line_no": 65,
4082 | "src": "1246:7",
4083 | "src_char": "1246:7"
4084 | },
4085 | {
4086 | "contract_path": "src/DelegateCallWithoutAddressCheck.sol",
4087 | "line_no": 31,
4088 | "src": "948:7",
4089 | "src_char": "948:7"
4090 | },
4091 | {
4092 | "contract_path": "src/DeprecatedOZFunctions.sol",
4093 | "line_no": 37,
4094 | "src": "1264:7",
4095 | "src_char": "1264:7"
4096 | },
4097 | {
4098 | "contract_path": "src/DeprecatedOZFunctions.sol",
4099 | "line_no": 40,
4100 | "src": "1389:6",
4101 | "src_char": "1389:6"
4102 | },
4103 | {
4104 | "contract_path": "src/EmitAfterExternalCall.sol",
4105 | "line_no": 18,
4106 | "src": "424:7",
4107 | "src_char": "424:7"
4108 | },
4109 | {
4110 | "contract_path": "src/ExternalCalls.sol",
4111 | "line_no": 72,
4112 | "src": "1381:6",
4113 | "src_char": "1381:6"
4114 | },
4115 | {
4116 | "contract_path": "src/IncorrectModifier.sol",
4117 | "line_no": 49,
4118 | "src": "1334:6",
4119 | "src_char": "1334:6"
4120 | },
4121 | {
4122 | "contract_path": "src/LocalVariableShadow.sol",
4123 | "line_no": 12,
4124 | "src": "251:7",
4125 | "src_char": "251:7"
4126 | },
4127 | {
4128 | "contract_path": "src/LocalVariableShadow.sol",
4129 | "line_no": 19,
4130 | "src": "434:7",
4131 | "src_char": "434:7"
4132 | },
4133 | {
4134 | "contract_path": "src/LocalVariableShadow.sol",
4135 | "line_no": 33,
4136 | "src": "770:7",
4137 | "src_char": "770:7"
4138 | },
4139 | {
4140 | "contract_path": "src/MultiplePlaceholders.sol",
4141 | "line_no": 23,
4142 | "src": "442:6",
4143 | "src_char": "442:6"
4144 | },
4145 | {
4146 | "contract_path": "src/MultiplePlaceholders.sol",
4147 | "line_no": 34,
4148 | "src": "638:6",
4149 | "src_char": "638:6"
4150 | },
4151 | {
4152 | "contract_path": "src/MultiplePlaceholders.sol",
4153 | "line_no": 46,
4154 | "src": "844:6",
4155 | "src_char": "844:6"
4156 | },
4157 | {
4158 | "contract_path": "src/RevertsAndRequriesInLoops.sol",
4159 | "line_no": 19,
4160 | "src": "503:6",
4161 | "src_char": "503:6"
4162 | },
4163 | {
4164 | "contract_path": "src/SendEtherNoChecks.sol",
4165 | "line_no": 12,
4166 | "src": "268:6",
4167 | "src_char": "268:6"
4168 | },
4169 | {
4170 | "contract_path": "src/SendEtherNoChecks.sol",
4171 | "line_no": 27,
4172 | "src": "513:7",
4173 | "src_char": "513:7"
4174 | },
4175 | {
4176 | "contract_path": "src/SendEtherNoChecks.sol",
4177 | "line_no": 43,
4178 | "src": "920:6",
4179 | "src_char": "920:6"
4180 | },
4181 | {
4182 | "contract_path": "src/SendEtherNoChecksLibImport.sol",
4183 | "line_no": 12,
4184 | "src": "451:6",
4185 | "src_char": "451:6"
4186 | },
4187 | {
4188 | "contract_path": "src/StateChangeAfterExternalCall.sol",
4189 | "line_no": 17,
4190 | "src": "428:7",
4191 | "src_char": "428:7"
4192 | },
4193 | {
4194 | "contract_path": "src/StateShadowing.sol",
4195 | "line_no": 8,
4196 | "src": "135:7",
4197 | "src_char": "135:7"
4198 | },
4199 | {
4200 | "contract_path": "src/Trump.sol",
4201 | "line_no": 240,
4202 | "src": "8065:7",
4203 | "src_char": "8065:7"
4204 | },
4205 | {
4206 | "contract_path": "src/ZeroAddressCheck.sol",
4207 | "line_no": 13,
4208 | "src": "329:6",
4209 | "src_char": "329:6"
4210 | },
4211 | {
4212 | "contract_path": "src/ZeroAddressCheck.sol",
4213 | "line_no": 23,
4214 | "src": "608:6",
4215 | "src_char": "608:6"
4216 | },
4217 | {
4218 | "contract_path": "src/ZeroAddressCheck.sol",
4219 | "line_no": 38,
4220 | "src": "1074:6",
4221 | "src_char": "1074:6"
4222 | },
4223 | {
4224 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
4225 | "line_no": 35,
4226 | "src": "589:7",
4227 | "src_char": "589:7"
4228 | },
4229 | {
4230 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
4231 | "line_no": 56,
4232 | "src": "1403:7",
4233 | "src_char": "1400:7"
4234 | },
4235 | {
4236 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
4237 | "line_no": 35,
4238 | "src": "598:7",
4239 | "src_char": "598:7"
4240 | },
4241 | {
4242 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
4243 | "line_no": 53,
4244 | "src": "1408:7",
4245 | "src_char": "1408:7"
4246 | }
4247 | ]
4248 | },
4249 | {
4250 | "title": "`nonReentrant` is Not the First Modifier",
4251 | "description": "To protect against reentrancy in other modifiers, the `nonReentrant` modifier should be the first modifier in the list of modifiers.",
4252 | "detector_name": "non-reentrant-not-first",
4253 | "instances": [
4254 | {
4255 | "contract_path": "src/AdminContract.sol",
4256 | "line_no": 10,
4257 | "src": "386:12",
4258 | "src_char": "386:12"
4259 | },
4260 | {
4261 | "contract_path": "src/parent_chain/ParentChainContract.sol",
4262 | "line_no": 28,
4263 | "src": "735:12",
4264 | "src_char": "735:12"
4265 | }
4266 | ]
4267 | },
4268 | {
4269 | "title": "Using `block.timestamp` for swap deadline offers no protection",
4270 | "description": "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.",
4271 | "detector_name": "block-timestamp-deadline",
4272 | "instances": [
4273 | {
4274 | "contract_path": "src/Trump.sol",
4275 | "line_no": 290,
4276 | "src": "9949:190",
4277 | "src_char": "9949:190"
4278 | },
4279 | {
4280 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
4281 | "line_no": 23,
4282 | "src": "670:83",
4283 | "src_char": "670:83"
4284 | },
4285 | {
4286 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
4287 | "line_no": 24,
4288 | "src": "763:83",
4289 | "src_char": "763:83"
4290 | },
4291 | {
4292 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
4293 | "line_no": 25,
4294 | "src": "856:70",
4295 | "src_char": "856:70"
4296 | },
4297 | {
4298 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
4299 | "line_no": 26,
4300 | "src": "936:80",
4301 | "src_char": "936:80"
4302 | },
4303 | {
4304 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
4305 | "line_no": 27,
4306 | "src": "1026:80",
4307 | "src_char": "1026:80"
4308 | },
4309 | {
4310 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
4311 | "line_no": 31,
4312 | "src": "1278:112",
4313 | "src_char": "1278:112"
4314 | },
4315 | {
4316 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
4317 | "line_no": 32,
4318 | "src": "1400:99",
4319 | "src_char": "1400:99"
4320 | },
4321 | {
4322 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
4323 | "line_no": 33,
4324 | "src": "1509:109",
4325 | "src_char": "1509:109"
4326 | },
4327 | {
4328 | "contract_path": "src/uniswap/UniswapV3Swapper.sol",
4329 | "line_no": 52,
4330 | "src": "1115:143",
4331 | "src_char": "1115:143"
4332 | },
4333 | {
4334 | "contract_path": "src/uniswap/UniswapV3Swapper.sol",
4335 | "line_no": 55,
4336 | "src": "1293:321",
4337 | "src_char": "1293:321"
4338 | },
4339 | {
4340 | "contract_path": "src/uniswap/UniswapV3Swapper.sol",
4341 | "line_no": 66,
4342 | "src": "1668:131",
4343 | "src_char": "1668:131"
4344 | },
4345 | {
4346 | "contract_path": "src/uniswap/UniswapV3Swapper.sol",
4347 | "line_no": 69,
4348 | "src": "1828:236",
4349 | "src_char": "1828:236"
4350 | },
4351 | {
4352 | "contract_path": "src/uniswap/UniswapV3Swapper.sol",
4353 | "line_no": 77,
4354 | "src": "2132:144",
4355 | "src_char": "2132:144"
4356 | },
4357 | {
4358 | "contract_path": "src/uniswap/UniswapV3Swapper.sol",
4359 | "line_no": 80,
4360 | "src": "2312:322",
4361 | "src_char": "2312:322"
4362 | },
4363 | {
4364 | "contract_path": "src/uniswap/UniswapV3Swapper.sol",
4365 | "line_no": 91,
4366 | "src": "2690:132",
4367 | "src_char": "2690:132"
4368 | },
4369 | {
4370 | "contract_path": "src/uniswap/UniswapV3Swapper.sol",
4371 | "line_no": 94,
4372 | "src": "2852:237",
4373 | "src_char": "2852:237"
4374 | }
4375 | ]
4376 | },
4377 | {
4378 | "title": "Unsafe `ERC721::_mint()`",
4379 | "description": "Using `ERC721::_mint()` can mint ERC721 tokens to addresses which don't support ERC721 tokens. Use `_safeMint()` instead of `_mint()` for ERC721 tokens.",
4380 | "detector_name": "unsafe-oz-erc721-mint",
4381 | "instances": [
4382 | {
4383 | "contract_path": "src/UnsafeERC721Mint.sol",
4384 | "line_no": 12,
4385 | "src": "410:5",
4386 | "src_char": "410:5"
4387 | }
4388 | ]
4389 | },
4390 | {
4391 | "title": "PUSH0 Opcode",
4392 | "description": "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.",
4393 | "detector_name": "push-zero-opcode",
4394 | "instances": [
4395 | {
4396 | "contract_path": "src/AdminContract.sol",
4397 | "line_no": 2,
4398 | "src": "32:23",
4399 | "src_char": "32:23"
4400 | },
4401 | {
4402 | "contract_path": "src/AssertStateChange.sol",
4403 | "line_no": 2,
4404 | "src": "32:23",
4405 | "src_char": "32:23"
4406 | },
4407 | {
4408 | "contract_path": "src/CacheArrayLength.sol",
4409 | "line_no": 2,
4410 | "src": "32:23",
4411 | "src_char": "32:23"
4412 | },
4413 | {
4414 | "contract_path": "src/ContractLocksEther.sol",
4415 | "line_no": 2,
4416 | "src": "32:23",
4417 | "src_char": "32:23"
4418 | },
4419 | {
4420 | "contract_path": "src/ContractWithTodo.sol",
4421 | "line_no": 2,
4422 | "src": "32:23",
4423 | "src_char": "32:23"
4424 | },
4425 | {
4426 | "contract_path": "src/CostlyOperationsInsideLoops.sol",
4427 | "line_no": 2,
4428 | "src": "32:23",
4429 | "src_char": "32:23"
4430 | },
4431 | {
4432 | "contract_path": "src/Counter.sol",
4433 | "line_no": 2,
4434 | "src": "39:24",
4435 | "src_char": "39:24"
4436 | },
4437 | {
4438 | "contract_path": "src/CrazyPragma.sol",
4439 | "line_no": 2,
4440 | "src": "32:32",
4441 | "src_char": "32:32"
4442 | },
4443 | {
4444 | "contract_path": "src/DangerousStrictEquality2.sol",
4445 | "line_no": 2,
4446 | "src": "32:23",
4447 | "src_char": "32:23"
4448 | },
4449 | {
4450 | "contract_path": "src/DelegateCallWithoutAddressCheck.sol",
4451 | "line_no": 2,
4452 | "src": "32:21",
4453 | "src_char": "32:21"
4454 | },
4455 | {
4456 | "contract_path": "src/DeletionNestedMappingStructureContract.sol",
4457 | "line_no": 2,
4458 | "src": "32:23",
4459 | "src_char": "32:23"
4460 | },
4461 | {
4462 | "contract_path": "src/DeprecatedOZFunctions.sol",
4463 | "line_no": 2,
4464 | "src": "32:23",
4465 | "src_char": "32:23"
4466 | },
4467 | {
4468 | "contract_path": "src/FunctionInitializingState.sol",
4469 | "line_no": 2,
4470 | "src": "32:23",
4471 | "src_char": "32:23"
4472 | },
4473 | {
4474 | "contract_path": "src/FunctionSignatureCollision.sol",
4475 | "line_no": 2,
4476 | "src": "32:23",
4477 | "src_char": "32:23"
4478 | },
4479 | {
4480 | "contract_path": "src/InconsistentUints.sol",
4481 | "line_no": 1,
4482 | "src": "0:24",
4483 | "src_char": "0:24"
4484 | },
4485 | {
4486 | "contract_path": "src/IncorrectERC20.sol",
4487 | "line_no": 2,
4488 | "src": "32:23",
4489 | "src_char": "32:23"
4490 | },
4491 | {
4492 | "contract_path": "src/IncorrectERC721.sol",
4493 | "line_no": 2,
4494 | "src": "32:23",
4495 | "src_char": "32:23"
4496 | },
4497 | {
4498 | "contract_path": "src/KeccakContract.sol",
4499 | "line_no": 2,
4500 | "src": "32:23",
4501 | "src_char": "32:23"
4502 | },
4503 | {
4504 | "contract_path": "src/MsgValueInLoop.sol",
4505 | "line_no": 2,
4506 | "src": "32:23",
4507 | "src_char": "32:23"
4508 | },
4509 | {
4510 | "contract_path": "src/OnlyLibrary.sol",
4511 | "line_no": 2,
4512 | "src": "32:23",
4513 | "src_char": "32:23"
4514 | },
4515 | {
4516 | "contract_path": "src/OutOfOrderRetryable.sol",
4517 | "line_no": 2,
4518 | "src": "32:23",
4519 | "src_char": "32:23"
4520 | },
4521 | {
4522 | "contract_path": "src/ReturnBomb.sol",
4523 | "line_no": 2,
4524 | "src": "32:23",
4525 | "src_char": "32:23"
4526 | },
4527 | {
4528 | "contract_path": "src/StateVariables.sol",
4529 | "line_no": 2,
4530 | "src": "32:23",
4531 | "src_char": "32:23"
4532 | },
4533 | {
4534 | "contract_path": "src/StateVariablesManipulation.sol",
4535 | "line_no": 2,
4536 | "src": "32:23",
4537 | "src_char": "32:23"
4538 | },
4539 | {
4540 | "contract_path": "src/StorageConditionals.sol",
4541 | "line_no": 2,
4542 | "src": "32:23",
4543 | "src_char": "32:23"
4544 | },
4545 | {
4546 | "contract_path": "src/T11sTranferer.sol",
4547 | "line_no": 2,
4548 | "src": "32:23",
4549 | "src_char": "32:23"
4550 | },
4551 | {
4552 | "contract_path": "src/TautologicalCompare.sol",
4553 | "line_no": 2,
4554 | "src": "32:23",
4555 | "src_char": "32:23"
4556 | },
4557 | {
4558 | "contract_path": "src/Trump.sol",
4559 | "line_no": 16,
4560 | "src": "227:23",
4561 | "src_char": "227:23"
4562 | },
4563 | {
4564 | "contract_path": "src/TxOriginUsedForAuth.sol",
4565 | "line_no": 2,
4566 | "src": "32:24",
4567 | "src_char": "32:24"
4568 | },
4569 | {
4570 | "contract_path": "src/UnsafeERC721Mint.sol",
4571 | "line_no": 2,
4572 | "src": "32:23",
4573 | "src_char": "32:23"
4574 | },
4575 | {
4576 | "contract_path": "src/UnusedStateVariables.sol",
4577 | "line_no": 2,
4578 | "src": "32:24",
4579 | "src_char": "32:24"
4580 | },
4581 | {
4582 | "contract_path": "src/VoidConstructor.sol",
4583 | "line_no": 2,
4584 | "src": "32:23",
4585 | "src_char": "32:23"
4586 | },
4587 | {
4588 | "contract_path": "src/WeakRandomness.sol",
4589 | "line_no": 2,
4590 | "src": "32:23",
4591 | "src_char": "32:23"
4592 | },
4593 | {
4594 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
4595 | "line_no": 6,
4596 | "src": "46:24",
4597 | "src_char": "46:24"
4598 | },
4599 | {
4600 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
4601 | "line_no": 6,
4602 | "src": "46:32",
4603 | "src_char": "46:32"
4604 | },
4605 | {
4606 | "contract_path": "src/eth2/DepositContract.sol",
4607 | "line_no": 12,
4608 | "src": "2302:23",
4609 | "src_char": "814:23"
4610 | },
4611 | {
4612 | "contract_path": "src/inheritance/ExtendedInheritance.sol",
4613 | "line_no": 2,
4614 | "src": "32:23",
4615 | "src_char": "32:23"
4616 | },
4617 | {
4618 | "contract_path": "src/inheritance/IContractInheritance.sol",
4619 | "line_no": 2,
4620 | "src": "32:24",
4621 | "src_char": "32:24"
4622 | },
4623 | {
4624 | "contract_path": "src/inheritance/InheritanceBase.sol",
4625 | "line_no": 2,
4626 | "src": "32:23",
4627 | "src_char": "32:23"
4628 | },
4629 | {
4630 | "contract_path": "src/nested/1/Nested.sol",
4631 | "line_no": 5,
4632 | "src": "180:23",
4633 | "src_char": "180:23"
4634 | },
4635 | {
4636 | "contract_path": "src/nested/2/Nested.sol",
4637 | "line_no": 5,
4638 | "src": "180:23",
4639 | "src_char": "180:23"
4640 | },
4641 | {
4642 | "contract_path": "src/nested_mappings/LaterVersion.sol",
4643 | "line_no": 2,
4644 | "src": "36:23",
4645 | "src_char": "36:23"
4646 | },
4647 | {
4648 | "contract_path": "src/parent_chain/ParentChainContract.sol",
4649 | "line_no": 2,
4650 | "src": "32:23",
4651 | "src_char": "32:23"
4652 | },
4653 | {
4654 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
4655 | "line_no": 2,
4656 | "src": "32:23",
4657 | "src_char": "32:23"
4658 | },
4659 | {
4660 | "contract_path": "src/uniswap/UniswapV3Swapper.sol",
4661 | "line_no": 2,
4662 | "src": "32:23",
4663 | "src_char": "32:23"
4664 | }
4665 | ]
4666 | },
4667 | {
4668 | "title": "Modifier Invoked Only Once",
4669 | "description": "Consider removing the modifier or inlining the logic into the calling function.",
4670 | "detector_name": "modifier-used-only-once",
4671 | "instances": [
4672 | {
4673 | "contract_path": "src/BuiltinSymbolShadow.sol",
4674 | "line_no": 17,
4675 | "src": "358:39",
4676 | "src_char": "358:39"
4677 | },
4678 | {
4679 | "contract_path": "src/CallGraphTests.sol",
4680 | "line_no": 10,
4681 | "src": "186:22",
4682 | "src_char": "186:22"
4683 | },
4684 | {
4685 | "contract_path": "src/CallGraphTests.sol",
4686 | "line_no": 32,
4687 | "src": "571:22",
4688 | "src_char": "571:22"
4689 | },
4690 | {
4691 | "contract_path": "src/CallGraphTests.sol",
4692 | "line_no": 54,
4693 | "src": "976:22",
4694 | "src_char": "976:22"
4695 | },
4696 | {
4697 | "contract_path": "src/DelegateCallWithoutAddressCheck.sol",
4698 | "line_no": 23,
4699 | "src": "678:9",
4700 | "src_char": "678:9"
4701 | },
4702 | {
4703 | "contract_path": "src/InternalFunctions.sol",
4704 | "line_no": 18,
4705 | "src": "413:9",
4706 | "src_char": "413:9"
4707 | },
4708 | {
4709 | "contract_path": "src/OnceModifierExample.sol",
4710 | "line_no": 6,
4711 | "src": "103:8",
4712 | "src_char": "103:8"
4713 | },
4714 | {
4715 | "contract_path": "src/SendEtherNoChecks.sol",
4716 | "line_no": 16,
4717 | "src": "308:4",
4718 | "src_char": "308:4"
4719 | },
4720 | {
4721 | "contract_path": "src/SendEtherNoChecks.sol",
4722 | "line_no": 47,
4723 | "src": "960:4",
4724 | "src_char": "960:4"
4725 | },
4726 | {
4727 | "contract_path": "src/SendEtherNoChecks.sol",
4728 | "line_no": 70,
4729 | "src": "1301:4",
4730 | "src_char": "1301:4"
4731 | },
4732 | {
4733 | "contract_path": "src/SendEtherNoChecks.sol",
4734 | "line_no": 93,
4735 | "src": "1704:4",
4736 | "src_char": "1704:4"
4737 | },
4738 | {
4739 | "contract_path": "src/StateShadowing.sol",
4740 | "line_no": 7,
4741 | "src": "107:74",
4742 | "src_char": "107:74"
4743 | },
4744 | {
4745 | "contract_path": "src/Trump.sol",
4746 | "line_no": 162,
4747 | "src": "5133:11",
4748 | "src_char": "5133:11"
4749 | },
4750 | {
4751 | "contract_path": "src/UnprotectedInitialize.sol",
4752 | "line_no": 15,
4753 | "src": "320:21",
4754 | "src_char": "320:21"
4755 | },
4756 | {
4757 | "contract_path": "src/router/ModifierCalls.sol",
4758 | "line_no": 5,
4759 | "src": "105:6",
4760 | "src_char": "105:6"
4761 | },
4762 | {
4763 | "contract_path": "src/router/ModifierCalls.sol",
4764 | "line_no": 31,
4765 | "src": "395:6",
4766 | "src_char": "395:6"
4767 | },
4768 | {
4769 | "contract_path": "src/router/ModifierCalls.sol",
4770 | "line_no": 42,
4771 | "src": "555:6",
4772 | "src_char": "555:6"
4773 | }
4774 | ]
4775 | },
4776 | {
4777 | "title": "Empty Block",
4778 | "description": "Consider removing empty blocks.",
4779 | "detector_name": "empty-block",
4780 | "instances": [
4781 | {
4782 | "contract_path": "src/AderynIgnoreCustomDetectors.sol",
4783 | "line_no": 7,
4784 | "src": "174:2",
4785 | "src_char": "174:2"
4786 | },
4787 | {
4788 | "contract_path": "src/AdminContract.sol",
4789 | "line_no": 14,
4790 | "src": "457:23",
4791 | "src_char": "457:23"
4792 | },
4793 | {
4794 | "contract_path": "src/BuiltinSymbolShadow.sol",
4795 | "line_no": 8,
4796 | "src": "125:41",
4797 | "src_char": "125:41"
4798 | },
4799 | {
4800 | "contract_path": "src/CacheArrayLength.sol",
4801 | "line_no": 17,
4802 | "src": "337:2",
4803 | "src_char": "337:2"
4804 | },
4805 | {
4806 | "contract_path": "src/CacheArrayLength.sol",
4807 | "line_no": 42,
4808 | "src": "1104:2",
4809 | "src_char": "1104:2"
4810 | },
4811 | {
4812 | "contract_path": "src/CallGraphTests.sol",
4813 | "line_no": 16,
4814 | "src": "291:16",
4815 | "src_char": "291:16"
4816 | },
4817 | {
4818 | "contract_path": "src/CallGraphTests.sol",
4819 | "line_no": 38,
4820 | "src": "686:16",
4821 | "src_char": "686:16"
4822 | },
4823 | {
4824 | "contract_path": "src/ContractWithTodo.sol",
4825 | "line_no": 7,
4826 | "src": "129:10",
4827 | "src_char": "129:10"
4828 | },
4829 | {
4830 | "contract_path": "src/ContractWithTodo.sol",
4831 | "line_no": 13,
4832 | "src": "337:15",
4833 | "src_char": "337:15"
4834 | },
4835 | {
4836 | "contract_path": "src/EmptyBlocks.sol",
4837 | "line_no": 30,
4838 | "src": "503:12",
4839 | "src_char": "503:12"
4840 | },
4841 | {
4842 | "contract_path": "src/EmptyBlocks.sol",
4843 | "line_no": 38,
4844 | "src": "599:12",
4845 | "src_char": "599:12"
4846 | },
4847 | {
4848 | "contract_path": "src/EmptyBlocks.sol",
4849 | "line_no": 49,
4850 | "src": "739:12",
4851 | "src_char": "739:12"
4852 | },
4853 | {
4854 | "contract_path": "src/EmptyBlocks.sol",
4855 | "line_no": 63,
4856 | "src": "888:13",
4857 | "src_char": "888:13"
4858 | },
4859 | {
4860 | "contract_path": "src/EmptyBlocks.sol",
4861 | "line_no": 67,
4862 | "src": "946:24",
4863 | "src_char": "946:24"
4864 | },
4865 | {
4866 | "contract_path": "src/EmptyBlocks.sol",
4867 | "line_no": 73,
4868 | "src": "1068:30",
4869 | "src_char": "1068:30"
4870 | },
4871 | {
4872 | "contract_path": "src/EmptyBlocks.sol",
4873 | "line_no": 81,
4874 | "src": "1219:41",
4875 | "src_char": "1219:41"
4876 | },
4877 | {
4878 | "contract_path": "src/FunctionSignatureCollision.sol",
4879 | "line_no": 7,
4880 | "src": "166:8",
4881 | "src_char": "166:8"
4882 | },
4883 | {
4884 | "contract_path": "src/FunctionSignatureCollision.sol",
4885 | "line_no": 13,
4886 | "src": "231:22",
4887 | "src_char": "231:22"
4888 | },
4889 | {
4890 | "contract_path": "src/OnceModifierExample.sol",
4891 | "line_no": 10,
4892 | "src": "147:7",
4893 | "src_char": "147:7"
4894 | },
4895 | {
4896 | "contract_path": "src/OutOfOrderRetryable.sol",
4897 | "line_no": 193,
4898 | "src": "5775:13",
4899 | "src_char": "5775:13"
4900 | },
4901 | {
4902 | "contract_path": "src/SendEtherNoChecks.sol",
4903 | "line_no": 53,
4904 | "src": "1060:5",
4905 | "src_char": "1060:5"
4906 | },
4907 | {
4908 | "contract_path": "src/SendEtherNoChecks.sol",
4909 | "line_no": 77,
4910 | "src": "1405:5",
4911 | "src_char": "1405:5"
4912 | },
4913 | {
4914 | "contract_path": "src/SendEtherNoChecks.sol",
4915 | "line_no": 99,
4916 | "src": "1795:5",
4917 | "src_char": "1795:5"
4918 | },
4919 | {
4920 | "contract_path": "src/TautologyOrContradiction.sol",
4921 | "line_no": 9,
4922 | "src": "161:229",
4923 | "src_char": "161:229"
4924 | },
4925 | {
4926 | "contract_path": "src/UncheckedSend.sol",
4927 | "line_no": 27,
4928 | "src": "915:65",
4929 | "src_char": "915:65"
4930 | },
4931 | {
4932 | "contract_path": "src/UnprotectedInitialize.sol",
4933 | "line_no": 43,
4934 | "src": "1071:38",
4935 | "src_char": "1071:38"
4936 | },
4937 | {
4938 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
4939 | "line_no": 11,
4940 | "src": "367:17",
4941 | "src_char": "367:17"
4942 | },
4943 | {
4944 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
4945 | "line_no": 30,
4946 | "src": "852:25",
4947 | "src_char": "852:25"
4948 | },
4949 | {
4950 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
4951 | "line_no": 38,
4952 | "src": "1080:16",
4953 | "src_char": "1080:16"
4954 | },
4955 | {
4956 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
4957 | "line_no": 61,
4958 | "src": "1840:17",
4959 | "src_char": "1840:17"
4960 | },
4961 | {
4962 | "contract_path": "src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol",
4963 | "line_no": 85,
4964 | "src": "2380:25",
4965 | "src_char": "2380:25"
4966 | },
4967 | {
4968 | "contract_path": "src/parent_chain/ParentChainContract.sol",
4969 | "line_no": 11,
4970 | "src": "355:9",
4971 | "src_char": "355:9"
4972 | },
4973 | {
4974 | "contract_path": "src/parent_chain/ParentChainContract.sol",
4975 | "line_no": 32,
4976 | "src": "806:23",
4977 | "src_char": "806:23"
4978 | },
4979 | {
4980 | "contract_path": "src/parent_chain/ParentChainContract.sol",
4981 | "line_no": 40,
4982 | "src": "946:8",
4983 | "src_char": "946:8"
4984 | },
4985 | {
4986 | "contract_path": "src/parent_chain/ParentChainContract.sol",
4987 | "line_no": 44,
4988 | "src": "1011:23",
4989 | "src_char": "1011:23"
4990 | },
4991 | {
4992 | "contract_path": "src/router/ExternalCalls.sol",
4993 | "line_no": 13,
4994 | "src": "210:3",
4995 | "src_char": "210:3"
4996 | },
4997 | {
4998 | "contract_path": "src/router/ExternalCalls.sol",
4999 | "line_no": 17,
5000 | "src": "288:3",
5001 | "src_char": "288:3"
5002 | },
5003 | {
5004 | "contract_path": "src/router/InternalCalls.sol",
5005 | "line_no": 8,
5006 | "src": "156:5",
5007 | "src_char": "156:5"
5008 | },
5009 | {
5010 | "contract_path": "src/router/InternalCalls.sol",
5011 | "line_no": 23,
5012 | "src": "389:5",
5013 | "src_char": "389:5"
5014 | },
5015 | {
5016 | "contract_path": "src/router/InternalCalls.sol",
5017 | "line_no": 38,
5018 | "src": "629:5",
5019 | "src_char": "629:5"
5020 | },
5021 | {
5022 | "contract_path": "src/router/InternalCalls.sol",
5023 | "line_no": 40,
5024 | "src": "672:1",
5025 | "src_char": "672:1"
5026 | },
5027 | {
5028 | "contract_path": "src/router/InternalCalls.sol",
5029 | "line_no": 44,
5030 | "src": "758:1",
5031 | "src_char": "758:1"
5032 | },
5033 | {
5034 | "contract_path": "src/router/InternalCalls.sol",
5035 | "line_no": 54,
5036 | "src": "966:4",
5037 | "src_char": "966:4"
5038 | },
5039 | {
5040 | "contract_path": "src/router/InternalCalls.sol",
5041 | "line_no": 84,
5042 | "src": "1544:4",
5043 | "src_char": "1544:4"
5044 | },
5045 | {
5046 | "contract_path": "src/router/InternalCalls.sol",
5047 | "line_no": 96,
5048 | "src": "1780:4",
5049 | "src_char": "1780:4"
5050 | },
5051 | {
5052 | "contract_path": "src/router/InternalCalls.sol",
5053 | "line_no": 98,
5054 | "src": "1820:4",
5055 | "src_char": "1820:4"
5056 | },
5057 | {
5058 | "contract_path": "src/router/InternalCalls.sol",
5059 | "line_no": 111,
5060 | "src": "2140:4",
5061 | "src_char": "2140:4"
5062 | },
5063 | {
5064 | "contract_path": "src/router/InternalCalls.sol",
5065 | "line_no": 113,
5066 | "src": "2182:4",
5067 | "src_char": "2182:4"
5068 | },
5069 | {
5070 | "contract_path": "src/router/InternalCalls.sol",
5071 | "line_no": 136,
5072 | "src": "2623:4",
5073 | "src_char": "2623:4"
5074 | },
5075 | {
5076 | "contract_path": "src/router/InternalCalls.sol",
5077 | "line_no": 142,
5078 | "src": "2696:1",
5079 | "src_char": "2696:1"
5080 | },
5081 | {
5082 | "contract_path": "src/router/InternalCalls.sol",
5083 | "line_no": 167,
5084 | "src": "3123:4",
5085 | "src_char": "3123:4"
5086 | },
5087 | {
5088 | "contract_path": "src/router/InternalCalls.sol",
5089 | "line_no": 175,
5090 | "src": "3244:4",
5091 | "src_char": "3244:4"
5092 | },
5093 | {
5094 | "contract_path": "src/router/ModifierCalls.sol",
5095 | "line_no": 7,
5096 | "src": "137:4",
5097 | "src_char": "137:4"
5098 | },
5099 | {
5100 | "contract_path": "src/router/ModifierCalls.sol",
5101 | "line_no": 22,
5102 | "src": "304:4",
5103 | "src_char": "304:4"
5104 | },
5105 | {
5106 | "contract_path": "src/router/ModifierCalls.sol",
5107 | "line_no": 46,
5108 | "src": "597:4",
5109 | "src_char": "597:4"
5110 | },
5111 | {
5112 | "contract_path": "src/router/VarOverridesFunction.sol",
5113 | "line_no": 5,
5114 | "src": "87:5",
5115 | "src_char": "87:5"
5116 | }
5117 | ]
5118 | },
5119 | {
5120 | "title": "Large Numeric Literal",
5121 | "description": "Large literal values multiples of 10000 can be replaced with scientific notation.Use `e` notation, for example: `1e18`, instead of its full numeric value.",
5122 | "detector_name": "large-numeric-literal",
5123 | "instances": [
5124 | {
5125 | "contract_path": "src/HugeConstants.sol",
5126 | "line_no": 6,
5127 | "src": "182:24",
5128 | "src_char": "182:24"
5129 | },
5130 | {
5131 | "contract_path": "src/HugeConstants.sol",
5132 | "line_no": 7,
5133 | "src": "252:23",
5134 | "src_char": "252:23"
5135 | },
5136 | {
5137 | "contract_path": "src/HugeConstants.sol",
5138 | "line_no": 8,
5139 | "src": "321:22",
5140 | "src_char": "321:22"
5141 | },
5142 | {
5143 | "contract_path": "src/HugeConstants.sol",
5144 | "line_no": 9,
5145 | "src": "389:21",
5146 | "src_char": "389:21"
5147 | },
5148 | {
5149 | "contract_path": "src/HugeConstants.sol",
5150 | "line_no": 10,
5151 | "src": "456:20",
5152 | "src_char": "456:20"
5153 | },
5154 | {
5155 | "contract_path": "src/HugeConstants.sol",
5156 | "line_no": 11,
5157 | "src": "522:19",
5158 | "src_char": "522:19"
5159 | },
5160 | {
5161 | "contract_path": "src/HugeConstants.sol",
5162 | "line_no": 12,
5163 | "src": "587:18",
5164 | "src_char": "587:18"
5165 | },
5166 | {
5167 | "contract_path": "src/HugeConstants.sol",
5168 | "line_no": 13,
5169 | "src": "651:17",
5170 | "src_char": "651:17"
5171 | },
5172 | {
5173 | "contract_path": "src/HugeConstants.sol",
5174 | "line_no": 14,
5175 | "src": "714:16",
5176 | "src_char": "714:16"
5177 | },
5178 | {
5179 | "contract_path": "src/HugeConstants.sol",
5180 | "line_no": 15,
5181 | "src": "777:15",
5182 | "src_char": "777:15"
5183 | },
5184 | {
5185 | "contract_path": "src/HugeConstants.sol",
5186 | "line_no": 16,
5187 | "src": "839:14",
5188 | "src_char": "839:14"
5189 | },
5190 | {
5191 | "contract_path": "src/HugeConstants.sol",
5192 | "line_no": 17,
5193 | "src": "900:13",
5194 | "src_char": "900:13"
5195 | },
5196 | {
5197 | "contract_path": "src/HugeConstants.sol",
5198 | "line_no": 18,
5199 | "src": "960:12",
5200 | "src_char": "960:12"
5201 | },
5202 | {
5203 | "contract_path": "src/HugeConstants.sol",
5204 | "line_no": 19,
5205 | "src": "1019:11",
5206 | "src_char": "1019:11"
5207 | },
5208 | {
5209 | "contract_path": "src/HugeConstants.sol",
5210 | "line_no": 20,
5211 | "src": "1077:10",
5212 | "src_char": "1077:10"
5213 | },
5214 | {
5215 | "contract_path": "src/HugeConstants.sol",
5216 | "line_no": 21,
5217 | "src": "1134:9",
5218 | "src_char": "1134:9"
5219 | },
5220 | {
5221 | "contract_path": "src/HugeConstants.sol",
5222 | "line_no": 22,
5223 | "src": "1190:8",
5224 | "src_char": "1190:8"
5225 | },
5226 | {
5227 | "contract_path": "src/HugeConstants.sol",
5228 | "line_no": 23,
5229 | "src": "1245:7",
5230 | "src_char": "1245:7"
5231 | },
5232 | {
5233 | "contract_path": "src/HugeConstants.sol",
5234 | "line_no": 24,
5235 | "src": "1299:6",
5236 | "src_char": "1299:6"
5237 | },
5238 | {
5239 | "contract_path": "src/HugeConstants.sol",
5240 | "line_no": 25,
5241 | "src": "1352:5",
5242 | "src_char": "1352:5"
5243 | },
5244 | {
5245 | "contract_path": "src/HugeConstants.sol",
5246 | "line_no": 31,
5247 | "src": "1585:29",
5248 | "src_char": "1585:29"
5249 | },
5250 | {
5251 | "contract_path": "src/HugeConstants.sol",
5252 | "line_no": 32,
5253 | "src": "1673:6",
5254 | "src_char": "1673:6"
5255 | },
5256 | {
5257 | "contract_path": "src/IncorrectERC20.sol",
5258 | "line_no": 8,
5259 | "src": "225:7",
5260 | "src_char": "225:7"
5261 | },
5262 | {
5263 | "contract_path": "src/IncorrectERC20.sol",
5264 | "line_no": 51,
5265 | "src": "1550:7",
5266 | "src_char": "1550:7"
5267 | },
5268 | {
5269 | "contract_path": "src/Trump.sol",
5270 | "line_no": 145,
5271 | "src": "4412:8",
5272 | "src_char": "4412:8"
5273 | },
5274 | {
5275 | "contract_path": "src/Trump.sol",
5276 | "line_no": 148,
5277 | "src": "4579:6",
5278 | "src_char": "4579:6"
5279 | },
5280 | {
5281 | "contract_path": "src/Trump.sol",
5282 | "line_no": 151,
5283 | "src": "4756:6",
5284 | "src_char": "4756:6"
5285 | }
5286 | ]
5287 | },
5288 | {
5289 | "title": "Internal Function Used Only Once",
5290 | "description": "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.",
5291 | "detector_name": "internal-function-used-once",
5292 | "instances": [
5293 | {
5294 | "contract_path": "src/CallGraphTests.sol",
5295 | "line_no": 6,
5296 | "src": "89:17",
5297 | "src_char": "89:17"
5298 | },
5299 | {
5300 | "contract_path": "src/CallGraphTests.sol",
5301 | "line_no": 25,
5302 | "src": "398:17",
5303 | "src_char": "398:17"
5304 | },
5305 | {
5306 | "contract_path": "src/CallGraphTests.sol",
5307 | "line_no": 47,
5308 | "src": "803:17",
5309 | "src_char": "803:17"
5310 | },
5311 | {
5312 | "contract_path": "src/CallGraphTests.sol",
5313 | "line_no": 64,
5314 | "src": "1206:18",
5315 | "src_char": "1206:18"
5316 | },
5317 | {
5318 | "contract_path": "src/ConstantFuncsAssembly.sol",
5319 | "line_no": 26,
5320 | "src": "651:232",
5321 | "src_char": "651:232"
5322 | },
5323 | {
5324 | "contract_path": "src/InternalFunctions.sol",
5325 | "line_no": 28,
5326 | "src": "693:12",
5327 | "src_char": "693:12"
5328 | },
5329 | {
5330 | "contract_path": "src/MsgValueInLoop.sol",
5331 | "line_no": 43,
5332 | "src": "1103:8",
5333 | "src_char": "1103:8"
5334 | },
5335 | {
5336 | "contract_path": "src/MsgValueInLoop.sol",
5337 | "line_no": 60,
5338 | "src": "1529:8",
5339 | "src_char": "1529:8"
5340 | },
5341 | {
5342 | "contract_path": "src/MsgValueInLoop.sol",
5343 | "line_no": 77,
5344 | "src": "1962:8",
5345 | "src_char": "1962:8"
5346 | },
5347 | {
5348 | "contract_path": "src/SendEtherNoChecks.sol",
5349 | "line_no": 9,
5350 | "src": "132:20",
5351 | "src_char": "132:20"
5352 | },
5353 | {
5354 | "contract_path": "src/SendEtherNoChecks.sol",
5355 | "line_no": 26,
5356 | "src": "481:5",
5357 | "src_char": "481:5"
5358 | },
5359 | {
5360 | "contract_path": "src/SendEtherNoChecks.sol",
5361 | "line_no": 40,
5362 | "src": "784:20",
5363 | "src_char": "784:20"
5364 | },
5365 | {
5366 | "contract_path": "src/SendEtherNoChecks.sol",
5367 | "line_no": 66,
5368 | "src": "1209:15",
5369 | "src_char": "1209:15"
5370 | },
5371 | {
5372 | "contract_path": "src/SendEtherNoChecks.sol",
5373 | "line_no": 88,
5374 | "src": "1551:11",
5375 | "src_char": "1551:11"
5376 | },
5377 | {
5378 | "contract_path": "src/StateVariableCouldBeDeclaredImmutable.sol",
5379 | "line_no": 26,
5380 | "src": "706:14",
5381 | "src_char": "706:14"
5382 | },
5383 | {
5384 | "contract_path": "src/StorageParameters.sol",
5385 | "line_no": 17,
5386 | "src": "388:11",
5387 | "src_char": "388:11"
5388 | },
5389 | {
5390 | "contract_path": "src/Trump.sol",
5391 | "line_no": 46,
5392 | "src": "1403:3",
5393 | "src_char": "1403:3"
5394 | },
5395 | {
5396 | "contract_path": "src/Trump.sol",
5397 | "line_no": 65,
5398 | "src": "1976:3",
5399 | "src_char": "1976:3"
5400 | },
5401 | {
5402 | "contract_path": "src/UncheckedSend.sol",
5403 | "line_no": 27,
5404 | "src": "915:65",
5405 | "src_char": "915:65"
5406 | },
5407 | {
5408 | "contract_path": "src/router/InternalCalls.sol",
5409 | "line_no": 18,
5410 | "src": "300:5",
5411 | "src_char": "300:5"
5412 | },
5413 | {
5414 | "contract_path": "src/router/InternalCalls.sol",
5415 | "line_no": 23,
5416 | "src": "389:5",
5417 | "src_char": "389:5"
5418 | },
5419 | {
5420 | "contract_path": "src/router/InternalCalls.sol",
5421 | "line_no": 38,
5422 | "src": "629:5",
5423 | "src_char": "629:5"
5424 | }
5425 | ]
5426 | },
5427 | {
5428 | "title": "Contract has TODO Comments",
5429 | "description": "Contract contains comments with TODOS. Consider implementing or removing them.",
5430 | "detector_name": "todo",
5431 | "instances": [
5432 | {
5433 | "contract_path": "src/ContractWithTodo.sol",
5434 | "line_no": 4,
5435 | "src": "66:8",
5436 | "src_char": "66:8"
5437 | },
5438 | {
5439 | "contract_path": "src/Counter.sol",
5440 | "line_no": 4,
5441 | "src": "74:7",
5442 | "src_char": "74:7"
5443 | },
5444 | {
5445 | "contract_path": "src/TautologicalCompare.sol",
5446 | "line_no": 4,
5447 | "src": "66:19",
5448 | "src_char": "66:19"
5449 | }
5450 | ]
5451 | },
5452 | {
5453 | "title": "Inconsistent uint256/uint (or) int256/int types",
5454 | "description": "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.",
5455 | "detector_name": "inconsistent-type-names",
5456 | "instances": [
5457 | {
5458 | "contract_path": "src/Casting.sol",
5459 | "line_no": 38,
5460 | "src": "966:14",
5461 | "src_char": "966:14"
5462 | },
5463 | {
5464 | "contract_path": "src/Casting.sol",
5465 | "line_no": 76,
5466 | "src": "2148:13",
5467 | "src_char": "2148:13"
5468 | },
5469 | {
5470 | "contract_path": "src/InconsistentUints.sol",
5471 | "line_no": 5,
5472 | "src": "122:12",
5473 | "src_char": "122:12"
5474 | },
5475 | {
5476 | "contract_path": "src/InconsistentUints.sol",
5477 | "line_no": 7,
5478 | "src": "197:11",
5479 | "src_char": "197:11"
5480 | },
5481 | {
5482 | "contract_path": "src/InconsistentUints.sol",
5483 | "line_no": 11,
5484 | "src": "289:10",
5485 | "src_char": "289:10"
5486 | },
5487 | {
5488 | "contract_path": "src/InconsistentUints.sol",
5489 | "line_no": 12,
5490 | "src": "340:9",
5491 | "src_char": "340:9"
5492 | },
5493 | {
5494 | "contract_path": "src/InconsistentUints.sol",
5495 | "line_no": 15,
5496 | "src": "383:9",
5497 | "src_char": "383:9"
5498 | },
5499 | {
5500 | "contract_path": "src/InconsistentUints.sol",
5501 | "line_no": 16,
5502 | "src": "434:10",
5503 | "src_char": "434:10"
5504 | },
5505 | {
5506 | "contract_path": "src/InconsistentUints.sol",
5507 | "line_no": 19,
5508 | "src": "528:12",
5509 | "src_char": "528:12"
5510 | },
5511 | {
5512 | "contract_path": "src/StateVariablesChangesWithoutEvents.sol",
5513 | "line_no": 115,
5514 | "src": "2967:4",
5515 | "src_char": "2967:4"
5516 | },
5517 | {
5518 | "contract_path": "src/TautologicalCompare.sol",
5519 | "line_no": 11,
5520 | "src": "351:1",
5521 | "src_char": "351:1"
5522 | },
5523 | {
5524 | "contract_path": "src/TautologyOrContradiction.sol",
5525 | "line_no": 6,
5526 | "src": "133:6",
5527 | "src_char": "133:6"
5528 | },
5529 | {
5530 | "contract_path": "src/Trump.sol",
5531 | "line_no": 159,
5532 | "src": "5000:12",
5533 | "src_char": "5000:12"
5534 | },
5535 | {
5536 | "contract_path": "src/UninitializedLocalVariables.sol",
5537 | "line_no": 9,
5538 | "src": "211:17",
5539 | "src_char": "211:17"
5540 | },
5541 | {
5542 | "contract_path": "src/UninitializedLocalVariables.sol",
5543 | "line_no": 15,
5544 | "src": "434:22",
5545 | "src_char": "434:22"
5546 | },
5547 | {
5548 | "contract_path": "src/UninitializedLocalVariables.sol",
5549 | "line_no": 25,
5550 | "src": "817:15",
5551 | "src_char": "817:15"
5552 | },
5553 | {
5554 | "contract_path": "src/UninitializedLocalVariables.sol",
5555 | "line_no": 31,
5556 | "src": "1109:20",
5557 | "src_char": "1109:20"
5558 | },
5559 | {
5560 | "contract_path": "src/UninitializedLocalVariables.sol",
5561 | "line_no": 43,
5562 | "src": "1639:11",
5563 | "src_char": "1639:11"
5564 | },
5565 | {
5566 | "contract_path": "src/UninitializedLocalVariables.sol",
5567 | "line_no": 49,
5568 | "src": "1826:16",
5569 | "src_char": "1826:16"
5570 | },
5571 | {
5572 | "contract_path": "src/eth2/DepositContract.sol",
5573 | "line_no": 59,
5574 | "src": "4611:27",
5575 | "src_char": "3123:27"
5576 | },
5577 | {
5578 | "contract_path": "src/eth2/DepositContract.sol",
5579 | "line_no": 61,
5580 | "src": "4732:17",
5581 | "src_char": "3244:17"
5582 | },
5583 | {
5584 | "contract_path": "src/eth2/DepositContract.sol",
5585 | "line_no": 70,
5586 | "src": "5020:6",
5587 | "src_char": "3532:6"
5588 | },
5589 | {
5590 | "contract_path": "src/eth2/DepositContract.sol",
5591 | "line_no": 76,
5592 | "src": "5307:4",
5593 | "src_char": "3819:4"
5594 | },
5595 | {
5596 | "contract_path": "src/eth2/DepositContract.sol",
5597 | "line_no": 77,
5598 | "src": "5347:6",
5599 | "src_char": "3859:6"
5600 | },
5601 | {
5602 | "contract_path": "src/eth2/DepositContract.sol",
5603 | "line_no": 103,
5604 | "src": "6636:14",
5605 | "src_char": "5148:14"
5606 | },
5607 | {
5608 | "contract_path": "src/eth2/DepositContract.sol",
5609 | "line_no": 133,
5610 | "src": "8101:4",
5611 | "src_char": "6613:4"
5612 | },
5613 | {
5614 | "contract_path": "src/eth2/DepositContract.sol",
5615 | "line_no": 134,
5616 | "src": "8141:6",
5617 | "src_char": "6653:6"
5618 | },
5619 | {
5620 | "contract_path": "src/nested_mappings/LaterVersion.sol",
5621 | "line_no": 8,
5622 | "src": "184:5",
5623 | "src_char": "184:5"
5624 | },
5625 | {
5626 | "contract_path": "src/nested_mappings/NestedMappings.sol",
5627 | "line_no": 8,
5628 | "src": "168:10",
5629 | "src_char": "168:10"
5630 | }
5631 | ]
5632 | },
5633 | {
5634 | "title": "Unused Error",
5635 | "description": "Consider using or removing the unused error.",
5636 | "detector_name": "unused-error",
5637 | "instances": [
5638 | {
5639 | "contract_path": "src/UnusedError.sol",
5640 | "line_no": 5,
5641 | "src": "84:27",
5642 | "src_char": "84:27"
5643 | },
5644 | {
5645 | "contract_path": "src/UnusedError.sol",
5646 | "line_no": 14,
5647 | "src": "286:36",
5648 | "src_char": "286:36"
5649 | },
5650 | {
5651 | "contract_path": "src/WrongOrderOfLayout.sol",
5652 | "line_no": 13,
5653 | "src": "274:21",
5654 | "src_char": "274:21"
5655 | }
5656 | ]
5657 | },
5658 | {
5659 | "title": "Loop Contains `require`/`revert`",
5660 | "description": "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",
5661 | "detector_name": "require-revert-in-loop",
5662 | "instances": [
5663 | {
5664 | "contract_path": "src/RevertsAndRequriesInLoops.sol",
5665 | "line_no": 10,
5666 | "src": "263:93",
5667 | "src_char": "263:93"
5668 | },
5669 | {
5670 | "contract_path": "src/RevertsAndRequriesInLoops.sol",
5671 | "line_no": 17,
5672 | "src": "452:114",
5673 | "src_char": "452:114"
5674 | }
5675 | ]
5676 | },
5677 | {
5678 | "title": "Incorrect Order of Division and Multiplication",
5679 | "description": "Division operations followed directly by multiplication operations can lead to precision loss due to the way integer arithmetic is handled in Solidity./\n Consider Multiplication before Division.",
5680 | "detector_name": "division-before-multiplication",
5681 | "instances": [
5682 | {
5683 | "contract_path": "src/DivisionBeforeMultiplication.sol",
5684 | "line_no": 8,
5685 | "src": "218:5",
5686 | "src_char": "218:5"
5687 | },
5688 | {
5689 | "contract_path": "src/DivisionBeforeMultiplication.sol",
5690 | "line_no": 12,
5691 | "src": "330:5",
5692 | "src_char": "330:5"
5693 | },
5694 | {
5695 | "contract_path": "src/DivisionBeforeMultiplication.sol",
5696 | "line_no": 16,
5697 | "src": "432:5",
5698 | "src_char": "432:5"
5699 | },
5700 | {
5701 | "contract_path": "src/DivisionBeforeMultiplication.sol",
5702 | "line_no": 20,
5703 | "src": "541:5",
5704 | "src_char": "541:5"
5705 | }
5706 | ]
5707 | },
5708 | {
5709 | "title": "Redundant Statement",
5710 | "description": "Remove the redundant statement.",
5711 | "detector_name": "redundant-statement",
5712 | "instances": [
5713 | {
5714 | "contract_path": "src/RedundantStatements.sol",
5715 | "line_no": 6,
5716 | "src": "131:4",
5717 | "src_char": "131:4"
5718 | },
5719 | {
5720 | "contract_path": "src/RedundantStatements.sol",
5721 | "line_no": 7,
5722 | "src": "169:4",
5723 | "src_char": "169:4"
5724 | },
5725 | {
5726 | "contract_path": "src/RedundantStatements.sol",
5727 | "line_no": 8,
5728 | "src": "207:27",
5729 | "src_char": "207:27"
5730 | },
5731 | {
5732 | "contract_path": "src/RedundantStatements.sol",
5733 | "line_no": 12,
5734 | "src": "309:4",
5735 | "src_char": "309:4"
5736 | },
5737 | {
5738 | "contract_path": "src/RedundantStatements.sol",
5739 | "line_no": 13,
5740 | "src": "347:6",
5741 | "src_char": "347:6"
5742 | },
5743 | {
5744 | "contract_path": "src/RedundantStatements.sol",
5745 | "line_no": 14,
5746 | "src": "377:4",
5747 | "src_char": "377:4"
5748 | }
5749 | ]
5750 | },
5751 | {
5752 | "title": "State Variable is Read as External",
5753 | "description": "The contract reads it's own state variable using `this` which adds an unnecessary STATICCALL. Consider removing `this` to access the variable from storage.",
5754 | "detector_name": "state-variable-read-external",
5755 | "instances": [
5756 | {
5757 | "contract_path": "src/PublicVariableReadInExternalContext.sol",
5758 | "line_no": 12,
5759 | "src": "355:14",
5760 | "src_char": "355:14"
5761 | },
5762 | {
5763 | "contract_path": "src/PublicVariableReadInExternalContext.sol",
5764 | "line_no": 16,
5765 | "src": "457:16",
5766 | "src_char": "457:16"
5767 | },
5768 | {
5769 | "contract_path": "src/PublicVariableReadInExternalContext.sol",
5770 | "line_no": 20,
5771 | "src": "553:12",
5772 | "src_char": "553:12"
5773 | },
5774 | {
5775 | "contract_path": "src/PublicVariableReadInExternalContext.sol",
5776 | "line_no": 42,
5777 | "src": "1175:14",
5778 | "src_char": "1175:14"
5779 | }
5780 | ]
5781 | },
5782 | {
5783 | "title": "Unused State Variable",
5784 | "description": "State variable appears to be unused. No analysis has been performed to see if any inline assembly references it. Consider removing this unused variable.",
5785 | "detector_name": "unused-state-variable",
5786 | "instances": [
5787 | {
5788 | "contract_path": "src/AssemblyExample.sol",
5789 | "line_no": 5,
5790 | "src": "97:1",
5791 | "src_char": "97:1"
5792 | },
5793 | {
5794 | "contract_path": "src/InconsistentUints.sol",
5795 | "line_no": 16,
5796 | "src": "434:10",
5797 | "src_char": "434:10"
5798 | },
5799 | {
5800 | "contract_path": "src/LocalVariableShadow.sol",
5801 | "line_no": 7,
5802 | "src": "129:5",
5803 | "src_char": "129:5"
5804 | },
5805 | {
5806 | "contract_path": "src/StateVariables.sol",
5807 | "line_no": 8,
5808 | "src": "199:19",
5809 | "src_char": "199:19"
5810 | },
5811 | {
5812 | "contract_path": "src/StateVariables.sol",
5813 | "line_no": 9,
5814 | "src": "241:20",
5815 | "src_char": "241:20"
5816 | },
5817 | {
5818 | "contract_path": "src/StateVariables.sol",
5819 | "line_no": 13,
5820 | "src": "383:27",
5821 | "src_char": "383:27"
5822 | },
5823 | {
5824 | "contract_path": "src/StateVariables.sol",
5825 | "line_no": 14,
5826 | "src": "437:28",
5827 | "src_char": "437:28"
5828 | },
5829 | {
5830 | "contract_path": "src/StateVariables.sol",
5831 | "line_no": 28,
5832 | "src": "1056:16",
5833 | "src_char": "1056:16"
5834 | },
5835 | {
5836 | "contract_path": "src/StateVariables.sol",
5837 | "line_no": 29,
5838 | "src": "1108:17",
5839 | "src_char": "1108:17"
5840 | },
5841 | {
5842 | "contract_path": "src/TautologyOrContradiction.sol",
5843 | "line_no": 6,
5844 | "src": "133:6",
5845 | "src_char": "133:6"
5846 | },
5847 | {
5848 | "contract_path": "src/TautologyOrContradiction.sol",
5849 | "line_no": 7,
5850 | "src": "145:9",
5851 | "src_char": "145:9"
5852 | },
5853 | {
5854 | "contract_path": "src/UninitializedLocalVariables.sol",
5855 | "line_no": 5,
5856 | "src": "93:12",
5857 | "src_char": "93:12"
5858 | },
5859 | {
5860 | "contract_path": "src/UninitializedStateVariable.sol",
5861 | "line_no": 13,
5862 | "src": "503:3",
5863 | "src_char": "503:3"
5864 | },
5865 | {
5866 | "contract_path": "src/UnusedStateVariables.sol",
5867 | "line_no": 6,
5868 | "src": "147:13",
5869 | "src_char": "147:13"
5870 | },
5871 | {
5872 | "contract_path": "src/UnusedStateVariables.sol",
5873 | "line_no": 7,
5874 | "src": "183:13",
5875 | "src_char": "183:13"
5876 | },
5877 | {
5878 | "contract_path": "src/UnusedStateVariables.sol",
5879 | "line_no": 8,
5880 | "src": "215:10",
5881 | "src_char": "215:10"
5882 | },
5883 | {
5884 | "contract_path": "src/UnusedStateVariables.sol",
5885 | "line_no": 9,
5886 | "src": "246:12",
5887 | "src_char": "246:12"
5888 | },
5889 | {
5890 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
5891 | "line_no": 14,
5892 | "src": "151:3",
5893 | "src_char": "151:3"
5894 | },
5895 | {
5896 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
5897 | "line_no": 16,
5898 | "src": "190:3",
5899 | "src_char": "190:3"
5900 | },
5901 | {
5902 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
5903 | "line_no": 19,
5904 | "src": "261:3",
5905 | "src_char": "261:3"
5906 | },
5907 | {
5908 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
5909 | "line_no": 22,
5910 | "src": "367:3",
5911 | "src_char": "367:3"
5912 | },
5913 | {
5914 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
5915 | "line_no": 29,
5916 | "src": "477:3",
5917 | "src_char": "477:3"
5918 | },
5919 | {
5920 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
5921 | "line_no": 14,
5922 | "src": "160:3",
5923 | "src_char": "160:3"
5924 | },
5925 | {
5926 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
5927 | "line_no": 16,
5928 | "src": "199:3",
5929 | "src_char": "199:3"
5930 | },
5931 | {
5932 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
5933 | "line_no": 19,
5934 | "src": "270:3",
5935 | "src_char": "270:3"
5936 | },
5937 | {
5938 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
5939 | "line_no": 22,
5940 | "src": "376:3",
5941 | "src_char": "376:3"
5942 | },
5943 | {
5944 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
5945 | "line_no": 29,
5946 | "src": "486:3",
5947 | "src_char": "486:3"
5948 | }
5949 | ]
5950 | },
5951 | {
5952 | "title": "Constant Function Contains Assembly",
5953 | "description": "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",
5954 | "detector_name": "constant-function-contains-assembly",
5955 | "instances": [
5956 | {
5957 | "contract_path": "src/ConstantFuncsAssembly.sol",
5958 | "line_no": 9,
5959 | "src": "182:175",
5960 | "src_char": "182:175"
5961 | },
5962 | {
5963 | "contract_path": "src/ConstantFuncsAssembly.sol",
5964 | "line_no": 17,
5965 | "src": "408:237",
5966 | "src_char": "408:237"
5967 | },
5968 | {
5969 | "contract_path": "src/ConstantFuncsAssembly.sol",
5970 | "line_no": 36,
5971 | "src": "934:98",
5972 | "src_char": "934:98"
5973 | }
5974 | ]
5975 | },
5976 | {
5977 | "title": "Boolean equality is not required",
5978 | "description": "If `x` is a boolean, use `if(x)` and `if(!x)` instead of `if(x == true)` or `if(x == false)`.",
5979 | "detector_name": "boolean-equality",
5980 | "instances": [
5981 | {
5982 | "contract_path": "src/BooleanEquality.sol",
5983 | "line_no": 5,
5984 | "src": "133:14",
5985 | "src_char": "133:14"
5986 | },
5987 | {
5988 | "contract_path": "src/BooleanEquality.sol",
5989 | "line_no": 12,
5990 | "src": "292:15",
5991 | "src_char": "292:15"
5992 | },
5993 | {
5994 | "contract_path": "src/BooleanEquality.sol",
5995 | "line_no": 19,
5996 | "src": "454:15",
5997 | "src_char": "454:15"
5998 | },
5999 | {
6000 | "contract_path": "src/BooleanEquality.sol",
6001 | "line_no": 26,
6002 | "src": "614:16",
6003 | "src_char": "614:16"
6004 | }
6005 | ]
6006 | },
6007 | {
6008 | "title": "Local Variable Shadows State Variable",
6009 | "description": "Rename the local variable that shadows another state variable.",
6010 | "detector_name": "local-variable-shadowing",
6011 | "instances": [
6012 | {
6013 | "contract_path": "src/AdminContract.sol",
6014 | "line_no": 10,
6015 | "src": "359:6",
6016 | "src_char": "359:6"
6017 | },
6018 | {
6019 | "contract_path": "src/FunctionInitializingState.sol",
6020 | "line_no": 41,
6021 | "src": "1253:1",
6022 | "src_char": "1253:1"
6023 | },
6024 | {
6025 | "contract_path": "src/FunctionInitializingState.sol",
6026 | "line_no": 46,
6027 | "src": "1392:1",
6028 | "src_char": "1392:1"
6029 | },
6030 | {
6031 | "contract_path": "src/LocalVariableShadow.sol",
6032 | "line_no": 10,
6033 | "src": "207:5",
6034 | "src_char": "207:5"
6035 | },
6036 | {
6037 | "contract_path": "src/LocalVariableShadow.sol",
6038 | "line_no": 17,
6039 | "src": "391:5",
6040 | "src_char": "391:5"
6041 | },
6042 | {
6043 | "contract_path": "src/LocalVariableShadow.sol",
6044 | "line_no": 31,
6045 | "src": "727:4",
6046 | "src_char": "727:4"
6047 | },
6048 | {
6049 | "contract_path": "src/OutOfOrderRetryable.sol",
6050 | "line_no": 144,
6051 | "src": "4121:17",
6052 | "src_char": "4121:17"
6053 | },
6054 | {
6055 | "contract_path": "src/OutOfOrderRetryable.sol",
6056 | "line_no": 147,
6057 | "src": "4236:8",
6058 | "src_char": "4236:8"
6059 | },
6060 | {
6061 | "contract_path": "src/OutOfOrderRetryable.sol",
6062 | "line_no": 148,
6063 | "src": "4262:12",
6064 | "src_char": "4262:12"
6065 | },
6066 | {
6067 | "contract_path": "src/parent_chain/ParentChainContract.sol",
6068 | "line_no": 28,
6069 | "src": "708:6",
6070 | "src_char": "708:6"
6071 | }
6072 | ]
6073 | },
6074 | {
6075 | "title": "Uninitialized Local Variable",
6076 | "description": "Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.",
6077 | "detector_name": "uninitialized-local-variable",
6078 | "instances": [
6079 | {
6080 | "contract_path": "src/ConstantFuncsAssembly.sol",
6081 | "line_no": 18,
6082 | "src": "478:14",
6083 | "src_char": "478:14"
6084 | },
6085 | {
6086 | "contract_path": "src/ConstantFuncsAssembly.sol",
6087 | "line_no": 27,
6088 | "src": "716:14",
6089 | "src_char": "716:14"
6090 | },
6091 | {
6092 | "contract_path": "src/StorageParameters.sol",
6093 | "line_no": 8,
6094 | "src": "184:11",
6095 | "src_char": "184:11"
6096 | },
6097 | {
6098 | "contract_path": "src/UninitializedLocalVariables.sol",
6099 | "line_no": 9,
6100 | "src": "211:17",
6101 | "src_char": "211:17"
6102 | },
6103 | {
6104 | "contract_path": "src/UninitializedLocalVariables.sol",
6105 | "line_no": 10,
6106 | "src": "243:17",
6107 | "src_char": "243:17"
6108 | },
6109 | {
6110 | "contract_path": "src/UninitializedLocalVariables.sol",
6111 | "line_no": 11,
6112 | "src": "278:20",
6113 | "src_char": "278:20"
6114 | },
6115 | {
6116 | "contract_path": "src/UninitializedLocalVariables.sol",
6117 | "line_no": 12,
6118 | "src": "312:16",
6119 | "src_char": "312:16"
6120 | },
6121 | {
6122 | "contract_path": "src/UninitializedLocalVariables.sol",
6123 | "line_no": 13,
6124 | "src": "346:20",
6125 | "src_char": "346:20"
6126 | },
6127 | {
6128 | "contract_path": "src/UninitializedLocalVariables.sol",
6129 | "line_no": 14,
6130 | "src": "390:19",
6131 | "src_char": "390:19"
6132 | },
6133 | {
6134 | "contract_path": "src/UninitializedLocalVariables.sol",
6135 | "line_no": 15,
6136 | "src": "434:22",
6137 | "src_char": "434:22"
6138 | },
6139 | {
6140 | "contract_path": "src/UninitializedLocalVariables.sol",
6141 | "line_no": 16,
6142 | "src": "481:22",
6143 | "src_char": "481:22"
6144 | },
6145 | {
6146 | "contract_path": "src/UninitializedLocalVariables.sol",
6147 | "line_no": 17,
6148 | "src": "531:25",
6149 | "src_char": "531:25"
6150 | },
6151 | {
6152 | "contract_path": "src/UninitializedLocalVariables.sol",
6153 | "line_no": 18,
6154 | "src": "580:21",
6155 | "src_char": "580:21"
6156 | },
6157 | {
6158 | "contract_path": "src/UninitializedLocalVariables.sol",
6159 | "line_no": 19,
6160 | "src": "629:25",
6161 | "src_char": "629:25"
6162 | },
6163 | {
6164 | "contract_path": "src/UninitializedLocalVariables.sol",
6165 | "line_no": 20,
6166 | "src": "681:24",
6167 | "src_char": "681:24"
6168 | }
6169 | ]
6170 | },
6171 | {
6172 | "title": "Return Bomb",
6173 | "description": "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.\n ",
6174 | "detector_name": "return-bomb",
6175 | "instances": [
6176 | {
6177 | "contract_path": "src/ReturnBomb.sol",
6178 | "line_no": 22,
6179 | "src": "591:115",
6180 | "src_char": "591:115"
6181 | }
6182 | ]
6183 | },
6184 | {
6185 | "title": "Function Used to Initialize State Variable",
6186 | "description": "Instead of using a function to initialize a state variable in its declaration; declare the state variable and initialize it in the constructor.",
6187 | "detector_name": "function-initializing-state",
6188 | "instances": [
6189 | {
6190 | "contract_path": "src/FunctionInitializingState.sol",
6191 | "line_no": 6,
6192 | "src": "122:1",
6193 | "src_char": "122:1"
6194 | },
6195 | {
6196 | "contract_path": "src/FunctionInitializingState.sol",
6197 | "line_no": 8,
6198 | "src": "213:1",
6199 | "src_char": "213:1"
6200 | },
6201 | {
6202 | "contract_path": "src/FunctionInitializingState.sol",
6203 | "line_no": 9,
6204 | "src": "281:1",
6205 | "src_char": "281:1"
6206 | }
6207 | ]
6208 | },
6209 | {
6210 | "title": "Dead Code",
6211 | "description": "Functions that are not used. Consider removing them.",
6212 | "detector_name": "dead-code",
6213 | "instances": [
6214 | {
6215 | "contract_path": "src/ArbitraryTransferFrom.sol",
6216 | "line_no": 18,
6217 | "src": "535:4",
6218 | "src_char": "535:4"
6219 | },
6220 | {
6221 | "contract_path": "src/ContractLocksEther.sol",
6222 | "line_no": 54,
6223 | "src": "1540:10",
6224 | "src_char": "1540:10"
6225 | },
6226 | {
6227 | "contract_path": "src/DeadCode.sol",
6228 | "line_no": 16,
6229 | "src": "362:22",
6230 | "src_char": "362:22"
6231 | },
6232 | {
6233 | "contract_path": "src/DeletionNestedMappingStructureContract.sol",
6234 | "line_no": 14,
6235 | "src": "258:6",
6236 | "src_char": "258:6"
6237 | },
6238 | {
6239 | "contract_path": "src/IncorrectShift.sol",
6240 | "line_no": 5,
6241 | "src": "100:8",
6242 | "src_char": "100:8"
6243 | },
6244 | {
6245 | "contract_path": "src/IncorrectShift.sol",
6246 | "line_no": 13,
6247 | "src": "292:9",
6248 | "src_char": "292:9"
6249 | },
6250 | {
6251 | "contract_path": "src/UncheckedReturn.sol",
6252 | "line_no": 12,
6253 | "src": "186:19",
6254 | "src_char": "186:19"
6255 | },
6256 | {
6257 | "contract_path": "src/UncheckedReturn.sol",
6258 | "line_no": 20,
6259 | "src": "362:21",
6260 | "src_char": "362:21"
6261 | },
6262 | {
6263 | "contract_path": "src/UncheckedReturn.sol",
6264 | "line_no": 25,
6265 | "src": "492:19",
6266 | "src_char": "492:19"
6267 | },
6268 | {
6269 | "contract_path": "src/UncheckedReturn.sol",
6270 | "line_no": 30,
6271 | "src": "644:21",
6272 | "src_char": "644:21"
6273 | },
6274 | {
6275 | "contract_path": "src/UncheckedReturn.sol",
6276 | "line_no": 35,
6277 | "src": "842:26",
6278 | "src_char": "842:26"
6279 | },
6280 | {
6281 | "contract_path": "src/UncheckedReturn.sol",
6282 | "line_no": 40,
6283 | "src": "1049:19",
6284 | "src_char": "1049:19"
6285 | }
6286 | ]
6287 | },
6288 | {
6289 | "title": "Storage Array Length not Cached",
6290 | "description": "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.",
6291 | "detector_name": "storage-array-length-not-cached",
6292 | "instances": [
6293 | {
6294 | "contract_path": "src/CacheArrayLength.sol",
6295 | "line_no": 12,
6296 | "src": "234:82",
6297 | "src_char": "234:82"
6298 | },
6299 | {
6300 | "contract_path": "src/CacheArrayLength.sol",
6301 | "line_no": 44,
6302 | "src": "1160:64",
6303 | "src_char": "1160:64"
6304 | },
6305 | {
6306 | "contract_path": "src/CacheArrayLength.sol",
6307 | "line_no": 50,
6308 | "src": "1325:183",
6309 | "src_char": "1325:183"
6310 | }
6311 | ]
6312 | },
6313 | {
6314 | "title": "State change in `assert()` statement",
6315 | "description": "An argument to `assert()` modifies the state. Use `require` for invariants modifying state.",
6316 | "detector_name": "assert-state-change",
6317 | "instances": [
6318 | {
6319 | "contract_path": "src/AssertStateChange.sol",
6320 | "line_no": 9,
6321 | "src": "154:23",
6322 | "src_char": "154:23"
6323 | }
6324 | ]
6325 | },
6326 | {
6327 | "title": "Costly operations inside loop",
6328 | "description": "Invoking `SSTORE` operations in loops may waste gas. Use a local variable to hold the loop computation result.",
6329 | "detector_name": "costly-loop",
6330 | "instances": [
6331 | {
6332 | "contract_path": "src/CacheArrayLength.sol",
6333 | "line_no": 25,
6334 | "src": "546:133",
6335 | "src_char": "546:133"
6336 | },
6337 | {
6338 | "contract_path": "src/CacheArrayLength.sol",
6339 | "line_no": 35,
6340 | "src": "928:155",
6341 | "src_char": "928:155"
6342 | },
6343 | {
6344 | "contract_path": "src/CostlyOperationsInsideLoops.sol",
6345 | "line_no": 10,
6346 | "src": "214:79",
6347 | "src_char": "214:79"
6348 | },
6349 | {
6350 | "contract_path": "src/EnumerableSetIteration.sol",
6351 | "line_no": 29,
6352 | "src": "989:157",
6353 | "src_char": "989:157"
6354 | },
6355 | {
6356 | "contract_path": "src/EnumerableSetIteration.sol",
6357 | "line_no": 38,
6358 | "src": "1253:155",
6359 | "src_char": "1253:155"
6360 | },
6361 | {
6362 | "contract_path": "src/EnumerableSetIteration.sol",
6363 | "line_no": 48,
6364 | "src": "1517:159",
6365 | "src_char": "1517:159"
6366 | },
6367 | {
6368 | "contract_path": "src/EnumerableSetIteration.sol",
6369 | "line_no": 57,
6370 | "src": "1749:157",
6371 | "src_char": "1749:157"
6372 | },
6373 | {
6374 | "contract_path": "src/EnumerableSetIteration.sol",
6375 | "line_no": 65,
6376 | "src": "1976:142",
6377 | "src_char": "1976:142"
6378 | },
6379 | {
6380 | "contract_path": "src/MsgValueInLoop.sol",
6381 | "line_no": 12,
6382 | "src": "289:107",
6383 | "src_char": "289:107"
6384 | },
6385 | {
6386 | "contract_path": "src/MsgValueInLoop.sol",
6387 | "line_no": 25,
6388 | "src": "658:122",
6389 | "src_char": "658:122"
6390 | },
6391 | {
6392 | "contract_path": "src/MsgValueInLoop.sol",
6393 | "line_no": 38,
6394 | "src": "988:94",
6395 | "src_char": "988:94"
6396 | },
6397 | {
6398 | "contract_path": "src/MsgValueInLoop.sol",
6399 | "line_no": 54,
6400 | "src": "1415:93",
6401 | "src_char": "1415:93"
6402 | },
6403 | {
6404 | "contract_path": "src/MsgValueInLoop.sol",
6405 | "line_no": 71,
6406 | "src": "1844:97",
6407 | "src_char": "1844:97"
6408 | },
6409 | {
6410 | "contract_path": "src/RevertsAndRequriesInLoops.sol",
6411 | "line_no": 10,
6412 | "src": "227:129",
6413 | "src_char": "227:129"
6414 | },
6415 | {
6416 | "contract_path": "src/RevertsAndRequriesInLoops.sol",
6417 | "line_no": 17,
6418 | "src": "416:150",
6419 | "src_char": "416:150"
6420 | },
6421 | {
6422 | "contract_path": "src/RevertsAndRequriesInLoops.sol",
6423 | "line_no": 27,
6424 | "src": "719:159",
6425 | "src_char": "719:159"
6426 | },
6427 | {
6428 | "contract_path": "src/StateChangeAfterExternalCall.sol",
6429 | "line_no": 47,
6430 | "src": "1144:154",
6431 | "src_char": "1144:154"
6432 | },
6433 | {
6434 | "contract_path": "src/eth2/DepositContract.sol",
6435 | "line_no": 134,
6436 | "src": "8131:283",
6437 | "src_char": "6643:283"
6438 | },
6439 | {
6440 | "contract_path": "src/parent_chain/ParentChainContract.sol",
6441 | "line_no": 17,
6442 | "src": "512:110",
6443 | "src_char": "512:110"
6444 | }
6445 | ]
6446 | },
6447 | {
6448 | "title": "Builtin Symbol Shadowing",
6449 | "description": "Name clashes with a built-in-symbol. Consider renaming it.",
6450 | "detector_name": "builtin-symbol-shadowing",
6451 | "instances": [
6452 | {
6453 | "contract_path": "src/BuiltinSymbolShadow.sol",
6454 | "line_no": 5,
6455 | "src": "92:8",
6456 | "src_char": "92:8"
6457 | },
6458 | {
6459 | "contract_path": "src/BuiltinSymbolShadow.sol",
6460 | "line_no": 8,
6461 | "src": "125:41",
6462 | "src_char": "125:41"
6463 | },
6464 | {
6465 | "contract_path": "src/BuiltinSymbolShadow.sol",
6466 | "line_no": 17,
6467 | "src": "358:39",
6468 | "src_char": "358:39"
6469 | },
6470 | {
6471 | "contract_path": "src/BuiltinSymbolShadow.sol",
6472 | "line_no": 22,
6473 | "src": "414:15",
6474 | "src_char": "414:15"
6475 | }
6476 | ]
6477 | },
6478 | {
6479 | "title": "Void constructor",
6480 | "description": "Call to a constructor that is not implemented.",
6481 | "detector_name": "void-constructor",
6482 | "instances": [
6483 | {
6484 | "contract_path": "src/VoidConstructor.sol",
6485 | "line_no": 16,
6486 | "src": "372:17",
6487 | "src_char": "372:17"
6488 | }
6489 | ]
6490 | },
6491 | {
6492 | "title": "Missing Inheritance",
6493 | "description": "There is an interface / abstract contract that is potentially missing (not included in) the inheritance of this contract.",
6494 | "detector_name": "missing-inheritance",
6495 | "instances": [
6496 | {
6497 | "contract_path": "src/MissingInheritance.sol",
6498 | "line_no": 7,
6499 | "src": "83:25",
6500 | "src_char": "83:25",
6501 | "hint": "Is this contract supposed to implement an interface? Consider extending one of the following: IMissingInheritanceCounter"
6502 | },
6503 | {
6504 | "contract_path": "src/MissingInheritance.sol",
6505 | "line_no": 41,
6506 | "src": "754:16",
6507 | "src_char": "754:16",
6508 | "hint": "Is this contract supposed to implement an interface? Consider extending one of the following: IMissingChild, IMissingParent"
6509 | },
6510 | {
6511 | "contract_path": "src/TestERC20.sol",
6512 | "line_no": 4,
6513 | "src": "70:9",
6514 | "src_char": "70:9",
6515 | "hint": "Is this contract supposed to implement an interface? Consider extending one of the following: IERC20"
6516 | }
6517 | ]
6518 | },
6519 | {
6520 | "title": "Unused Import",
6521 | "description": "Redundant import statement. Consider removing it.",
6522 | "detector_name": "unused-import",
6523 | "instances": [
6524 | {
6525 | "contract_path": "src/StateVariables.sol",
6526 | "line_no": 4,
6527 | "src": "57:38",
6528 | "src_char": "57:38"
6529 | },
6530 | {
6531 | "contract_path": "src/UnusedImport.sol",
6532 | "line_no": 6,
6533 | "src": "91:18",
6534 | "src_char": "91:18"
6535 | },
6536 | {
6537 | "contract_path": "src/UnusedImport.sol",
6538 | "line_no": 9,
6539 | "src": "144:28",
6540 | "src_char": "144:28"
6541 | }
6542 | ]
6543 | },
6544 | {
6545 | "title": "Function Pointer in Constructor",
6546 | "description": "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.",
6547 | "detector_name": "function-pointer-in-constructor",
6548 | "instances": [
6549 | {
6550 | "contract_path": "src/FunctionPointers.sol",
6551 | "line_no": 13,
6552 | "src": "330:50",
6553 | "src_char": "330:50"
6554 | }
6555 | ]
6556 | },
6557 | {
6558 | "title": "State Variable Could Be Constant",
6559 | "description": "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.",
6560 | "detector_name": "state-variable-could-be-constant",
6561 | "instances": [
6562 | {
6563 | "contract_path": "src/CostlyOperationsInsideLoops.sol",
6564 | "line_no": 6,
6565 | "src": "128:10",
6566 | "src_char": "128:10"
6567 | },
6568 | {
6569 | "contract_path": "src/FunctionInitializingState.sol",
6570 | "line_no": 7,
6571 | "src": "190:1",
6572 | "src_char": "190:1"
6573 | },
6574 | {
6575 | "contract_path": "src/FunctionInitializingState.sol",
6576 | "line_no": 58,
6577 | "src": "1617:1",
6578 | "src_char": "1617:1"
6579 | },
6580 | {
6581 | "contract_path": "src/IncorrectERC20.sol",
6582 | "line_no": 5,
6583 | "src": "101:4",
6584 | "src_char": "101:4"
6585 | },
6586 | {
6587 | "contract_path": "src/IncorrectERC20.sol",
6588 | "line_no": 6,
6589 | "src": "144:6",
6590 | "src_char": "144:6"
6591 | },
6592 | {
6593 | "contract_path": "src/IncorrectERC20.sol",
6594 | "line_no": 7,
6595 | "src": "177:8",
6596 | "src_char": "177:8"
6597 | },
6598 | {
6599 | "contract_path": "src/IncorrectERC20.sol",
6600 | "line_no": 8,
6601 | "src": "211:11",
6602 | "src_char": "211:11"
6603 | },
6604 | {
6605 | "contract_path": "src/IncorrectERC20.sol",
6606 | "line_no": 48,
6607 | "src": "1426:4",
6608 | "src_char": "1426:4"
6609 | },
6610 | {
6611 | "contract_path": "src/IncorrectERC20.sol",
6612 | "line_no": 49,
6613 | "src": "1467:6",
6614 | "src_char": "1467:6"
6615 | },
6616 | {
6617 | "contract_path": "src/IncorrectERC20.sol",
6618 | "line_no": 50,
6619 | "src": "1500:8",
6620 | "src_char": "1500:8"
6621 | },
6622 | {
6623 | "contract_path": "src/IncorrectERC20.sol",
6624 | "line_no": 51,
6625 | "src": "1535:12",
6626 | "src_char": "1535:12"
6627 | },
6628 | {
6629 | "contract_path": "src/IncorrectERC721.sol",
6630 | "line_no": 5,
6631 | "src": "102:4",
6632 | "src_char": "102:4"
6633 | },
6634 | {
6635 | "contract_path": "src/IncorrectERC721.sol",
6636 | "line_no": 6,
6637 | "src": "143:6",
6638 | "src_char": "143:6"
6639 | },
6640 | {
6641 | "contract_path": "src/IncorrectERC721.sol",
6642 | "line_no": 145,
6643 | "src": "4001:4",
6644 | "src_char": "4001:4"
6645 | },
6646 | {
6647 | "contract_path": "src/IncorrectERC721.sol",
6648 | "line_no": 146,
6649 | "src": "4040:6",
6650 | "src_char": "4040:6"
6651 | },
6652 | {
6653 | "contract_path": "src/StateVariableCouldBeDeclaredConstant.sol",
6654 | "line_no": 8,
6655 | "src": "211:13",
6656 | "src_char": "211:13"
6657 | },
6658 | {
6659 | "contract_path": "src/StateVariableCouldBeDeclaredConstant.sol",
6660 | "line_no": 13,
6661 | "src": "385:1",
6662 | "src_char": "385:1"
6663 | },
6664 | {
6665 | "contract_path": "src/StateVariables.sol",
6666 | "line_no": 13,
6667 | "src": "383:27",
6668 | "src_char": "383:27"
6669 | },
6670 | {
6671 | "contract_path": "src/StateVariables.sol",
6672 | "line_no": 14,
6673 | "src": "437:28",
6674 | "src_char": "437:28"
6675 | },
6676 | {
6677 | "contract_path": "src/StateVariables.sol",
6678 | "line_no": 15,
6679 | "src": "490:26",
6680 | "src_char": "490:26"
6681 | },
6682 | {
6683 | "contract_path": "src/StateVariablesManipulation.sol",
6684 | "line_no": 40,
6685 | "src": "1188:9",
6686 | "src_char": "1188:9"
6687 | },
6688 | {
6689 | "contract_path": "src/StateVariablesManipulation.sol",
6690 | "line_no": 41,
6691 | "src": "1221:10",
6692 | "src_char": "1221:10"
6693 | },
6694 | {
6695 | "contract_path": "src/StateVariablesManipulation.sol",
6696 | "line_no": 72,
6697 | "src": "2068:13",
6698 | "src_char": "2068:13"
6699 | },
6700 | {
6701 | "contract_path": "src/Trump.sol",
6702 | "line_no": 130,
6703 | "src": "3920:20",
6704 | "src_char": "3920:20"
6705 | },
6706 | {
6707 | "contract_path": "src/Trump.sol",
6708 | "line_no": 131,
6709 | "src": "3967:21",
6710 | "src_char": "3967:21"
6711 | },
6712 | {
6713 | "contract_path": "src/Trump.sol",
6714 | "line_no": 135,
6715 | "src": "4041:14",
6716 | "src_char": "4041:14"
6717 | },
6718 | {
6719 | "contract_path": "src/Trump.sol",
6720 | "line_no": 136,
6721 | "src": "4080:15",
6722 | "src_char": "4080:15"
6723 | },
6724 | {
6725 | "contract_path": "src/Trump.sol",
6726 | "line_no": 137,
6727 | "src": "4120:12",
6728 | "src_char": "4120:12"
6729 | },
6730 | {
6731 | "contract_path": "src/Trump.sol",
6732 | "line_no": 138,
6733 | "src": "4156:13",
6734 | "src_char": "4156:13"
6735 | },
6736 | {
6737 | "contract_path": "src/Trump.sol",
6738 | "line_no": 139,
6739 | "src": "4193:15",
6740 | "src_char": "4193:15"
6741 | },
6742 | {
6743 | "contract_path": "src/Trump.sol",
6744 | "line_no": 140,
6745 | "src": "4233:16",
6746 | "src_char": "4233:16"
6747 | },
6748 | {
6749 | "contract_path": "src/Trump.sol",
6750 | "line_no": 141,
6751 | "src": "4274:18",
6752 | "src_char": "4274:18"
6753 | },
6754 | {
6755 | "contract_path": "src/Trump.sol",
6756 | "line_no": 150,
6757 | "src": "4682:17",
6758 | "src_char": "4682:17"
6759 | },
6760 | {
6761 | "contract_path": "src/Trump.sol",
6762 | "line_no": 151,
6763 | "src": "4743:11",
6764 | "src_char": "4743:11"
6765 | },
6766 | {
6767 | "contract_path": "src/UninitializedStateVariable.sol",
6768 | "line_no": 8,
6769 | "src": "198:11",
6770 | "src_char": "198:11"
6771 | },
6772 | {
6773 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
6774 | "line_no": 14,
6775 | "src": "151:3",
6776 | "src_char": "151:3"
6777 | },
6778 | {
6779 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
6780 | "line_no": 16,
6781 | "src": "190:3",
6782 | "src_char": "190:3"
6783 | },
6784 | {
6785 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
6786 | "line_no": 19,
6787 | "src": "261:3",
6788 | "src_char": "261:3"
6789 | },
6790 | {
6791 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
6792 | "line_no": 22,
6793 | "src": "367:3",
6794 | "src_char": "367:3"
6795 | },
6796 | {
6797 | "contract_path": "src/cloc/AnotherHeavilyCommentedContract.sol",
6798 | "line_no": 29,
6799 | "src": "477:3",
6800 | "src_char": "477:3"
6801 | },
6802 | {
6803 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
6804 | "line_no": 14,
6805 | "src": "160:3",
6806 | "src_char": "160:3"
6807 | },
6808 | {
6809 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
6810 | "line_no": 16,
6811 | "src": "199:3",
6812 | "src_char": "199:3"
6813 | },
6814 | {
6815 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
6816 | "line_no": 19,
6817 | "src": "270:3",
6818 | "src_char": "270:3"
6819 | },
6820 | {
6821 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
6822 | "line_no": 22,
6823 | "src": "376:3",
6824 | "src_char": "376:3"
6825 | },
6826 | {
6827 | "contract_path": "src/cloc/HeavilyCommentedContract.sol",
6828 | "line_no": 29,
6829 | "src": "486:3",
6830 | "src_char": "486:3"
6831 | }
6832 | ]
6833 | },
6834 | {
6835 | "title": "State Change Without Event",
6836 | "description": "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.",
6837 | "detector_name": "state-change-without-event",
6838 | "instances": [
6839 | {
6840 | "contract_path": "src/AdminContract.sol",
6841 | "line_no": 14,
6842 | "src": "457:23",
6843 | "src_char": "457:23"
6844 | },
6845 | {
6846 | "contract_path": "src/AssertStateChange.sol",
6847 | "line_no": 8,
6848 | "src": "131:3",
6849 | "src_char": "131:3"
6850 | },
6851 | {
6852 | "contract_path": "src/AssertStateChange.sol",
6853 | "line_no": 12,
6854 | "src": "199:4",
6855 | "src_char": "199:4"
6856 | },
6857 | {
6858 | "contract_path": "src/CacheArrayLength.sol",
6859 | "line_no": 23,
6860 | "src": "506:2",
6861 | "src_char": "506:2"
6862 | },
6863 | {
6864 | "contract_path": "src/CacheArrayLength.sol",
6865 | "line_no": 32,
6866 | "src": "700:2",
6867 | "src_char": "700:2"
6868 | },
6869 | {
6870 | "contract_path": "src/Casting.sol",
6871 | "line_no": 37,
6872 | "src": "922:17",
6873 | "src_char": "922:17"
6874 | },
6875 | {
6876 | "contract_path": "src/Casting.sol",
6877 | "line_no": 75,
6878 | "src": "2106:16",
6879 | "src_char": "2106:16"
6880 | },
6881 | {
6882 | "contract_path": "src/Casting.sol",
6883 | "line_no": 113,
6884 | "src": "3222:20",
6885 | "src_char": "3222:20"
6886 | },
6887 | {
6888 | "contract_path": "src/CostlyOperationsInsideLoops.sol",
6889 | "line_no": 9,
6890 | "src": "189:3",
6891 | "src_char": "189:3"
6892 | },
6893 | {
6894 | "contract_path": "src/CostlyOperationsInsideLoops.sol",
6895 | "line_no": 15,
6896 | "src": "314:4",
6897 | "src_char": "314:4"
6898 | },
6899 | {
6900 | "contract_path": "src/Counter.sol",
6901 | "line_no": 7,
6902 | "src": "129:9",
6903 | "src_char": "129:9"
6904 | },
6905 | {
6906 | "contract_path": "src/Counter.sol",
6907 | "line_no": 11,
6908 | "src": "215:9",
6909 | "src_char": "215:9"
6910 | },
6911 | {
6912 | "contract_path": "src/Counter.sol",
6913 | "line_no": 16,
6914 | "src": "286:13",
6915 | "src_char": "286:13"
6916 | },
6917 | {
6918 | "contract_path": "src/Counter.sol",
6919 | "line_no": 21,
6920 | "src": "367:19",
6921 | "src_char": "367:19"
6922 | },
6923 | {
6924 | "contract_path": "src/Counter.sol",
6925 | "line_no": 28,
6926 | "src": "495:22",
6927 | "src_char": "495:22"
6928 | },
6929 | {
6930 | "contract_path": "src/DeadCode.sol",
6931 | "line_no": 11,
6932 | "src": "189:8",
6933 | "src_char": "189:8"
6934 | },
6935 | {
6936 | "contract_path": "src/DivisionBeforeMultiplication.sol",
6937 | "line_no": 7,
6938 | "src": "135:14",
6939 | "src_char": "135:14"
6940 | },
6941 | {
6942 | "contract_path": "src/DivisionBeforeMultiplication.sol",
6943 | "line_no": 11,
6944 | "src": "254:18",
6945 | "src_char": "254:18"
6946 | },
6947 | {
6948 | "contract_path": "src/DivisionBeforeMultiplication.sol",
6949 | "line_no": 15,
6950 | "src": "367:11",
6951 | "src_char": "367:11"
6952 | },
6953 | {
6954 | "contract_path": "src/DivisionBeforeMultiplication.sol",
6955 | "line_no": 19,
6956 | "src": "465:19",
6957 | "src_char": "465:19"
6958 | },
6959 | {
6960 | "contract_path": "src/DivisionBeforeMultiplication.sol",
6961 | "line_no": 23,
6962 | "src": "577:16",
6963 | "src_char": "577:16"
6964 | },
6965 | {
6966 | "contract_path": "src/DivisionBeforeMultiplication.sol",
6967 | "line_no": 27,
6968 | "src": "690:20",
6969 | "src_char": "690:20"
6970 | },
6971 | {
6972 | "contract_path": "src/EnumerableSetIteration.sol",
6973 | "line_no": 28,
6974 | "src": "939:28",
6975 | "src_char": "939:28"
6976 | },
6977 | {
6978 | "contract_path": "src/EnumerableSetIteration.sol",
6979 | "line_no": 36,
6980 | "src": "1178:30",
6981 | "src_char": "1178:30"
6982 | },
6983 | {
6984 | "contract_path": "src/EnumerableSetIteration.sol",
6985 | "line_no": 46,
6986 | "src": "1440:32",
6987 | "src_char": "1440:32"
6988 | },
6989 | {
6990 | "contract_path": "src/EnumerableSetIteration.sol",
6991 | "line_no": 56,
6992 | "src": "1708:19",
6993 | "src_char": "1708:19"
6994 | },
6995 | {
6996 | "contract_path": "src/EnumerableSetIteration.sol",
6997 | "line_no": 64,
6998 | "src": "1938:16",
6999 | "src_char": "1938:16"
7000 | },
7001 | {
7002 | "contract_path": "src/ExternalCalls.sol",
7003 | "line_no": 11,
7004 | "src": "194:7",
7005 | "src_char": "194:7"
7006 | },
7007 | {
7008 | "contract_path": "src/ExternalCalls.sol",
7009 | "line_no": 19,
7010 | "src": "309:9",
7011 | "src_char": "309:9"
7012 | },
7013 | {
7014 | "contract_path": "src/ExternalCalls.sol",
7015 | "line_no": 78,
7016 | "src": "1470:7",
7017 | "src_char": "1470:7"
7018 | },
7019 | {
7020 | "contract_path": "src/ExternalCalls.sol",
7021 | "line_no": 82,
7022 | "src": "1548:7",
7023 | "src_char": "1548:7"
7024 | },
7025 | {
7026 | "contract_path": "src/IncorrectERC20.sol",
7027 | "line_no": 17,
7028 | "src": "483:8",
7029 | "src_char": "483:8"
7030 | },
7031 | {
7032 | "contract_path": "src/IncorrectERC20.sol",
7033 | "line_no": 23,
7034 | "src": "690:7",
7035 | "src_char": "690:7"
7036 | },
7037 | {
7038 | "contract_path": "src/IncorrectERC20.sol",
7039 | "line_no": 27,
7040 | "src": "808:12",
7041 | "src_char": "808:12"
7042 | },
7043 | {
7044 | "contract_path": "src/IncorrectERC20.sol",
7045 | "line_no": 68,
7046 | "src": "2007:8",
7047 | "src_char": "2007:8"
7048 | },
7049 | {
7050 | "contract_path": "src/IncorrectERC20.sol",
7051 | "line_no": 83,
7052 | "src": "2352:7",
7053 | "src_char": "2352:7"
7054 | },
7055 | {
7056 | "contract_path": "src/IncorrectERC20.sol",
7057 | "line_no": 88,
7058 | "src": "2507:12",
7059 | "src_char": "2507:12"
7060 | },
7061 | {
7062 | "contract_path": "src/IncorrectERC721.sol",
7063 | "line_no": 22,
7064 | "src": "696:7",
7065 | "src_char": "696:7"
7066 | },
7067 | {
7068 | "contract_path": "src/IncorrectERC721.sol",
7069 | "line_no": 41,
7070 | "src": "1231:17",
7071 | "src_char": "1231:17"
7072 | },
7073 | {
7074 | "contract_path": "src/IncorrectERC721.sol",
7075 | "line_no": 56,
7076 | "src": "1684:12",
7077 | "src_char": "1684:12"
7078 | },
7079 | {
7080 | "contract_path": "src/IncorrectERC721.sol",
7081 | "line_no": 86,
7082 | "src": "2439:4",
7083 | "src_char": "2439:4"
7084 | },
7085 | {
7086 | "contract_path": "src/InternalFunctions.sol",
7087 | "line_no": 12,
7088 | "src": "213:8",
7089 | "src_char": "213:8"
7090 | },
7091 | {
7092 | "contract_path": "src/MissingInheritance.sol",
7093 | "line_no": 10,
7094 | "src": "151:9",
7095 | "src_char": "151:9"
7096 | },
7097 | {
7098 | "contract_path": "src/MissingInheritance.sol",
7099 | "line_no": 25,
7100 | "src": "451:9",
7101 | "src_char": "451:9"
7102 | },
7103 | {
7104 | "contract_path": "src/MsgValueInLoop.sol",
7105 | "line_no": 10,
7106 | "src": "177:3",
7107 | "src_char": "177:3"
7108 | },
7109 | {
7110 | "contract_path": "src/MsgValueInLoop.sol",
7111 | "line_no": 22,
7112 | "src": "501:4",
7113 | "src_char": "501:4"
7114 | },
7115 | {
7116 | "contract_path": "src/MsgValueInLoop.sol",
7117 | "line_no": 36,
7118 | "src": "905:3",
7119 | "src_char": "905:3"
7120 | },
7121 | {
7122 | "contract_path": "src/MsgValueInLoop.sol",
7123 | "line_no": 51,
7124 | "src": "1307:3",
7125 | "src_char": "1307:3"
7126 | },
7127 | {
7128 | "contract_path": "src/MsgValueInLoop.sol",
7129 | "line_no": 68,
7130 | "src": "1733:3",
7131 | "src_char": "1733:3"
7132 | },
7133 | {
7134 | "contract_path": "src/OutOfOrderRetryable.sol",
7135 | "line_no": 175,
7136 | "src": "5072:7",
7137 | "src_char": "5072:7"
7138 | },
7139 | {
7140 | "contract_path": "src/RevertsAndRequriesInLoops.sol",
7141 | "line_no": 9,
7142 | "src": "188:17",
7143 | "src_char": "188:17"
7144 | },
7145 | {
7146 | "contract_path": "src/RevertsAndRequriesInLoops.sol",
7147 | "line_no": 16,
7148 | "src": "377:17",
7149 | "src_char": "377:17"
7150 | },
7151 | {
7152 | "contract_path": "src/RevertsAndRequriesInLoops.sol",
7153 | "line_no": 25,
7154 | "src": "588:17",
7155 | "src_char": "588:17"
7156 | },
7157 | {
7158 | "contract_path": "src/StateChangeAfterExternalCall.sol",
7159 | "line_no": 22,
7160 | "src": "530:13",
7161 | "src_char": "530:13"
7162 | },
7163 | {
7164 | "contract_path": "src/StateChangeAfterExternalCall.sol",
7165 | "line_no": 31,
7166 | "src": "677:13",
7167 | "src_char": "677:13"
7168 | },
7169 | {
7170 | "contract_path": "src/StateChangeAfterExternalCall.sol",
7171 | "line_no": 42,
7172 | "src": "885:13",
7173 | "src_char": "885:13"
7174 | },
7175 | {
7176 | "contract_path": "src/StateChangeAfterExternalCall.sol",
7177 | "line_no": 57,
7178 | "src": "1331:14",
7179 | "src_char": "1331:14"
7180 | },
7181 | {
7182 | "contract_path": "src/StateChangeAfterExternalCall.sol",
7183 | "line_no": 66,
7184 | "src": "1480:14",
7185 | "src_char": "1480:14"
7186 | },
7187 | {
7188 | "contract_path": "src/StateChangeAfterExternalCall.sol",
7189 | "line_no": 81,
7190 | "src": "1769:13",
7191 | "src_char": "1769:13"
7192 | },
7193 | {
7194 | "contract_path": "src/StateChangeAfterExternalCall.sol",
7195 | "line_no": 87,
7196 | "src": "1885:14",
7197 | "src_char": "1885:14"
7198 | },
7199 | {
7200 | "contract_path": "src/StateVariableCouldBeDeclaredConstant.sol",
7201 | "line_no": 39,
7202 | "src": "996:8",
7203 | "src_char": "996:8"
7204 | },
7205 | {
7206 | "contract_path": "src/StateVariableCouldBeDeclaredImmutable.sol",
7207 | "line_no": 37,
7208 | "src": "1455:21",
7209 | "src_char": "1455:21"
7210 | },
7211 | {
7212 | "contract_path": "src/StateVariables.sol",
7213 | "line_no": 47,
7214 | "src": "1764:18",
7215 | "src_char": "1764:18"
7216 | },
7217 | {
7218 | "contract_path": "src/StateVariables.sol",
7219 | "line_no": 52,
7220 | "src": "1915:20",
7221 | "src_char": "1915:20"
7222 | },
7223 | {
7224 | "contract_path": "src/StateVariables.sol",
7225 | "line_no": 57,
7226 | "src": "2072:14",
7227 | "src_char": "2072:14"
7228 | },
7229 | {
7230 | "contract_path": "src/StateVariables.sol",
7231 | "line_no": 61,
7232 | "src": "2157:22",
7233 | "src_char": "2157:22"
7234 | },
7235 | {
7236 | "contract_path": "src/StateVariables.sol",
7237 | "line_no": 71,
7238 | "src": "2539:25",
7239 | "src_char": "2539:25"
7240 | },
7241 | {
7242 | "contract_path": "src/StateVariablesChangesWithoutEvents.sol",
7243 | "line_no": 23,
7244 | "src": "574:26",
7245 | "src_char": "574:26"
7246 | },
7247 | {
7248 | "contract_path": "src/StateVariablesChangesWithoutEvents.sol",
7249 | "line_no": 28,
7250 | "src": "679:36",
7251 | "src_char": "679:36"
7252 | },
7253 | {
7254 | "contract_path": "src/StateVariablesChangesWithoutEvents.sol",
7255 | "line_no": 33,
7256 | "src": "794:35",
7257 | "src_char": "794:35"
7258 | },
7259 | {
7260 | "contract_path": "src/StateVariablesChangesWithoutEvents.sol",
7261 | "line_no": 45,
7262 | "src": "1047:36",
7263 | "src_char": "1047:36"
7264 | },
7265 | {
7266 | "contract_path": "src/StateVariablesChangesWithoutEvents.sol",
7267 | "line_no": 50,
7268 | "src": "1157:26",
7269 | "src_char": "1157:26"
7270 | },
7271 | {
7272 | "contract_path": "src/StateVariablesChangesWithoutEvents.sol",
7273 | "line_no": 55,
7274 | "src": "1266:24",
7275 | "src_char": "1266:24"
7276 | },
7277 | {
7278 | "contract_path": "src/StateVariablesChangesWithoutEvents.sol",
7279 | "line_no": 68,
7280 | "src": "1621:33",
7281 | "src_char": "1621:33"
7282 | },
7283 | {
7284 | "contract_path": "src/StateVariablesChangesWithoutEvents.sol",
7285 | "line_no": 81,
7286 | "src": "2003:34",
7287 | "src_char": "2003:34"
7288 | },
7289 | {
7290 | "contract_path": "src/StateVariablesManipulation.sol",
7291 | "line_no": 48,
7292 | "src": "1463:26",
7293 | "src_char": "1463:26"
7294 | },
7295 | {
7296 | "contract_path": "src/StateVariablesManipulation.sol",
7297 | "line_no": 80,
7298 | "src": "2360:18",
7299 | "src_char": "2360:18"
7300 | },
7301 | {
7302 | "contract_path": "src/StateVariablesManipulation.sol",
7303 | "line_no": 85,
7304 | "src": "2519:24",
7305 | "src_char": "2519:24"
7306 | },
7307 | {
7308 | "contract_path": "src/StateVariablesManipulation.sol",
7309 | "line_no": 120,
7310 | "src": "3396:24",
7311 | "src_char": "3396:24"
7312 | },
7313 | {
7314 | "contract_path": "src/StateVariablesManipulation.sol",
7315 | "line_no": 126,
7316 | "src": "3566:25",
7317 | "src_char": "3566:25"
7318 | },
7319 | {
7320 | "contract_path": "src/StateVariablesManipulation.sol",
7321 | "line_no": 139,
7322 | "src": "3960:25",
7323 | "src_char": "3960:25"
7324 | },
7325 | {
7326 | "contract_path": "src/StateVariablesManipulation.sol",
7327 | "line_no": 160,
7328 | "src": "4556:25",
7329 | "src_char": "4556:25"
7330 | },
7331 | {
7332 | "contract_path": "src/StateVariablesManipulation.sol",
7333 | "line_no": 176,
7334 | "src": "5020:25",
7335 | "src_char": "5020:25"
7336 | },
7337 | {
7338 | "contract_path": "src/StateVariablesManipulation.sol",
7339 | "line_no": 182,
7340 | "src": "5159:25",
7341 | "src_char": "5159:25"
7342 | },
7343 | {
7344 | "contract_path": "src/StateVariablesManipulation.sol",
7345 | "line_no": 281,
7346 | "src": "7993:18",
7347 | "src_char": "7993:18"
7348 | },
7349 | {
7350 | "contract_path": "src/StateVariablesManipulation.sol",
7351 | "line_no": 286,
7352 | "src": "8121:24",
7353 | "src_char": "8121:24"
7354 | },
7355 | {
7356 | "contract_path": "src/StateVariablesManipulation.sol",
7357 | "line_no": 314,
7358 | "src": "8845:18",
7359 | "src_char": "8845:18"
7360 | },
7361 | {
7362 | "contract_path": "src/StateVariablesManipulation.sol",
7363 | "line_no": 321,
7364 | "src": "9054:24",
7365 | "src_char": "9054:24"
7366 | },
7367 | {
7368 | "contract_path": "src/StateVariablesManipulation.sol",
7369 | "line_no": 332,
7370 | "src": "9447:25",
7371 | "src_char": "9447:25"
7372 | },
7373 | {
7374 | "contract_path": "src/StateVariablesManipulation.sol",
7375 | "line_no": 337,
7376 | "src": "9572:26",
7377 | "src_char": "9572:26"
7378 | },
7379 | {
7380 | "contract_path": "src/StateVariablesManipulation.sol",
7381 | "line_no": 353,
7382 | "src": "9896:3",
7383 | "src_char": "9896:3"
7384 | },
7385 | {
7386 | "contract_path": "src/StorageParameters.sol",
7387 | "line_no": 7,
7388 | "src": "137:10",
7389 | "src_char": "137:10"
7390 | },
7391 | {
7392 | "contract_path": "src/TxOriginUsedForAuth.sol",
7393 | "line_no": 16,
7394 | "src": "348:13",
7395 | "src_char": "348:13"
7396 | },
7397 | {
7398 | "contract_path": "src/TxOriginUsedForAuth.sol",
7399 | "line_no": 22,
7400 | "src": "531:10",
7401 | "src_char": "531:10"
7402 | },
7403 | {
7404 | "contract_path": "src/UnprotectedInitialize.sol",
7405 | "line_no": 21,
7406 | "src": "452:22",
7407 | "src_char": "452:22"
7408 | },
7409 | {
7410 | "contract_path": "src/UnprotectedInitialize.sol",
7411 | "line_no": 27,
7412 | "src": "618:20",
7413 | "src_char": "618:20"
7414 | },
7415 | {
7416 | "contract_path": "src/UnprotectedInitialize.sol",
7417 | "line_no": 37,
7418 | "src": "916:33",
7419 | "src_char": "916:33"
7420 | },
7421 | {
7422 | "contract_path": "src/UnprotectedInitialize.sol",
7423 | "line_no": 70,
7424 | "src": "1798:27",
7425 | "src_char": "1798:27"
7426 | },
7427 | {
7428 | "contract_path": "src/UnusedError.sol",
7429 | "line_no": 16,
7430 | "src": "337:7",
7431 | "src_char": "337:7"
7432 | },
7433 | {
7434 | "contract_path": "src/UnusedStateVariables.sol",
7435 | "line_no": 15,
7436 | "src": "454:8",
7437 | "src_char": "454:8"
7438 | },
7439 | {
7440 | "contract_path": "src/ZeroAddressCheck.sol",
7441 | "line_no": 12,
7442 | "src": "253:12",
7443 | "src_char": "253:12"
7444 | },
7445 | {
7446 | "contract_path": "src/ZeroAddressCheck.sol",
7447 | "line_no": 17,
7448 | "src": "383:12",
7449 | "src_char": "383:12"
7450 | },
7451 | {
7452 | "contract_path": "src/ZeroAddressCheck.sol",
7453 | "line_no": 22,
7454 | "src": "534:10",
7455 | "src_char": "534:10"
7456 | },
7457 | {
7458 | "contract_path": "src/ZeroAddressCheck.sol",
7459 | "line_no": 27,
7460 | "src": "671:10",
7461 | "src_char": "671:10"
7462 | },
7463 | {
7464 | "contract_path": "src/ZeroAddressCheck.sol",
7465 | "line_no": 32,
7466 | "src": "829:10",
7467 | "src_char": "829:10"
7468 | },
7469 | {
7470 | "contract_path": "src/ZeroAddressCheck.sol",
7471 | "line_no": 37,
7472 | "src": "990:10",
7473 | "src_char": "990:10"
7474 | },
7475 | {
7476 | "contract_path": "src/ZeroAddressCheck.sol",
7477 | "line_no": 42,
7478 | "src": "1130:4",
7479 | "src_char": "1130:4"
7480 | },
7481 | {
7482 | "contract_path": "src/ZeroAddressCheck.sol",
7483 | "line_no": 46,
7484 | "src": "1207:4",
7485 | "src_char": "1207:4"
7486 | },
7487 | {
7488 | "contract_path": "src/ZeroAddressCheck.sol",
7489 | "line_no": 50,
7490 | "src": "1286:4",
7491 | "src_char": "1286:4"
7492 | },
7493 | {
7494 | "contract_path": "src/inheritance/ExtendedInheritance.sol",
7495 | "line_no": 14,
7496 | "src": "391:15",
7497 | "src_char": "391:15"
7498 | },
7499 | {
7500 | "contract_path": "src/nested/1/Nested.sol",
7501 | "line_no": 10,
7502 | "src": "265:17",
7503 | "src_char": "265:17"
7504 | },
7505 | {
7506 | "contract_path": "src/nested/2/Nested.sol",
7507 | "line_no": 10,
7508 | "src": "272:17",
7509 | "src_char": "272:17"
7510 | },
7511 | {
7512 | "contract_path": "src/parent_chain/ParentChainContract.sol",
7513 | "line_no": 15,
7514 | "src": "422:9",
7515 | "src_char": "422:9"
7516 | },
7517 | {
7518 | "contract_path": "src/parent_chain/ParentChainContract.sol",
7519 | "line_no": 32,
7520 | "src": "806:23",
7521 | "src_char": "806:23"
7522 | },
7523 | {
7524 | "contract_path": "src/router/InternalCalls.sol",
7525 | "line_no": 120,
7526 | "src": "2306:4",
7527 | "src_char": "2306:4"
7528 | }
7529 | ]
7530 | },
7531 | {
7532 | "title": "State Variable Could Be Immutable",
7533 | "description": "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",
7534 | "detector_name": "state-variable-could-be-immutable",
7535 | "instances": [
7536 | {
7537 | "contract_path": "src/ArbitraryTransferFrom.sol",
7538 | "line_no": 9,
7539 | "src": "217:7",
7540 | "src_char": "217:7"
7541 | },
7542 | {
7543 | "contract_path": "src/EmitAfterExternalCall.sol",
7544 | "line_no": 15,
7545 | "src": "373:7",
7546 | "src_char": "373:7"
7547 | },
7548 | {
7549 | "contract_path": "src/ExternalCalls.sol",
7550 | "line_no": 25,
7551 | "src": "416:2",
7552 | "src_char": "416:2"
7553 | },
7554 | {
7555 | "contract_path": "src/FunctionInitializingState.sol",
7556 | "line_no": 57,
7557 | "src": "1598:1",
7558 | "src_char": "1598:1"
7559 | },
7560 | {
7561 | "contract_path": "src/FunctionInitializingState.sol",
7562 | "line_no": 59,
7563 | "src": "1640:1",
7564 | "src_char": "1640:1"
7565 | },
7566 | {
7567 | "contract_path": "src/InconsistentUints.sol",
7568 | "line_no": 5,
7569 | "src": "122:12",
7570 | "src_char": "122:12"
7571 | },
7572 | {
7573 | "contract_path": "src/InconsistentUints.sol",
7574 | "line_no": 6,
7575 | "src": "160:15",
7576 | "src_char": "160:15"
7577 | },
7578 | {
7579 | "contract_path": "src/InternalFunctions.sol",
7580 | "line_no": 5,
7581 | "src": "111:5",
7582 | "src_char": "111:5"
7583 | },
7584 | {
7585 | "contract_path": "src/MultiplePlaceholders.sol",
7586 | "line_no": 5,
7587 | "src": "110:5",
7588 | "src_char": "110:5"
7589 | },
7590 | {
7591 | "contract_path": "src/OutOfOrderRetryable.sol",
7592 | "line_no": 39,
7593 | "src": "1052:5",
7594 | "src_char": "1052:5"
7595 | },
7596 | {
7597 | "contract_path": "src/OutOfOrderRetryable.sol",
7598 | "line_no": 40,
7599 | "src": "1078:10",
7600 | "src_char": "1078:10"
7601 | },
7602 | {
7603 | "contract_path": "src/OutOfOrderRetryable.sol",
7604 | "line_no": 41,
7605 | "src": "1109:17",
7606 | "src_char": "1109:17"
7607 | },
7608 | {
7609 | "contract_path": "src/OutOfOrderRetryable.sol",
7610 | "line_no": 42,
7611 | "src": "1147:8",
7612 | "src_char": "1147:8"
7613 | },
7614 | {
7615 | "contract_path": "src/OutOfOrderRetryable.sol",
7616 | "line_no": 43,
7617 | "src": "1176:12",
7618 | "src_char": "1176:12"
7619 | },
7620 | {
7621 | "contract_path": "src/OutOfOrderRetryable.sol",
7622 | "line_no": 44,
7623 | "src": "1209:3",
7624 | "src_char": "1209:3"
7625 | },
7626 | {
7627 | "contract_path": "src/StateChangeAfterExternalCall.sol",
7628 | "line_no": 14,
7629 | "src": "377:7",
7630 | "src_char": "377:7"
7631 | },
7632 | {
7633 | "contract_path": "src/StateVariableCouldBeDeclaredConstant.sol",
7634 | "line_no": 11,
7635 | "src": "281:13",
7636 | "src_char": "281:13"
7637 | },
7638 | {
7639 | "contract_path": "src/StateVariableCouldBeDeclaredConstant.sol",
7640 | "line_no": 29,
7641 | "src": "811:13",
7642 | "src_char": "811:13"
7643 | },
7644 | {
7645 | "contract_path": "src/StateVariableCouldBeDeclaredImmutable.sol",
7646 | "line_no": 6,
7647 | "src": "162:24",
7648 | "src_char": "162:24"
7649 | },
7650 | {
7651 | "contract_path": "src/StateVariableCouldBeDeclaredImmutable.sol",
7652 | "line_no": 9,
7653 | "src": "245:24",
7654 | "src_char": "245:24"
7655 | },
7656 | {
7657 | "contract_path": "src/StorageConditionals.sol",
7658 | "line_no": 5,
7659 | "src": "108:18",
7660 | "src_char": "108:18"
7661 | },
7662 | {
7663 | "contract_path": "src/StorageConditionals.sol",
7664 | "line_no": 6,
7665 | "src": "148:23",
7666 | "src_char": "148:23"
7667 | },
7668 | {
7669 | "contract_path": "src/TestERC20.sol",
7670 | "line_no": 7,
7671 | "src": "144:4",
7672 | "src_char": "144:4"
7673 | },
7674 | {
7675 | "contract_path": "src/TestERC20.sol",
7676 | "line_no": 8,
7677 | "src": "168:6",
7678 | "src_char": "168:6"
7679 | },
7680 | {
7681 | "contract_path": "src/Trump.sol",
7682 | "line_no": 128,
7683 | "src": "3847:10",
7684 | "src_char": "3847:10"
7685 | },
7686 | {
7687 | "contract_path": "src/Trump.sol",
7688 | "line_no": 129,
7689 | "src": "3887:11",
7690 | "src_char": "3887:11"
7691 | },
7692 | {
7693 | "contract_path": "src/TxOriginUsedForAuth.sol",
7694 | "line_no": 5,
7695 | "src": "107:5",
7696 | "src_char": "107:5"
7697 | },
7698 | {
7699 | "contract_path": "src/UninitializedStateVariable.sol",
7700 | "line_no": 9,
7701 | "src": "291:8",
7702 | "src_char": "291:8"
7703 | },
7704 | {
7705 | "contract_path": "src/UninitializedStateVariable.sol",
7706 | "line_no": 37,
7707 | "src": "1079:5",
7708 | "src_char": "1079:5"
7709 | },
7710 | {
7711 | "contract_path": "src/UnprotectedInitialize.sol",
7712 | "line_no": 9,
7713 | "src": "244:5",
7714 | "src_char": "244:5"
7715 | },
7716 | {
7717 | "contract_path": "src/auditor_mode/ExternalCalls.sol",
7718 | "line_no": 9,
7719 | "src": "205:6",
7720 | "src_char": "205:6"
7721 | },
7722 | {
7723 | "contract_path": "src/auditor_mode/ExternalCalls.sol",
7724 | "line_no": 10,
7725 | "src": "251:14",
7726 | "src_char": "251:14"
7727 | },
7728 | {
7729 | "contract_path": "src/eth2/DepositContract.sol",
7730 | "line_no": 66,
7731 | "src": "4907:11",
7732 | "src_char": "3419:11"
7733 | },
7734 | {
7735 | "contract_path": "src/reused_contract_name/ContractA.sol",
7736 | "line_no": 5,
7737 | "src": "99:1",
7738 | "src_char": "99:1"
7739 | },
7740 | {
7741 | "contract_path": "src/reused_contract_name/ContractB.sol",
7742 | "line_no": 5,
7743 | "src": "102:1",
7744 | "src_char": "102:1"
7745 | },
7746 | {
7747 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
7748 | "line_no": 8,
7749 | "src": "312:8",
7750 | "src_char": "312:8"
7751 | }
7752 | ]
7753 | },
7754 | {
7755 | "title": "Multiple Placeholders in Modifier",
7756 | "description": "Design the modifier to only contain 1 placeholder statement. If that is not possible, split the logic into multiple modifiers.",
7757 | "detector_name": "multiple-placeholders",
7758 | "instances": [
7759 | {
7760 | "contract_path": "src/MultiplePlaceholders.sol",
7761 | "line_no": 12,
7762 | "src": "197:10",
7763 | "src_char": "197:10"
7764 | },
7765 | {
7766 | "contract_path": "src/MultiplePlaceholders.sol",
7767 | "line_no": 19,
7768 | "src": "329:5",
7769 | "src_char": "329:5"
7770 | },
7771 | {
7772 | "contract_path": "src/MultiplePlaceholders.sol",
7773 | "line_no": 40,
7774 | "src": "700:5",
7775 | "src_char": "700:5"
7776 | }
7777 | ]
7778 | },
7779 | {
7780 | "title": "Incorrect Use Of Modifier",
7781 | "description": "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.",
7782 | "detector_name": "incorrect-use-of-modifier",
7783 | "instances": [
7784 | {
7785 | "contract_path": "src/IncorrectModifier.sol",
7786 | "line_no": 22,
7787 | "src": "645:16",
7788 | "src_char": "645:16"
7789 | },
7790 | {
7791 | "contract_path": "src/IncorrectModifier.sol",
7792 | "line_no": 30,
7793 | "src": "763:18",
7794 | "src_char": "763:18"
7795 | }
7796 | ]
7797 | },
7798 | {
7799 | "title": "Unchecked Return",
7800 | "description": "Function returns a value but it is ignored. Consider checking the return value.",
7801 | "detector_name": "unchecked-return",
7802 | "instances": [
7803 | {
7804 | "contract_path": "src/ArbitraryTransferFrom.sol",
7805 | "line_no": 19,
7806 | "src": "601:38",
7807 | "src_char": "601:38"
7808 | },
7809 | {
7810 | "contract_path": "src/ArbitraryTransferFrom.sol",
7811 | "line_no": 34,
7812 | "src": "1046:44",
7813 | "src_char": "1046:44"
7814 | },
7815 | {
7816 | "contract_path": "src/ArbitraryTransferFrom.sol",
7817 | "line_no": 54,
7818 | "src": "1699:44",
7819 | "src_char": "1699:44"
7820 | },
7821 | {
7822 | "contract_path": "src/DeprecatedOZFunctions.sol",
7823 | "line_no": 32,
7824 | "src": "1062:29",
7825 | "src_char": "1062:29"
7826 | },
7827 | {
7828 | "contract_path": "src/DeprecatedOZFunctions.sol",
7829 | "line_no": 47,
7830 | "src": "1598:35",
7831 | "src_char": "1598:35"
7832 | },
7833 | {
7834 | "contract_path": "src/EnumerableSetIteration.sol",
7835 | "line_no": 17,
7836 | "src": "662:27",
7837 | "src_char": "662:27"
7838 | },
7839 | {
7840 | "contract_path": "src/EnumerableSetIteration.sol",
7841 | "line_no": 20,
7842 | "src": "770:28",
7843 | "src_char": "770:28"
7844 | },
7845 | {
7846 | "contract_path": "src/EnumerableSetIteration.sol",
7847 | "line_no": 23,
7848 | "src": "875:21",
7849 | "src_char": "875:21"
7850 | },
7851 | {
7852 | "contract_path": "src/EnumerableSetIteration.sol",
7853 | "line_no": 31,
7854 | "src": "1105:30",
7855 | "src_char": "1105:30"
7856 | },
7857 | {
7858 | "contract_path": "src/EnumerableSetIteration.sol",
7859 | "line_no": 40,
7860 | "src": "1350:30",
7861 | "src_char": "1350:30"
7862 | },
7863 | {
7864 | "contract_path": "src/EnumerableSetIteration.sol",
7865 | "line_no": 50,
7866 | "src": "1586:30",
7867 | "src_char": "1586:30"
7868 | },
7869 | {
7870 | "contract_path": "src/EnumerableSetIteration.sol",
7871 | "line_no": 59,
7872 | "src": "1865:30",
7873 | "src_char": "1865:30"
7874 | },
7875 | {
7876 | "contract_path": "src/EnumerableSetIteration.sol",
7877 | "line_no": 67,
7878 | "src": "2083:24",
7879 | "src_char": "2083:24"
7880 | },
7881 | {
7882 | "contract_path": "src/OutOfOrderRetryable.sol",
7883 | "line_no": 65,
7884 | "src": "1705:390",
7885 | "src_char": "1705:390"
7886 | },
7887 | {
7888 | "contract_path": "src/OutOfOrderRetryable.sol",
7889 | "line_no": 77,
7890 | "src": "2129:379",
7891 | "src_char": "2129:379"
7892 | },
7893 | {
7894 | "contract_path": "src/OutOfOrderRetryable.sol",
7895 | "line_no": 92,
7896 | "src": "2624:390",
7897 | "src_char": "2624:390"
7898 | },
7899 | {
7900 | "contract_path": "src/OutOfOrderRetryable.sol",
7901 | "line_no": 107,
7902 | "src": "3107:379",
7903 | "src_char": "3107:379"
7904 | },
7905 | {
7906 | "contract_path": "src/OutOfOrderRetryable.sol",
7907 | "line_no": 129,
7908 | "src": "3777:208",
7909 | "src_char": "3777:208"
7910 | },
7911 | {
7912 | "contract_path": "src/OutOfOrderRetryable.sol",
7913 | "line_no": 151,
7914 | "src": "4337:261",
7915 | "src_char": "4337:261"
7916 | },
7917 | {
7918 | "contract_path": "src/StateVariablesManipulation.sol",
7919 | "line_no": 142,
7920 | "src": "4146:20",
7921 | "src_char": "4146:20"
7922 | },
7923 | {
7924 | "contract_path": "src/Trump.sol",
7925 | "line_no": 344,
7926 | "src": "11990:71",
7927 | "src_char": "11990:71"
7928 | },
7929 | {
7930 | "contract_path": "src/UncheckedReturn.sol",
7931 | "line_no": 14,
7932 | "src": "279:5",
7933 | "src_char": "279:5"
7934 | },
7935 | {
7936 | "contract_path": "src/UncheckedReturn.sol",
7937 | "line_no": 27,
7938 | "src": "575:47",
7939 | "src_char": "575:47"
7940 | },
7941 | {
7942 | "contract_path": "src/router/ExternalCalls.sol",
7943 | "line_no": 27,
7944 | "src": "594:7",
7945 | "src_char": "594:7"
7946 | },
7947 | {
7948 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
7949 | "line_no": 23,
7950 | "src": "670:83",
7951 | "src_char": "670:83"
7952 | },
7953 | {
7954 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
7955 | "line_no": 24,
7956 | "src": "763:83",
7957 | "src_char": "763:83"
7958 | },
7959 | {
7960 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
7961 | "line_no": 25,
7962 | "src": "856:70",
7963 | "src_char": "856:70"
7964 | },
7965 | {
7966 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
7967 | "line_no": 26,
7968 | "src": "936:80",
7969 | "src_char": "936:80"
7970 | },
7971 | {
7972 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
7973 | "line_no": 27,
7974 | "src": "1026:80",
7975 | "src_char": "1026:80"
7976 | },
7977 | {
7978 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
7979 | "line_no": 46,
7980 | "src": "1933:76",
7981 | "src_char": "1933:76"
7982 | },
7983 | {
7984 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
7985 | "line_no": 47,
7986 | "src": "2019:76",
7987 | "src_char": "2019:76"
7988 | },
7989 | {
7990 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
7991 | "line_no": 48,
7992 | "src": "2105:63",
7993 | "src_char": "2105:63"
7994 | },
7995 | {
7996 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
7997 | "line_no": 49,
7998 | "src": "2178:73",
7999 | "src_char": "2178:73"
8000 | },
8001 | {
8002 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
8003 | "line_no": 50,
8004 | "src": "2261:73",
8005 | "src_char": "2261:73"
8006 | },
8007 | {
8008 | "contract_path": "src/uniswap/UniswapV2Swapper.sol",
8009 | "line_no": 51,
8010 | "src": "2344:60",
8011 | "src_char": "2344:60"
8012 | }
8013 | ]
8014 | }
8015 | ]
8016 | },
8017 | "detectors_used": [
8018 | "delegatecall-in-loop",
8019 | "centralization-risk",
8020 | "solmate-safe-transfer-lib",
8021 | "abi-encode-packed-hash-collision",
8022 | "ecrecover",
8023 | "deprecated-oz-function",
8024 | "unsafe-erc20-operation",
8025 | "unspecific-solidity-pragma",
8026 | "state-no-address-check",
8027 | "unused-public-function",
8028 | "literal-instead-of-constant",
8029 | "empty-require-revert",
8030 | "non-reentrant-not-first",
8031 | "block-timestamp-deadline",
8032 | "unsafe-oz-erc721-mint",
8033 | "push-zero-opcode",
8034 | "arbitrary-transfer-from",
8035 | "modifier-used-only-once",
8036 | "empty-block",
8037 | "large-numeric-literal",
8038 | "internal-function-used-once",
8039 | "todo",
8040 | "inconsistent-type-names",
8041 | "unprotected-initializer",
8042 | "unused-error",
8043 | "require-revert-in-loop",
8044 | "division-before-multiplication",
8045 | "unsafe-casting",
8046 | "enumerable-loop-removal",
8047 | "experimental-encoder",
8048 | "incorrect-shift-order",
8049 | "storage-array-memory-edit",
8050 | "multiple-constructors",
8051 | "reused-contract-name",
8052 | "nested-struct-in-mapping",
8053 | "selfdestruct",
8054 | "dynamic-array-length-assignment",
8055 | "incorrect-caret-operator",
8056 | "yul-return",
8057 | "state-variable-shadowing",
8058 | "unchecked-send",
8059 | "misused-boolean",
8060 | "eth-send-unchecked-address",
8061 | "delegate-call-unchecked-address",
8062 | "tautological-compare",
8063 | "rtlo",
8064 | "dangerous-unary-operator",
8065 | "tautology-or-contradiction",
8066 | "strict-equality-contract-balance",
8067 | "signed-integer-storage-array",
8068 | "redundant-statement",
8069 | "state-variable-read-external",
8070 | "weak-randomness",
8071 | "pre-declared-local-variable-usage",
8072 | "delete-nested-mapping",
8073 | "unused-state-variable",
8074 | "constant-function-contains-assembly",
8075 | "boolean-equality",
8076 | "tx-origin-used-for-auth",
8077 | "msg-value-in-loop",
8078 | "contract-locks-ether",
8079 | "local-variable-shadowing",
8080 | "incorrect-erc721-interface",
8081 | "incorrect-erc20-interface",
8082 | "uninitialized-local-variable",
8083 | "return-bomb",
8084 | "out-of-order-retryable",
8085 | "function-initializing-state",
8086 | "dead-code",
8087 | "storage-array-length-not-cached",
8088 | "assert-state-change",
8089 | "costly-loop",
8090 | "constant-function-changes-state",
8091 | "builtin-symbol-shadowing",
8092 | "void-constructor",
8093 | "function-selector-collision",
8094 | "missing-inheritance",
8095 | "unused-import",
8096 | "unchecked-low-level-call",
8097 | "function-pointer-in-constructor",
8098 | "state-variable-could-be-constant",
8099 | "state-change-without-event",
8100 | "state-variable-could-be-immutable",
8101 | "multiple-placeholders",
8102 | "reentrancy-state-change",
8103 | "incorrect-use-of-modifier",
8104 | "unchecked-return"
8105 | ]
8106 | }
```