[INFO] cloning repository https://github.com/honey-guard/solana-fender
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/honey-guard/solana-fender" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhoney-guard%2Fsolana-fender", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhoney-guard%2Fsolana-fender'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 9d6c21381899bab32a0ea3fc23194827b01b8dbf
[INFO] checking honey-guard/solana-fender against f1c52bf13c990fc425c542cc90a0396a87db24ba for pr-164812
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhoney-guard%2Fsolana-fender" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/honey-guard/solana-fender
[INFO] finished tweaking git repo https://github.com/honey-guard/solana-fender
[INFO] tweaked toml for git repo https://github.com/honey-guard/solana-fender written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/honey-guard/solana-fender on toolchain f1c52bf13c990fc425c542cc90a0396a87db24ba
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f1c52bf13c990fc425c542cc90a0396a87db24ba" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/honey-guard/solana-fender 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" "+f1c52bf13c990fc425c542cc90a0396a87db24ba" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:c0af3998e971868164375a7dfb646c9933ddd1a3bdb00fa2041266763dc1eeab" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 28e6471e40c7e19f3d5fa7a2a792c07e02cd02ab6dd4c700969322b760a1497e
[INFO] running `Command { std: "docker" "start" "28e6471e40c7e19f3d5fa7a2a792c07e02cd02ab6dd4c700969322b760a1497e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "28e6471e40c7e19f3d5fa7a2a792c07e02cd02ab6dd4c700969322b760a1497e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "28e6471e40c7e19f3d5fa7a2a792c07e02cd02ab6dd4c700969322b760a1497e" "/opt/rustwide/cargo-home/bin/cargo" "+f1c52bf13c990fc425c542cc90a0396a87db24ba" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "28e6471e40c7e19f3d5fa7a2a792c07e02cd02ab6dd4c700969322b760a1497e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "28e6471e40c7e19f3d5fa7a2a792c07e02cd02ab6dd4c700969322b760a1497e" "/opt/rustwide/cargo-home/bin/cargo" "+f1c52bf13c990fc425c542cc90a0396a87db24ba" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.93
[INFO] [stderr]    Compiling unicode-ident v1.0.17
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]    Compiling serde v1.0.218
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.1
[INFO] [stderr]     Checking anstyle-query v1.1.2
[INFO] [stderr]     Checking anstyle v1.0.10
[INFO] [stderr]     Checking colorchoice v1.0.3
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling serde_json v1.0.139
[INFO] [stderr]    Compiling anyhow v1.0.96
[INFO] [stderr]     Checking anstyle-parse v0.2.6
[INFO] [stderr]     Checking itoa v1.0.14
[INFO] [stderr]     Checking ryu v1.0.19
[INFO] [stderr]     Checking cfg-if v1.0.0
[INFO] [stderr]     Checking memchr v2.7.4
[INFO] [stderr]     Checking clap_lex v0.7.4
[INFO] [stderr]     Checking heck v0.3.3
[INFO] [stderr]     Checking bs58 v0.5.1
[INFO] [stderr]     Checking same-file v1.0.6
[INFO] [stderr]     Checking colored v2.2.0
[INFO] [stderr]     Checking walkdir v2.5.0
[INFO] [stderr]     Checking anstream v0.6.18
[INFO] [stderr]     Checking clap_builder v4.5.30
[INFO] [stderr]    Compiling quote v1.0.38
[INFO] [stderr]    Compiling syn v2.0.98
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking sha2 v0.10.8
[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]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking clap v4.5.30
[INFO] [stderr]     Checking anchor-syn v0.29.0
[INFO] [stderr]     Checking solana_fender v0.5.4 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> src/analyzers/pda_sharing.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |         let code = r#"
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `findings`
[INFO] [stdout]    --> src/analyzers/invalid_sysvar_accounts.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |         let findings = analyzer.analyze(&program).unwrap();
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_findings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `findings`
[INFO] [stdout]    --> src/analyzers/closing_accounts.rs:486:13
[INFO] [stdout]     |
[INFO] [stdout] 486 |         let findings = analyzer.analyze(&program).unwrap();
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_findings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `findings`
[INFO] [stdout]    --> src/analyzers/closing_accounts.rs:547:13
[INFO] [stdout]     |
[INFO] [stdout] 547 |         let findings = analyzer.analyze(&program).unwrap();
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_findings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code_secure`
[INFO] [stdout]    --> src/analyzers/closing_accounts.rs:578:13
[INFO] [stdout]     |
[INFO] [stdout] 578 |         let code_secure = r#"
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_code_secure`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `struct_name` is never read
[INFO] [stdout]   --> src/analyzers/initialization_frontrunning.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | struct VulnerableStructInfo {
[INFO] [stdout]    |        -------------------- field in this struct
[INFO] [stdout] 55 |     struct_name: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VulnerableStructInfo` has a derived impl for the trait `Clone`, but this is 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: field `file_path` is never read
[INFO] [stdout]    --> src/analyzers/initialization_frontrunning.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 123 | struct InitializationVisitor<'a> {
[INFO] [stdout]     |        --------------------- field in this struct
[INFO] [stdout] 124 |     findings: &'a mut Vec<Finding>,
[INFO] [stdout] 125 |     file_path: String,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `struct_name` is never read
[INFO] [stdout]   --> src/analyzers/initialization_frontrunning.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | struct VulnerableStructInfo {
[INFO] [stdout]    |        -------------------- field in this struct
[INFO] [stdout] 55 |     struct_name: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VulnerableStructInfo` has a derived impl for the trait `Clone`, but this is 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: field `file_path` is never read
[INFO] [stdout]    --> src/analyzers/initialization_frontrunning.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 123 | struct InitializationVisitor<'a> {
[INFO] [stdout]     |        --------------------- field in this struct
[INFO] [stdout] 124 |     findings: &'a mut Vec<Finding>,
[INFO] [stdout] 125 |     file_path: String,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[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: 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: unused variable: `code`
[INFO] [stdout]    --> src/analyzers/pda_sharing.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |         let code = r#"
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `findings`
[INFO] [stdout]    --> src/analyzers/invalid_sysvar_accounts.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |         let findings = analyzer.analyze(&program).unwrap();
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_findings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `findings`
[INFO] [stdout]    --> src/analyzers/closing_accounts.rs:486:13
[INFO] [stdout]     |
[INFO] [stdout] 486 |         let findings = analyzer.analyze(&program).unwrap();
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_findings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `findings`
[INFO] [stdout]    --> src/analyzers/closing_accounts.rs:547:13
[INFO] [stdout]     |
[INFO] [stdout] 547 |         let findings = analyzer.analyze(&program).unwrap();
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_findings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code_secure`
[INFO] [stdout]    --> src/analyzers/closing_accounts.rs:578:13
[INFO] [stdout]     |
[INFO] [stdout] 578 |         let code_secure = r#"
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_code_secure`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `struct_name` is never read
[INFO] [stdout]   --> src/analyzers/initialization_frontrunning.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | struct VulnerableStructInfo {
[INFO] [stdout]    |        -------------------- field in this struct
[INFO] [stdout] 55 |     struct_name: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VulnerableStructInfo` has a derived impl for the trait `Clone`, but this is 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: field `file_path` is never read
[INFO] [stdout]    --> src/analyzers/initialization_frontrunning.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 123 | struct InitializationVisitor<'a> {
[INFO] [stdout]     |        --------------------- field in this struct
[INFO] [stdout] 124 |     findings: &'a mut Vec<Finding>,
[INFO] [stdout] 125 |     file_path: String,
[INFO] [stdout]     |     ^^^^^^^^^
[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] [stdout] warning: field `struct_name` is never read
[INFO] [stdout]   --> src/analyzers/initialization_frontrunning.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | struct VulnerableStructInfo {
[INFO] [stdout]    |        -------------------- field in this struct
[INFO] [stdout] 55 |     struct_name: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VulnerableStructInfo` has a derived impl for the trait `Clone`, but this is 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: field `file_path` is never read
[INFO] [stdout]    --> src/analyzers/initialization_frontrunning.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 123 | struct InitializationVisitor<'a> {
[INFO] [stdout]     |        --------------------- field in this struct
[INFO] [stdout] 124 |     findings: &'a mut Vec<Finding>,
[INFO] [stdout] 125 |     file_path: String,
[INFO] [stdout]     |     ^^^^^^^^^
[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] warning: unused dependency `anchor-syn`
[INFO] [stderr]  --> Cargo.toml:6:1
[INFO] [stderr]   |
[INFO] [stderr] 6 | anchor-syn = "0.29"
[INFO] [stderr]   | ^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `anchor-syn`
[INFO] [stderr] warning: `solana_fender` (manifest) generated 1 warning
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.86s
[INFO] running `Command { std: "docker" "inspect" "28e6471e40c7e19f3d5fa7a2a792c07e02cd02ab6dd4c700969322b760a1497e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "28e6471e40c7e19f3d5fa7a2a792c07e02cd02ab6dd4c700969322b760a1497e", kill_on_drop: false }`
[INFO] [stdout] 28e6471e40c7e19f3d5fa7a2a792c07e02cd02ab6dd4c700969322b760a1497e
