[INFO] fetching crate solana_fender 0.4.2...
[INFO] building solana_fender-0.4.2 against master#ad85bc524b1ad696e42061ad8338d382dffbdbe5 for pr-146237-1
[INFO] extracting crate solana_fender 0.4.2 into /workspace/builds/worker-0-tc1/source
[INFO] started tweaking crates.io crate solana_fender 0.4.2
[INFO] finished tweaking crates.io crate solana_fender 0.4.2
[INFO] tweaked toml for crates.io crate solana_fender 0.4.2 written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate solana_fender 0.4.2 on toolchain ad85bc524b1ad696e42061ad8338d382dffbdbe5
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate solana_fender 0.4.2 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serde v1.0.218
[INFO] [stderr]   Downloaded serde_derive v1.0.218
[INFO] [stderr]   Downloaded clap_derive v4.5.28
[INFO] [stderr]   Downloaded anchor-syn v0.29.0
[INFO] [stderr]   Downloaded clap v4.5.30
[INFO] [stderr]   Downloaded clap_builder v4.5.30
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a0a9ae95eb86d4876aa57fc5a45043593296885eba0c8c55f569c30645d2bd32
[INFO] running `Command { std: "docker" "start" "-a" "a0a9ae95eb86d4876aa57fc5a45043593296885eba0c8c55f569c30645d2bd32", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a0a9ae95eb86d4876aa57fc5a45043593296885eba0c8c55f569c30645d2bd32", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a0a9ae95eb86d4876aa57fc5a45043593296885eba0c8c55f569c30645d2bd32", kill_on_drop: false }`
[INFO] [stdout] a0a9ae95eb86d4876aa57fc5a45043593296885eba0c8c55f569c30645d2bd32
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 71a8fda647d13f52782a2ddde7c74c59c73d81a05dcae8fad4e72175b65763f3
[INFO] running `Command { std: "docker" "start" "-a" "71a8fda647d13f52782a2ddde7c74c59c73d81a05dcae8fad4e72175b65763f3", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.17
[INFO] [stderr]    Compiling proc-macro2 v1.0.93
[INFO] [stderr]    Compiling serde v1.0.218
[INFO] [stderr]    Compiling anyhow v1.0.96
[INFO] [stderr]    Compiling serde_json v1.0.139
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling anstream v0.6.18
[INFO] [stderr]    Compiling ryu v1.0.19
[INFO] [stderr]    Compiling clap_lex v0.7.4
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling bs58 v0.5.1
[INFO] [stderr]    Compiling colored v2.2.0
[INFO] [stderr]    Compiling sha2 v0.10.8
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling clap_builder v4.5.30
[INFO] [stderr]    Compiling heck v0.3.3
[INFO] [stderr]    Compiling quote v1.0.38
[INFO] [stderr]    Compiling syn v2.0.98
[INFO] [stderr]    Compiling serde_derive v1.0.218
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling clap_derive v4.5.28
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling clap v4.5.30
[INFO] [stderr]    Compiling anchor-syn v0.29.0
[INFO] [stderr]    Compiling solana_fender v0.4.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `High`, `Medium`, and `Low` are never constructed
[INFO] [stdout]   --> src/analyzers/mod.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub enum Certainty {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 59 |     High,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 60 |     Medium,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 61 |     Low,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Certainty` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MissingOwnerCheck` is never constructed
[INFO] [stdout]  --> src/analyzers/missing_owner.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct MissingOwnerCheck;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OwnerCheckVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/missing_owner.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct OwnerCheckVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReentrancyAnalyzer` is never constructed
[INFO] [stdout]  --> src/analyzers/reentrancy.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ReentrancyAnalyzer;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReentrancyVisitor` is never constructed
[INFO] [stdout]  --> src/analyzers/reentrancy.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct ReentrancyVisitor {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_cpi_calls` is never used
[INFO] [stdout]   --> src/analyzers/reentrancy.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn contains_cpi_calls(block: &syn::Block) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_reentry_protection` is never used
[INFO] [stdout]   --> src/analyzers/reentrancy.rs:71:4
[INFO] [stdout]    |
[INFO] [stdout] 71 | fn has_reentry_protection(attrs: &[Attribute]) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UnauthorizedAccessAnalyzer` is never constructed
[INFO] [stdout]  --> src/analyzers/unauthorized_access.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct UnauthorizedAccessAnalyzer;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuthorizationVisitor` is never constructed
[INFO] [stdout]  --> src/analyzers/unauthorized_access.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | struct AuthorizationVisitor {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_authority_check` is never used
[INFO] [stdout]    --> src/analyzers/unauthorized_access.rs:172:4
[INFO] [stdout]     |
[INFO] [stdout] 172 | fn has_authority_check(block: &syn::Block) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_signer_type` is never used
[INFO] [stdout]    --> src/analyzers/unauthorized_access.rs:232:4
[INFO] [stdout]     |
[INFO] [stdout] 232 | fn is_signer_type(ty: &Type) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_struct_name_from_context` is never used
[INFO] [stdout]    --> src/analyzers/unauthorized_access.rs:253:4
[INFO] [stdout]     |
[INFO] [stdout] 253 | fn extract_struct_name_from_context(type_str: &str) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IntegerOverflowAnalyzer` is never constructed
[INFO] [stdout]  --> src/analyzers/integer_overflow.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct IntegerOverflowAnalyzer;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OverflowVisitor` is never constructed
[INFO] [stdout]  --> src/analyzers/integer_overflow.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct OverflowVisitor {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_arithmetic_op` is never used
[INFO] [stdout]   --> src/analyzers/integer_overflow.rs:37:4
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn is_arithmetic_op(op: &BinOp) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_checked_arithmetic` is never used
[INFO] [stdout]   --> src/analyzers/integer_overflow.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn is_checked_arithmetic(expr: &syn::ExprBinary) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `expr_to_string` is never used
[INFO] [stdout]   --> src/analyzers/integer_overflow.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn expr_to_string(expr: &syn::ExprBinary) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TypeCosplay` is never constructed
[INFO] [stdout]  --> src/analyzers/type_cosplay.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct TypeCosplay;
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TypeCosplayVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/type_cosplay.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct TypeCosplayVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_vulnerabilities` is never used
[INFO] [stdout]   --> src/analyzers/type_cosplay.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | impl<'a> TypeCosplayVisitor<'a> {
[INFO] [stdout]    | ------------------------------- method in this implementation
[INFO] [stdout] 53 |     fn analyze_vulnerabilities(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `check_account_data_usage` is never used
[INFO] [stdout]    --> src/analyzers/type_cosplay.rs:300:8
[INFO] [stdout]     |
[INFO] [stdout] 299 | impl<'a> TypeCosplayVisitor<'a> {
[INFO] [stdout]     | ------------------------------- method in this implementation
[INFO] [stdout] 300 |     fn check_account_data_usage(&mut self, expr: &syn::Expr, span: proc_macro2::Span) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PdaSharing` is never constructed
[INFO] [stdout]  --> src/analyzers/pda_sharing.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct PdaSharing;
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PdaSharingVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/pda_sharing.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct PdaSharingVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_seed_array` is never used
[INFO] [stdout]    --> src/analyzers/pda_sharing.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | impl<'a> PdaSharingVisitor<'a> {
[INFO] [stdout]     | ------------------------------ method in this implementation
[INFO] [stdout] 112 |     fn analyze_seed_array(&mut self, array: &ExprArray) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InvalidSysvarAccounts` is never constructed
[INFO] [stdout]  --> src/analyzers/invalid_sysvar_accounts.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct InvalidSysvarAccounts;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SysvarAccountsVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/invalid_sysvar_accounts.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct SysvarAccountsVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClosingAccounts` is never constructed
[INFO] [stdout]  --> src/analyzers/closing_accounts.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ClosingAccounts;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClosingAccountsVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/closing_accounts.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | struct ClosingAccountsVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MissingBumpSeedCanonicalization` is never constructed
[INFO] [stdout]  --> src/analyzers/bump_seed_canonicalization.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct MissingBumpSeedCanonicalization;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BumpSeedVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/bump_seed_canonicalization.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct BumpSeedVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DuplicateMutableAccounts` is never constructed
[INFO] [stdout]  --> src/analyzers/duplicate_mutable_accounts.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct DuplicateMutableAccounts;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountStructCollector` is never constructed
[INFO] [stdout]   --> src/analyzers/duplicate_mutable_accounts.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | struct AccountStructCollector<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DuplicateMutableAccountsVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/duplicate_mutable_accounts.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | struct DuplicateMutableAccountsVisitor {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_context_struct_for_expr` is never used
[INFO] [stdout]    --> src/analyzers/duplicate_mutable_accounts.rs:288:8
[INFO] [stdout]     |
[INFO] [stdout] 286 | impl DuplicateMutableAccountsVisitor {
[INFO] [stdout]     | ------------------------------------ method in this implementation
[INFO] [stdout] 287 |     // Helper method to find the context struct for an expression
[INFO] [stdout] 288 |     fn find_context_struct_for_expr(&self, _expr: &ExprBinary) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ArbitraryCpi` is never constructed
[INFO] [stdout]  --> src/analyzers/arbitrary_cpi.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ArbitraryCpi;
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ArbitraryCpiVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/arbitrary_cpi.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct ArbitraryCpiVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountInitialization` is never constructed
[INFO] [stdout]  --> src/analyzers/account_initialization.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct AccountInitialization;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_recommended_implementation` is never used
[INFO] [stdout]   --> src/analyzers/account_initialization.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn is_recommended_implementation(path: &Path) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InitStructsVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/account_initialization.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct InitStructsVisitor {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountInitializationVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/account_initialization.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | struct AccountInitializationVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_context_struct_name` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:264:4
[INFO] [stdout]     |
[INFO] [stdout] 264 | fn extract_context_struct_name(param_type: &str) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_for_anchor_init_attributes` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:275:4
[INFO] [stdout]     |
[INFO] [stdout] 275 | fn check_for_anchor_init_attributes(func: &ItemFn, has_init: &mut bool) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_initialization_function` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:295:4
[INFO] [stdout]     |
[INFO] [stdout] 295 | fn is_initialization_function(func: &ItemFn) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_initialization_pattern` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:309:4
[INFO] [stdout]     |
[INFO] [stdout] 309 | fn contains_initialization_pattern(func: &ItemFn) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_deserialization_method` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:322:4
[INFO] [stdout]     |
[INFO] [stdout] 322 | fn is_deserialization_method(method_name: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_reinitialization_check` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:331:4
[INFO] [stdout]     |
[INFO] [stdout] 331 | fn contains_reinitialization_check(func: &ItemFn) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_anchor_account_attribute` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:349:4
[INFO] [stdout]     |
[INFO] [stdout] 349 | fn has_anchor_account_attribute(func: &ItemFn) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountDataMatching` is never constructed
[INFO] [stdout]  --> src/analyzers/account_data_matching.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct AccountDataMatching;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountDataMatchingVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/account_data_matching.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct AccountDataMatchingVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `path_to_string` is never used
[INFO] [stdout]    --> src/analyzers/account_data_matching.rs:154:4
[INFO] [stdout]     |
[INFO] [stdout] 154 | fn path_to_string(path: &syn::Path) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_owner_check` is never used
[INFO] [stdout]    --> src/analyzers/account_data_matching.rs:162:4
[INFO] [stdout]     |
[INFO] [stdout] 162 | fn is_owner_check(left: &Expr, right: &Expr) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_authority_key` is never used
[INFO] [stdout]    --> src/analyzers/account_data_matching.rs:177:4
[INFO] [stdout]     |
[INFO] [stdout] 177 | fn contains_authority_key(expr: &Expr) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_token_owner` is never used
[INFO] [stdout]    --> src/analyzers/account_data_matching.rs:198:4
[INFO] [stdout]     |
[INFO] [stdout] 198 | fn contains_token_owner(expr: &Expr) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `asts` and `root_path` are never read
[INFO] [stdout]   --> src/models/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Program {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 14 |     pub asts: HashMap<PathBuf, File>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 15 |     pub root_path: std::path::PathBuf,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Program` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_file` is never used
[INFO] [stdout]    --> src/models/mod.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl Program {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn from_file(file_path: PathBuf) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarkdownDocument` is never constructed
[INFO] [stdout]  --> src/models/markdown.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct MarkdownDocument {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarkdownSection` is never constructed
[INFO] [stdout]   --> src/models/markdown.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct MarkdownSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarkdownTable` is never constructed
[INFO] [stdout]   --> src/models/markdown.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct MarkdownTable {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_section`, `to_string`, and `save_to_file` are never used
[INFO] [stdout]   --> src/models/markdown.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl MarkdownDocument {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 26 |     /// Create a new markdown document with a title
[INFO] [stdout] 27 |     pub fn new(title: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn add_section(&mut self, section: MarkdownSection) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn to_string(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn save_to_file(&self, path: &Path) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_content`, `add_code_block`, `add_subsection`, and `to_string` are never used
[INFO] [stdout]   --> src/models/markdown.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl MarkdownSection {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 59 |     /// Create a new markdown section with a heading
[INFO] [stdout] 60 |     pub fn new(heading: &str, level: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn add_content(&mut self, content: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn add_code_block(&mut self, code: &str, language: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn add_subsection(&mut self, subsection: MarkdownSection) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub fn to_string(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_row`, and `to_string` are never used
[INFO] [stdout]    --> src/models/markdown.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | impl MarkdownTable {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 108 |     /// Create a new markdown table with headers
[INFO] [stdout] 109 |     pub fn new(headers: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn add_row(&mut self, row: Vec<String>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_analysis_report` is never used
[INFO] [stdout]    --> src/models/markdown.rs:160:8
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub fn create_analysis_report(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Finding` is never constructed
[INFO] [stdout]    --> src/models/markdown.rs:260:12
[INFO] [stdout]     |
[INFO] [stdout] 260 | pub struct Finding {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/models/markdown.rs:270:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | impl Finding {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] 270 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 35.82s
[INFO] running `Command { std: "docker" "inspect" "71a8fda647d13f52782a2ddde7c74c59c73d81a05dcae8fad4e72175b65763f3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "71a8fda647d13f52782a2ddde7c74c59c73d81a05dcae8fad4e72175b65763f3", kill_on_drop: false }`
[INFO] [stdout] 71a8fda647d13f52782a2ddde7c74c59c73d81a05dcae8fad4e72175b65763f3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0568097fbf1b5c9d43ea45dfc7171277a9f34be093bef350b3943845c18094d8
[INFO] running `Command { std: "docker" "start" "-a" "0568097fbf1b5c9d43ea45dfc7171277a9f34be093bef350b3943845c18094d8", kill_on_drop: false }`
[INFO] [stderr]    Compiling solana_fender v0.4.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `High`, `Medium`, and `Low` are never constructed
[INFO] [stdout]   --> src/analyzers/mod.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub enum Certainty {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 59 |     High,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 60 |     Medium,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 61 |     Low,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Certainty` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MissingOwnerCheck` is never constructed
[INFO] [stdout]  --> src/analyzers/missing_owner.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct MissingOwnerCheck;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OwnerCheckVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/missing_owner.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct OwnerCheckVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReentrancyAnalyzer` is never constructed
[INFO] [stdout]  --> src/analyzers/reentrancy.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ReentrancyAnalyzer;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReentrancyVisitor` is never constructed
[INFO] [stdout]  --> src/analyzers/reentrancy.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct ReentrancyVisitor {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_cpi_calls` is never used
[INFO] [stdout]   --> src/analyzers/reentrancy.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn contains_cpi_calls(block: &syn::Block) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_reentry_protection` is never used
[INFO] [stdout]   --> src/analyzers/reentrancy.rs:71:4
[INFO] [stdout]    |
[INFO] [stdout] 71 | fn has_reentry_protection(attrs: &[Attribute]) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UnauthorizedAccessAnalyzer` is never constructed
[INFO] [stdout]  --> src/analyzers/unauthorized_access.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct UnauthorizedAccessAnalyzer;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuthorizationVisitor` is never constructed
[INFO] [stdout]  --> src/analyzers/unauthorized_access.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | struct AuthorizationVisitor {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_authority_check` is never used
[INFO] [stdout]    --> src/analyzers/unauthorized_access.rs:172:4
[INFO] [stdout]     |
[INFO] [stdout] 172 | fn has_authority_check(block: &syn::Block) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_signer_type` is never used
[INFO] [stdout]    --> src/analyzers/unauthorized_access.rs:232:4
[INFO] [stdout]     |
[INFO] [stdout] 232 | fn is_signer_type(ty: &Type) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_struct_name_from_context` is never used
[INFO] [stdout]    --> src/analyzers/unauthorized_access.rs:253:4
[INFO] [stdout]     |
[INFO] [stdout] 253 | fn extract_struct_name_from_context(type_str: &str) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IntegerOverflowAnalyzer` is never constructed
[INFO] [stdout]  --> src/analyzers/integer_overflow.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct IntegerOverflowAnalyzer;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OverflowVisitor` is never constructed
[INFO] [stdout]  --> src/analyzers/integer_overflow.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct OverflowVisitor {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_arithmetic_op` is never used
[INFO] [stdout]   --> src/analyzers/integer_overflow.rs:37:4
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn is_arithmetic_op(op: &BinOp) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_checked_arithmetic` is never used
[INFO] [stdout]   --> src/analyzers/integer_overflow.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn is_checked_arithmetic(expr: &syn::ExprBinary) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `expr_to_string` is never used
[INFO] [stdout]   --> src/analyzers/integer_overflow.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn expr_to_string(expr: &syn::ExprBinary) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TypeCosplay` is never constructed
[INFO] [stdout]  --> src/analyzers/type_cosplay.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct TypeCosplay;
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TypeCosplayVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/type_cosplay.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct TypeCosplayVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_vulnerabilities` is never used
[INFO] [stdout]   --> src/analyzers/type_cosplay.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | impl<'a> TypeCosplayVisitor<'a> {
[INFO] [stdout]    | ------------------------------- method in this implementation
[INFO] [stdout] 53 |     fn analyze_vulnerabilities(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `check_account_data_usage` is never used
[INFO] [stdout]    --> src/analyzers/type_cosplay.rs:300:8
[INFO] [stdout]     |
[INFO] [stdout] 299 | impl<'a> TypeCosplayVisitor<'a> {
[INFO] [stdout]     | ------------------------------- method in this implementation
[INFO] [stdout] 300 |     fn check_account_data_usage(&mut self, expr: &syn::Expr, span: proc_macro2::Span) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PdaSharing` is never constructed
[INFO] [stdout]  --> src/analyzers/pda_sharing.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct PdaSharing;
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PdaSharingVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/pda_sharing.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct PdaSharingVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `analyze_seed_array` is never used
[INFO] [stdout]    --> src/analyzers/pda_sharing.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | impl<'a> PdaSharingVisitor<'a> {
[INFO] [stdout]     | ------------------------------ method in this implementation
[INFO] [stdout] 112 |     fn analyze_seed_array(&mut self, array: &ExprArray) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InvalidSysvarAccounts` is never constructed
[INFO] [stdout]  --> src/analyzers/invalid_sysvar_accounts.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct InvalidSysvarAccounts;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SysvarAccountsVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/invalid_sysvar_accounts.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct SysvarAccountsVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClosingAccounts` is never constructed
[INFO] [stdout]  --> src/analyzers/closing_accounts.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ClosingAccounts;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClosingAccountsVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/closing_accounts.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | struct ClosingAccountsVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MissingBumpSeedCanonicalization` is never constructed
[INFO] [stdout]  --> src/analyzers/bump_seed_canonicalization.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct MissingBumpSeedCanonicalization;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BumpSeedVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/bump_seed_canonicalization.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct BumpSeedVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DuplicateMutableAccounts` is never constructed
[INFO] [stdout]  --> src/analyzers/duplicate_mutable_accounts.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct DuplicateMutableAccounts;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountStructCollector` is never constructed
[INFO] [stdout]   --> src/analyzers/duplicate_mutable_accounts.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | struct AccountStructCollector<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DuplicateMutableAccountsVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/duplicate_mutable_accounts.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | struct DuplicateMutableAccountsVisitor {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_context_struct_for_expr` is never used
[INFO] [stdout]    --> src/analyzers/duplicate_mutable_accounts.rs:288:8
[INFO] [stdout]     |
[INFO] [stdout] 286 | impl DuplicateMutableAccountsVisitor {
[INFO] [stdout]     | ------------------------------------ method in this implementation
[INFO] [stdout] 287 |     // Helper method to find the context struct for an expression
[INFO] [stdout] 288 |     fn find_context_struct_for_expr(&self, _expr: &ExprBinary) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ArbitraryCpi` is never constructed
[INFO] [stdout]  --> src/analyzers/arbitrary_cpi.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ArbitraryCpi;
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ArbitraryCpiVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/arbitrary_cpi.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct ArbitraryCpiVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountInitialization` is never constructed
[INFO] [stdout]  --> src/analyzers/account_initialization.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct AccountInitialization;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_recommended_implementation` is never used
[INFO] [stdout]   --> src/analyzers/account_initialization.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn is_recommended_implementation(path: &Path) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InitStructsVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/account_initialization.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct InitStructsVisitor {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountInitializationVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/account_initialization.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | struct AccountInitializationVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_context_struct_name` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:264:4
[INFO] [stdout]     |
[INFO] [stdout] 264 | fn extract_context_struct_name(param_type: &str) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_for_anchor_init_attributes` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:275:4
[INFO] [stdout]     |
[INFO] [stdout] 275 | fn check_for_anchor_init_attributes(func: &ItemFn, has_init: &mut bool) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_initialization_function` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:295:4
[INFO] [stdout]     |
[INFO] [stdout] 295 | fn is_initialization_function(func: &ItemFn) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_initialization_pattern` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:309:4
[INFO] [stdout]     |
[INFO] [stdout] 309 | fn contains_initialization_pattern(func: &ItemFn) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_deserialization_method` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:322:4
[INFO] [stdout]     |
[INFO] [stdout] 322 | fn is_deserialization_method(method_name: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_reinitialization_check` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:331:4
[INFO] [stdout]     |
[INFO] [stdout] 331 | fn contains_reinitialization_check(func: &ItemFn) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_anchor_account_attribute` is never used
[INFO] [stdout]    --> src/analyzers/account_initialization.rs:349:4
[INFO] [stdout]     |
[INFO] [stdout] 349 | fn has_anchor_account_attribute(func: &ItemFn) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountDataMatching` is never constructed
[INFO] [stdout]  --> src/analyzers/account_data_matching.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct AccountDataMatching;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountDataMatchingVisitor` is never constructed
[INFO] [stdout]   --> src/analyzers/account_data_matching.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct AccountDataMatchingVisitor<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `path_to_string` is never used
[INFO] [stdout]    --> src/analyzers/account_data_matching.rs:154:4
[INFO] [stdout]     |
[INFO] [stdout] 154 | fn path_to_string(path: &syn::Path) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_owner_check` is never used
[INFO] [stdout]    --> src/analyzers/account_data_matching.rs:162:4
[INFO] [stdout]     |
[INFO] [stdout] 162 | fn is_owner_check(left: &Expr, right: &Expr) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_authority_key` is never used
[INFO] [stdout]    --> src/analyzers/account_data_matching.rs:177:4
[INFO] [stdout]     |
[INFO] [stdout] 177 | fn contains_authority_key(expr: &Expr) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_token_owner` is never used
[INFO] [stdout]    --> src/analyzers/account_data_matching.rs:198:4
[INFO] [stdout]     |
[INFO] [stdout] 198 | fn contains_token_owner(expr: &Expr) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `asts` and `root_path` are never read
[INFO] [stdout]   --> src/models/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Program {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 14 |     pub asts: HashMap<PathBuf, File>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 15 |     pub root_path: std::path::PathBuf,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Program` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_file` is never used
[INFO] [stdout]    --> src/models/mod.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl Program {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn from_file(file_path: PathBuf) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarkdownDocument` is never constructed
[INFO] [stdout]  --> src/models/markdown.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct MarkdownDocument {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarkdownSection` is never constructed
[INFO] [stdout]   --> src/models/markdown.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct MarkdownSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarkdownTable` is never constructed
[INFO] [stdout]   --> src/models/markdown.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct MarkdownTable {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_section`, `to_string`, and `save_to_file` are never used
[INFO] [stdout]   --> src/models/markdown.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl MarkdownDocument {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 26 |     /// Create a new markdown document with a title
[INFO] [stdout] 27 |     pub fn new(title: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn add_section(&mut self, section: MarkdownSection) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn to_string(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn save_to_file(&self, path: &Path) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_content`, `add_code_block`, `add_subsection`, and `to_string` are never used
[INFO] [stdout]   --> src/models/markdown.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl MarkdownSection {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 59 |     /// Create a new markdown section with a heading
[INFO] [stdout] 60 |     pub fn new(heading: &str, level: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn add_content(&mut self, content: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn add_code_block(&mut self, code: &str, language: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn add_subsection(&mut self, subsection: MarkdownSection) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub fn to_string(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_row`, and `to_string` are never used
[INFO] [stdout]    --> src/models/markdown.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | impl MarkdownTable {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 108 |     /// Create a new markdown table with headers
[INFO] [stdout] 109 |     pub fn new(headers: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn add_row(&mut self, row: Vec<String>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_analysis_report` is never used
[INFO] [stdout]    --> src/models/markdown.rs:160:8
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub fn create_analysis_report(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Finding` is never constructed
[INFO] [stdout]    --> src/models/markdown.rs:260:12
[INFO] [stdout]     |
[INFO] [stdout] 260 | pub struct Finding {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/models/markdown.rs:270:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | impl Finding {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] 270 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.25s
[INFO] running `Command { std: "docker" "inspect" "0568097fbf1b5c9d43ea45dfc7171277a9f34be093bef350b3943845c18094d8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0568097fbf1b5c9d43ea45dfc7171277a9f34be093bef350b3943845c18094d8", kill_on_drop: false }`
[INFO] [stdout] 0568097fbf1b5c9d43ea45dfc7171277a9f34be093bef350b3943845c18094d8
