[INFO] fetching crate kybercheck 1.3.0...
[INFO] testing kybercheck-1.3.0 against try#bd7d74411512a3dd3b35d2f699c51dd2557c7e7e+cargoflags=-Zbuild-dir-new-layout for pr-149852-1
[INFO] extracting crate kybercheck 1.3.0 into /workspace/builds/worker-5-tc2/source
[INFO] started tweaking crates.io crate kybercheck 1.3.0
[INFO] finished tweaking crates.io crate kybercheck 1.3.0
[INFO] tweaked toml for crates.io crate kybercheck 1.3.0 written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate kybercheck 1.3.0 on toolchain bd7d74411512a3dd3b35d2f699c51dd2557c7e7e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate kybercheck 1.3.0 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" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 92a1b39c68ca4541c76f92191905b627374ed05bd8fe337b490bad4fc1d1b2ff
[INFO] running `Command { std: "docker" "start" "-a" "92a1b39c68ca4541c76f92191905b627374ed05bd8fe337b490bad4fc1d1b2ff", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "92a1b39c68ca4541c76f92191905b627374ed05bd8fe337b490bad4fc1d1b2ff", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "92a1b39c68ca4541c76f92191905b627374ed05bd8fe337b490bad4fc1d1b2ff", kill_on_drop: false }`
[INFO] [stdout] 92a1b39c68ca4541c76f92191905b627374ed05bd8fe337b490bad4fc1d1b2ff
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "build" "--frozen" "--message-format=json" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] 1f9fa775d0d5c6f97500a745f439ad166cd8382b67fb584d890676d1963437d1
[INFO] running `Command { std: "docker" "start" "-a" "1f9fa775d0d5c6f97500a745f439ad166cd8382b67fb584d890676d1963437d1", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling tracing-core v0.1.35
[INFO] [stderr]    Compiling indexmap v2.12.1
[INFO] [stderr]    Compiling ahash v0.7.8
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]    Compiling http v0.2.12
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling dlv-list v0.3.0
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling pest v2.8.4
[INFO] [stderr]    Compiling linked-hash-map v0.5.6
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling yaml-rust v0.4.5
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling clap_builder v4.5.53
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling number_prefix v0.4.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling http-body v0.4.6
[INFO] [stderr]    Compiling pathdiff v0.2.3
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling colored v2.2.0
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook-registry v1.4.7
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling cc v1.0.106
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling pest_meta v2.8.4
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling directories v5.0.1
[INFO] [stderr]    Compiling uuid v1.19.0
[INFO] [stderr]    Compiling ordered-multimap v0.4.3
[INFO] [stderr]    Compiling indicatif v0.17.11
[INFO] [stderr]    Compiling tempfile v3.23.0
[INFO] [stderr]    Compiling rust-ini v0.18.0
[INFO] [stderr]    Compiling tree-sitter v0.20.10
[INFO] [stderr]    Compiling ring v0.17.9
[INFO] [stderr]    Compiling libz-sys v1.1.23
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling libssh2-sys v0.3.1
[INFO] [stderr]    Compiling libgit2-sys v0.16.2+1.7.2
[INFO] [stderr]    Compiling tree-sitter-c v0.20.8
[INFO] [stderr]    Compiling tree-sitter-php v0.20.0
[INFO] [stderr]    Compiling tree-sitter-go v0.20.0
[INFO] [stderr]    Compiling tree-sitter-javascript v0.20.4
[INFO] [stderr]    Compiling tree-sitter-java v0.20.2
[INFO] [stderr]    Compiling tree-sitter-typescript v0.20.5
[INFO] [stderr]    Compiling tree-sitter-rust v0.20.4
[INFO] [stderr]    Compiling tree-sitter-c-sharp v0.20.0
[INFO] [stderr]    Compiling tree-sitter-bash v0.20.5
[INFO] [stderr]    Compiling tree-sitter-cpp v0.20.5
[INFO] [stderr]    Compiling tree-sitter-python v0.20.4
[INFO] [stderr]    Compiling tree-sitter-ruby v0.20.1
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling pest_generator v2.8.4
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling ignore v0.4.25
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling pest_derive v2.8.4
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling rustls-webpki v0.101.7
[INFO] [stderr]    Compiling sct v0.7.1
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling tracing v0.1.43
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling clap v4.5.53
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml v0.5.11
[INFO] [stderr]    Compiling json5 v0.4.1
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling ron v0.7.1
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling url v2.5.7
[INFO] [stderr]    Compiling config v0.13.4
[INFO] [stderr]    Compiling tokio-util v0.7.17
[INFO] [stderr]    Compiling tokio-rustls v0.24.1
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling git2 v0.18.3
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling hyper-rustls v0.24.2
[INFO] [stderr]    Compiling reqwest v0.11.27
[INFO] [stderr]    Compiling kybercheck v1.3.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `RulePattern`
[INFO] [stdout]  --> src/analyzers/mod.rs:5:41
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::rules::{get_all_rules, Rule, RulePattern};
[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 imports: `Language`, `Location`, and `MigrationImpact`
[INFO] [stdout]  --> src/analyzers/mod.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::types::{Language, Location, MigrationImpact, Severity, Vulnerability};
[INFO] [stdout]   |                    ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/analyzers/mod.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/javascript.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/python.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/go.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/java.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/rust.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/cpp.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/csharp.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/php.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/ruby.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/shell.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dependency_rules::DependencyRule`
[INFO] [stdout]  --> src/rules/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use dependency_rules::DependencyRule;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_parser_for_file`
[INFO] [stdout]   --> src/scanner.rs:17:22
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::parsers::{get_parser_for_file, parse_file};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `tempfile::TempDir::into_path`: use TempDir::keep()
[INFO] [stdout]    --> src/main.rs:597:34
[INFO] [stdout]     |
[INFO] [stdout] 597 |         let kept_path = temp_dir.into_path();
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/analyzers/ast_analyzer.rs:200:9
[INFO] [stdout]     |
[INFO] [stdout] 200 |         node: &Node,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1164:13
[INFO] [stdout]      |
[INFO] [stdout] 1164 |         let mut in_java_string = false; // "..."
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1165:13
[INFO] [stdout]      |
[INFO] [stdout] 1165 |         let mut in_lua_multiline = false; // [[ ... ]]
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `in_java_string`
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1164:13
[INFO] [stdout]      |
[INFO] [stdout] 1164 |         let mut in_java_string = false; // "..."
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_in_java_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `in_lua_multiline`
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1165:13
[INFO] [stdout]      |
[INFO] [stdout] 1165 |         let mut in_lua_multiline = false; // [[ ... ]]
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_in_lua_multiline`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `last_char` is assigned to, but never used
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1169:13
[INFO] [stdout]      |
[INFO] [stdout] 1169 |         let mut last_char = ' ';
[INFO] [stdout]      |             ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_last_char` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `last_char` is never read
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1207:13
[INFO] [stdout]      |
[INFO] [stdout] 1207 |             last_char = ch;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1245:13
[INFO] [stdout]      |
[INFO] [stdout] 1245 |             _ => (&["//"], &[], &[]) // Default fallback
[INFO] [stdout]      |             ^ no value can reach this
[INFO] [stdout]      |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1245:13
[INFO] [stdout]      |
[INFO] [stdout] 1220 | /             Language::JavaScript | Language::TypeScript | Language::Java | Language::Rust | 
[INFO] [stdout] 1221 | |             Language::C | Language::Cpp | Language::CSharp | Language::Go | Language::Kotlin | 
[INFO] [stdout] 1222 | |             Language::Scala | Language::Swift | Language::Dart | Language::Groovy | 
[INFO] [stdout] 1223 | |             Language::ObjectiveC | Language::Php => {
[INFO] [stdout]      | |________________________________________________- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1226 |               Language::Python => {
[INFO] [stdout]      |               ---------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1229 |               Language::Ruby => {
[INFO] [stdout]      |               -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1234 |               Language::Shell | Language::Perl => {
[INFO] [stdout]      |               -------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1245 |               _ => (&["//"], &[], &[]) // Default fallback
[INFO] [stdout]      |               ^ ...and 2 other patterns collectively make this unreachable
[INFO] [stdout]      = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/analyzers/languages/javascript.rs:358:13
[INFO] [stdout]     |
[INFO] [stdout] 120 |             "call_expression" => {
[INFO] [stdout]     |             ----------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 358 |             "call_expression" if node_text.contains("require(") => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `language`
[INFO] [stdout]   --> src/rules/mod.rs:86:31
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn get_rules_for_language(language: &crate::types::Language) -> Vec<Rule> {
[INFO] [stdout]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_language`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/types.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 281 |         let mut by_language: HashMap<String, usize> = HashMap::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_snippet` is never used
[INFO] [stdout]   --> src/analyzers/mod.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn extract_snippet(source: &str, line: usize, context_lines: usize) -> Option<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `offset_to_position` is never used
[INFO] [stdout]   --> src/analyzers/mod.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub fn offset_to_position(source: &str, offset: usize) -> (usize, usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_tree_sitter_language` is never used
[INFO] [stdout]   --> src/parsers/mod.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub trait LanguageParser {
[INFO] [stdout]    |           -------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 40 |     fn get_tree_sitter_language(&self) -> tree_sitter::Language;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_parser` is never used
[INFO] [stdout]   --> src/parsers/mod.rs:91:4
[INFO] [stdout]    |
[INFO] [stdout] 91 | fn create_parser(language: tree_sitter::Language) -> Result<tree_sitter::Parser> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TsxParser` is never constructed
[INFO] [stdout]   --> src/parsers/javascript.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct TsxParser {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/parsers/javascript.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 74 | impl TsxParser {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 75 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `compact` is never used
[INFO] [stdout]   --> src/reporters/json.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl JsonReporter {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn compact() -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `name` are never read
[INFO] [stdout]   --> src/rules/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Rule {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 12 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 13 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Rule` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `module` is never read
[INFO] [stdout]   --> src/rules/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |     FunctionCall {
[INFO] [stdout]    |     ------------ field in this variant
[INFO] [stdout] 28 |         names: Vec<String>,
[INFO] [stdout] 29 |         module: Option<String>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RulePattern` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `object_type` is never read
[INFO] [stdout]   --> src/rules/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     MethodCall {
[INFO] [stdout]    |     ---------- field in this variant
[INFO] [stdout] 38 |         object_type: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RulePattern` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Regex` and `AstNode` are never constructed
[INFO] [stdout]   --> src/rules/mod.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum RulePattern {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 46 |     Regex {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     AstNode {
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RulePattern` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_rules_for_language` is never used
[INFO] [stdout]   --> src/rules/mod.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn get_rules_for_language(language: &crate::types::Language) -> Vec<Rule> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `CryptoRule` is never used
[INFO] [stdout]    --> src/rules/crypto_rules.rs:429:11
[INFO] [stdout]     |
[INFO] [stdout] 429 | pub trait CryptoRule {
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleContext` is never constructed
[INFO] [stdout]    --> src/rules/crypto_rules.rs:435:12
[INFO] [stdout]     |
[INFO] [stdout] 435 | pub struct RuleContext<'a> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleMatch` is never constructed
[INFO] [stdout]    --> src/rules/crypto_rules.rs:444:12
[INFO] [stdout]     |
[INFO] [stdout] 444 | pub struct RuleMatch {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DependencyRule` is never used
[INFO] [stdout]   --> src/rules/dependency_rules.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub trait DependencyRule {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DependencyVulnerability` is never constructed
[INFO] [stdout]   --> src/rules/dependency_rules.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct DependencyVulnerability {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KnownVulnerablePackages` is never constructed
[INFO] [stdout]   --> src/rules/dependency_rules.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct KnownVulnerablePackages;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `javascript`, `python`, `go`, and `java` are never used
[INFO] [stdout]   --> src/rules/dependency_rules.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl KnownVulnerablePackages {
[INFO] [stdout]    | ---------------------------- associated functions in this implementation
[INFO] [stdout] 33 |     /// JavaScript/Node.js packages with known crypto issues
[INFO] [stdout] 34 |     pub fn javascript() -> Vec<(&'static str, &'static str, &'static str)> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn python() -> Vec<(&'static str, &'static str, &'static str)> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn go() -> Vec<(&'static str, &'static str, &'static str)> {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn java() -> Vec<(&'static str, &'static str, &'static str)> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 02s
[INFO] running `Command { std: "docker" "inspect" "1f9fa775d0d5c6f97500a745f439ad166cd8382b67fb584d890676d1963437d1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1f9fa775d0d5c6f97500a745f439ad166cd8382b67fb584d890676d1963437d1", kill_on_drop: false }`
[INFO] [stdout] 1f9fa775d0d5c6f97500a745f439ad166cd8382b67fb584d890676d1963437d1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "test" "--frozen" "--no-run" "--message-format=json" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] af4417694a31f221a141b064d9d9ecffc73b2ae2fbc0fafb914fe3ba91cc2dad
[INFO] running `Command { std: "docker" "start" "-a" "af4417694a31f221a141b064d9d9ecffc73b2ae2fbc0fafb914fe3ba91cc2dad", kill_on_drop: false }`
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling predicates-core v1.0.9
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling assert_cmd v2.1.1
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling predicates-tree v1.0.12
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling predicates v3.1.3
[INFO] [stderr]    Compiling ignore v0.4.25
[INFO] [stderr]    Compiling kybercheck v1.3.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `RulePattern`
[INFO] [stdout]  --> src/analyzers/mod.rs:5:41
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::rules::{get_all_rules, Rule, RulePattern};
[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 imports: `Language`, `Location`, and `MigrationImpact`
[INFO] [stdout]  --> src/analyzers/mod.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::types::{Language, Location, MigrationImpact, Severity, Vulnerability};
[INFO] [stdout]   |                    ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/analyzers/mod.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/javascript.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/python.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/go.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/java.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/rust.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/cpp.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/csharp.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/php.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/ruby.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/analyzers/languages/shell.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dependency_rules::DependencyRule`
[INFO] [stdout]  --> src/rules/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use dependency_rules::DependencyRule;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_parser_for_file`
[INFO] [stdout]   --> src/scanner.rs:17:22
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::parsers::{get_parser_for_file, parse_file};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `tempfile::TempDir::into_path`: use TempDir::keep()
[INFO] [stdout]    --> src/main.rs:597:34
[INFO] [stdout]     |
[INFO] [stdout] 597 |         let kept_path = temp_dir.into_path();
[INFO] [stdout]     |                                  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/analyzers/ast_analyzer.rs:200:9
[INFO] [stdout]     |
[INFO] [stdout] 200 |         node: &Node,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1164:13
[INFO] [stdout]      |
[INFO] [stdout] 1164 |         let mut in_java_string = false; // "..."
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1165:13
[INFO] [stdout]      |
[INFO] [stdout] 1165 |         let mut in_lua_multiline = false; // [[ ... ]]
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `in_java_string`
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1164:13
[INFO] [stdout]      |
[INFO] [stdout] 1164 |         let mut in_java_string = false; // "..."
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_in_java_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `in_lua_multiline`
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1165:13
[INFO] [stdout]      |
[INFO] [stdout] 1165 |         let mut in_lua_multiline = false; // [[ ... ]]
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_in_lua_multiline`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `last_char` is assigned to, but never used
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1169:13
[INFO] [stdout]      |
[INFO] [stdout] 1169 |         let mut last_char = ' ';
[INFO] [stdout]      |             ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_last_char` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `last_char` is never read
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1207:13
[INFO] [stdout]      |
[INFO] [stdout] 1207 |             last_char = ch;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1245:13
[INFO] [stdout]      |
[INFO] [stdout] 1245 |             _ => (&["//"], &[], &[]) // Default fallback
[INFO] [stdout]      |             ^ no value can reach this
[INFO] [stdout]      |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]     --> src/analyzers/pattern_matcher.rs:1245:13
[INFO] [stdout]      |
[INFO] [stdout] 1220 | /             Language::JavaScript | Language::TypeScript | Language::Java | Language::Rust | 
[INFO] [stdout] 1221 | |             Language::C | Language::Cpp | Language::CSharp | Language::Go | Language::Kotlin | 
[INFO] [stdout] 1222 | |             Language::Scala | Language::Swift | Language::Dart | Language::Groovy | 
[INFO] [stdout] 1223 | |             Language::ObjectiveC | Language::Php => {
[INFO] [stdout]      | |________________________________________________- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1226 |               Language::Python => {
[INFO] [stdout]      |               ---------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1229 |               Language::Ruby => {
[INFO] [stdout]      |               -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1234 |               Language::Shell | Language::Perl => {
[INFO] [stdout]      |               -------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1245 |               _ => (&["//"], &[], &[]) // Default fallback
[INFO] [stdout]      |               ^ ...and 2 other patterns collectively make this unreachable
[INFO] [stdout]      = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/analyzers/languages/javascript.rs:358:13
[INFO] [stdout]     |
[INFO] [stdout] 120 |             "call_expression" => {
[INFO] [stdout]     |             ----------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 358 |             "call_expression" if node_text.contains("require(") => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `language`
[INFO] [stdout]   --> src/rules/mod.rs:86:31
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn get_rules_for_language(language: &crate::types::Language) -> Vec<Rule> {
[INFO] [stdout]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_language`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/types.rs:281:13
[INFO] [stdout]     |
[INFO] [stdout] 281 |         let mut by_language: HashMap<String, usize> = HashMap::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_snippet` is never used
[INFO] [stdout]   --> src/analyzers/mod.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn extract_snippet(source: &str, line: usize, context_lines: usize) -> Option<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `offset_to_position` is never used
[INFO] [stdout]   --> src/analyzers/mod.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub fn offset_to_position(source: &str, offset: usize) -> (usize, usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_tree_sitter_language` is never used
[INFO] [stdout]   --> src/parsers/mod.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub trait LanguageParser {
[INFO] [stdout]    |           -------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 40 |     fn get_tree_sitter_language(&self) -> tree_sitter::Language;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_parser` is never used
[INFO] [stdout]   --> src/parsers/mod.rs:91:4
[INFO] [stdout]    |
[INFO] [stdout] 91 | fn create_parser(language: tree_sitter::Language) -> Result<tree_sitter::Parser> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TsxParser` is never constructed
[INFO] [stdout]   --> src/parsers/javascript.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct TsxParser {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/parsers/javascript.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 74 | impl TsxParser {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 75 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `compact` is never used
[INFO] [stdout]   --> src/reporters/json.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl JsonReporter {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn compact() -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `name` are never read
[INFO] [stdout]   --> src/rules/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Rule {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 12 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 13 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Rule` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `module` is never read
[INFO] [stdout]   --> src/rules/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |     FunctionCall {
[INFO] [stdout]    |     ------------ field in this variant
[INFO] [stdout] 28 |         names: Vec<String>,
[INFO] [stdout] 29 |         module: Option<String>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RulePattern` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `object_type` is never read
[INFO] [stdout]   --> src/rules/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     MethodCall {
[INFO] [stdout]    |     ---------- field in this variant
[INFO] [stdout] 38 |         object_type: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RulePattern` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Regex` and `AstNode` are never constructed
[INFO] [stdout]   --> src/rules/mod.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum RulePattern {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 46 |     Regex {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     AstNode {
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RulePattern` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_rules_for_language` is never used
[INFO] [stdout]   --> src/rules/mod.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn get_rules_for_language(language: &crate::types::Language) -> Vec<Rule> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `CryptoRule` is never used
[INFO] [stdout]    --> src/rules/crypto_rules.rs:429:11
[INFO] [stdout]     |
[INFO] [stdout] 429 | pub trait CryptoRule {
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleContext` is never constructed
[INFO] [stdout]    --> src/rules/crypto_rules.rs:435:12
[INFO] [stdout]     |
[INFO] [stdout] 435 | pub struct RuleContext<'a> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleMatch` is never constructed
[INFO] [stdout]    --> src/rules/crypto_rules.rs:444:12
[INFO] [stdout]     |
[INFO] [stdout] 444 | pub struct RuleMatch {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DependencyRule` is never used
[INFO] [stdout]   --> src/rules/dependency_rules.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub trait DependencyRule {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DependencyVulnerability` is never constructed
[INFO] [stdout]   --> src/rules/dependency_rules.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct DependencyVulnerability {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KnownVulnerablePackages` is never constructed
[INFO] [stdout]   --> src/rules/dependency_rules.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct KnownVulnerablePackages;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `javascript`, `python`, `go`, and `java` are never used
[INFO] [stdout]   --> src/rules/dependency_rules.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl KnownVulnerablePackages {
[INFO] [stdout]    | ---------------------------- associated functions in this implementation
[INFO] [stdout] 33 |     /// JavaScript/Node.js packages with known crypto issues
[INFO] [stdout] 34 |     pub fn javascript() -> Vec<(&'static str, &'static str, &'static str)> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn python() -> Vec<(&'static str, &'static str, &'static str)> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn go() -> Vec<(&'static str, &'static str, &'static str)> {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn java() -> Vec<(&'static str, &'static str, &'static str)> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 7.75s
[INFO] running `Command { std: "docker" "inspect" "af4417694a31f221a141b064d9d9ecffc73b2ae2fbc0fafb914fe3ba91cc2dad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "af4417694a31f221a141b064d9d9ecffc73b2ae2fbc0fafb914fe3ba91cc2dad", kill_on_drop: false }`
[INFO] [stdout] af4417694a31f221a141b064d9d9ecffc73b2ae2fbc0fafb914fe3ba91cc2dad
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "test" "--frozen" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] 5c5b9624625691ee4ce9233d1885fd0ccda5fcbf9bc557c7a456e1cd361ccd2b
[INFO] running `Command { std: "docker" "start" "-a" "5c5b9624625691ee4ce9233d1885fd0ccda5fcbf9bc557c7a456e1cd361ccd2b", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `RulePattern`
[INFO] [stderr]  --> src/analyzers/mod.rs:5:41
[INFO] [stderr]   |
[INFO] [stderr] 5 | use crate::rules::{get_all_rules, Rule, RulePattern};
[INFO] [stderr]   |                                         ^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Language`, `Location`, and `MigrationImpact`
[INFO] [stderr]  --> src/analyzers/mod.rs:6:20
[INFO] [stderr]   |
[INFO] [stderr] 6 | use crate::types::{Language, Location, MigrationImpact, Severity, Vulnerability};
[INFO] [stderr]   |                    ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `uuid::Uuid`
[INFO] [stderr]  --> src/analyzers/mod.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use uuid::Uuid;
[INFO] [stderr]   |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `anyhow::Result`
[INFO] [stderr]  --> src/analyzers/languages/javascript.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use anyhow::Result;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `anyhow::Result`
[INFO] [stderr]  --> src/analyzers/languages/python.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use anyhow::Result;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `anyhow::Result`
[INFO] [stderr]  --> src/analyzers/languages/go.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use anyhow::Result;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `anyhow::Result`
[INFO] [stderr]  --> src/analyzers/languages/java.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use anyhow::Result;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `anyhow::Result`
[INFO] [stderr]  --> src/analyzers/languages/rust.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use anyhow::Result;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `anyhow::Result`
[INFO] [stderr]  --> src/analyzers/languages/cpp.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use anyhow::Result;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `anyhow::Result`
[INFO] [stderr]  --> src/analyzers/languages/csharp.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use anyhow::Result;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `anyhow::Result`
[INFO] [stderr]  --> src/analyzers/languages/php.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use anyhow::Result;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `anyhow::Result`
[INFO] [stderr]  --> src/analyzers/languages/ruby.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use anyhow::Result;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `anyhow::Result`
[INFO] [stderr]  --> src/analyzers/languages/shell.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use anyhow::Result;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `dependency_rules::DependencyRule`
[INFO] [stderr]  --> src/rules/mod.rs:7:9
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub use dependency_rules::DependencyRule;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `get_parser_for_file`
[INFO] [stderr]   --> src/scanner.rs:17:22
[INFO] [stderr]    |
[INFO] [stderr] 17 | use crate::parsers::{get_parser_for_file, parse_file};
[INFO] [stderr]    |                      ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `tempfile::TempDir::into_path`: use TempDir::keep()
[INFO] [stderr]    --> src/main.rs:597:34
[INFO] [stderr]     |
[INFO] [stderr] 597 |         let kept_path = temp_dir.into_path();
[INFO] [stderr]     |                                  ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `node`
[INFO] [stderr]    --> src/analyzers/ast_analyzer.rs:200:9
[INFO] [stderr]     |
[INFO] [stderr] 200 |         node: &Node,
[INFO] [stderr]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/analyzers/pattern_matcher.rs:1164:13
[INFO] [stderr]      |
[INFO] [stderr] 1164 |         let mut in_java_string = false; // "..."
[INFO] [stderr]      |             ----^^^^^^^^^^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/analyzers/pattern_matcher.rs:1165:13
[INFO] [stderr]      |
[INFO] [stderr] 1165 |         let mut in_lua_multiline = false; // [[ ... ]]
[INFO] [stderr]      |             ----^^^^^^^^^^^^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `in_java_string`
[INFO] [stderr]     --> src/analyzers/pattern_matcher.rs:1164:13
[INFO] [stderr]      |
[INFO] [stderr] 1164 |         let mut in_java_string = false; // "..."
[INFO] [stderr]      |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_in_java_string`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `in_lua_multiline`
[INFO] [stderr]     --> src/analyzers/pattern_matcher.rs:1165:13
[INFO] [stderr]      |
[INFO] [stderr] 1165 |         let mut in_lua_multiline = false; // [[ ... ]]
[INFO] [stderr]      |             ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_in_lua_multiline`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `last_char` is assigned to, but never used
[INFO] [stderr]     --> src/analyzers/pattern_matcher.rs:1169:13
[INFO] [stderr]      |
[INFO] [stderr] 1169 |         let mut last_char = ' ';
[INFO] [stderr]      |             ^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: consider using `_last_char` instead
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `last_char` is never read
[INFO] [stderr]     --> src/analyzers/pattern_matcher.rs:1207:13
[INFO] [stderr]      |
[INFO] [stderr] 1207 |             last_char = ch;
[INFO] [stderr]      |             ^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = help: maybe it is overwritten before being read?
[INFO] [stderr]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]     --> src/analyzers/pattern_matcher.rs:1245:13
[INFO] [stderr]      |
[INFO] [stderr] 1245 |             _ => (&["//"], &[], &[]) // Default fallback
[INFO] [stderr]      |             ^ no value can reach this
[INFO] [stderr]      |
[INFO] [stderr] note: multiple earlier patterns match some of the same values
[INFO] [stderr]     --> src/analyzers/pattern_matcher.rs:1245:13
[INFO] [stderr]      |
[INFO] [stderr] 1220 | /             Language::JavaScript | Language::TypeScript | Language::Java | Language::Rust | 
[INFO] [stderr] 1221 | |             Language::C | Language::Cpp | Language::CSharp | Language::Go | Language::Kotlin | 
[INFO] [stderr] 1222 | |             Language::Scala | Language::Swift | Language::Dart | Language::Groovy | 
[INFO] [stderr] 1223 | |             Language::ObjectiveC | Language::Php => {
[INFO] [stderr]      | |________________________________________________- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 1226 |               Language::Python => {
[INFO] [stderr]      |               ---------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 1229 |               Language::Ruby => {
[INFO] [stderr]      |               -------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 1234 |               Language::Shell | Language::Perl => {
[INFO] [stderr]      |               -------------------------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 1245 |               _ => (&["//"], &[], &[]) // Default fallback
[INFO] [stderr]      |               ^ ...and 2 other patterns collectively make this unreachable
[INFO] [stderr]      = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/analyzers/languages/javascript.rs:358:13
[INFO] [stderr]     |
[INFO] [stderr] 120 |             "call_expression" => {
[INFO] [stderr]     |             ----------------- matches all the relevant values
[INFO] [stderr] ...
[INFO] [stderr] 358 |             "call_expression" if node_text.contains("require(") => {
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `language`
[INFO] [stderr]   --> src/rules/mod.rs:86:31
[INFO] [stderr]    |
[INFO] [stderr] 86 | pub fn get_rules_for_language(language: &crate::types::Language) -> Vec<Rule> {
[INFO] [stderr]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_language`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/types.rs:281:13
[INFO] [stderr]     |
[INFO] [stderr] 281 |         let mut by_language: HashMap<String, usize> = HashMap::new();
[INFO] [stderr]     |             ----^^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: function `extract_snippet` is never used
[INFO] [stderr]   --> src/analyzers/mod.rs:79:8
[INFO] [stderr]    |
[INFO] [stderr] 79 | pub fn extract_snippet(source: &str, line: usize, context_lines: usize) -> Option<String> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `offset_to_position` is never used
[INFO] [stderr]   --> src/analyzers/mod.rs:99:8
[INFO] [stderr]    |
[INFO] [stderr] 99 | pub fn offset_to_position(source: &str, offset: usize) -> (usize, usize) {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_tree_sitter_language` is never used
[INFO] [stderr]   --> src/parsers/mod.rs:40:8
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub trait LanguageParser {
[INFO] [stderr]    |           -------------- method in this trait
[INFO] [stderr] ...
[INFO] [stderr] 40 |     fn get_tree_sitter_language(&self) -> tree_sitter::Language;
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_parser` is never used
[INFO] [stderr]   --> src/parsers/mod.rs:91:4
[INFO] [stderr]    |
[INFO] [stderr] 91 | fn create_parser(language: tree_sitter::Language) -> Result<tree_sitter::Parser> {
[INFO] [stderr]    |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TsxParser` is never constructed
[INFO] [stderr]   --> src/parsers/javascript.rs:70:12
[INFO] [stderr]    |
[INFO] [stderr] 70 | pub struct TsxParser {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/parsers/javascript.rs:75:12
[INFO] [stderr]    |
[INFO] [stderr] 74 | impl TsxParser {
[INFO] [stderr]    | -------------- associated function in this implementation
[INFO] [stderr] 75 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `compact` is never used
[INFO] [stderr]   --> src/reporters/json.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl JsonReporter {
[INFO] [stderr]    | ----------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 16 |     pub fn compact() -> Self {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `id` and `name` are never read
[INFO] [stderr]   --> src/rules/mod.rs:12:9
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub struct Rule {
[INFO] [stderr]    |            ---- fields in this struct
[INFO] [stderr] 12 |     pub id: String,
[INFO] [stderr]    |         ^^
[INFO] [stderr] 13 |     pub name: String,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Rule` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `module` is never read
[INFO] [stderr]   --> src/rules/mod.rs:29:9
[INFO] [stderr]    |
[INFO] [stderr] 27 |     FunctionCall {
[INFO] [stderr]    |     ------------ field in this variant
[INFO] [stderr] 28 |         names: Vec<String>,
[INFO] [stderr] 29 |         module: Option<String>,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RulePattern` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `object_type` is never read
[INFO] [stderr]   --> src/rules/mod.rs:38:9
[INFO] [stderr]    |
[INFO] [stderr] 37 |     MethodCall {
[INFO] [stderr]    |     ---------- field in this variant
[INFO] [stderr] 38 |         object_type: Option<String>,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RulePattern` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Regex` and `AstNode` are never constructed
[INFO] [stderr]   --> src/rules/mod.rs:46:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub enum RulePattern {
[INFO] [stderr]    |          ----------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 46 |     Regex {
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 50 |     AstNode {
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RulePattern` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_rules_for_language` is never used
[INFO] [stderr]   --> src/rules/mod.rs:86:8
[INFO] [stderr]    |
[INFO] [stderr] 86 | pub fn get_rules_for_language(language: &crate::types::Language) -> Vec<Rule> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `CryptoRule` is never used
[INFO] [stderr]    --> src/rules/crypto_rules.rs:429:11
[INFO] [stderr]     |
[INFO] [stderr] 429 | pub trait CryptoRule {
[INFO] [stderr]     |           ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RuleContext` is never constructed
[INFO] [stderr]    --> src/rules/crypto_rules.rs:435:12
[INFO] [stderr]     |
[INFO] [stderr] 435 | pub struct RuleContext<'a> {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RuleMatch` is never constructed
[INFO] [stderr]    --> src/rules/crypto_rules.rs:444:12
[INFO] [stderr]     |
[INFO] [stderr] 444 | pub struct RuleMatch {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `DependencyRule` is never used
[INFO] [stderr]   --> src/rules/dependency_rules.rs:11:11
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub trait DependencyRule {
[INFO] [stderr]    |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DependencyVulnerability` is never constructed
[INFO] [stderr]   --> src/rules/dependency_rules.rs:21:12
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub struct DependencyVulnerability {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `KnownVulnerablePackages` is never constructed
[INFO] [stderr]   --> src/rules/dependency_rules.rs:30:12
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub struct KnownVulnerablePackages;
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `javascript`, `python`, `go`, and `java` are never used
[INFO] [stderr]   --> src/rules/dependency_rules.rs:34:12
[INFO] [stderr]    |
[INFO] [stderr] 32 | impl KnownVulnerablePackages {
[INFO] [stderr]    | ---------------------------- associated functions in this implementation
[INFO] [stderr] 33 |     /// JavaScript/Node.js packages with known crypto issues
[INFO] [stderr] 34 |     pub fn javascript() -> Vec<(&'static str, &'static str, &'static str)> {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 47 |     pub fn python() -> Vec<(&'static str, &'static str, &'static str)> {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 59 |     pub fn go() -> Vec<(&'static str, &'static str, &'static str)> {
[INFO] [stderr]    |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 69 |     pub fn java() -> Vec<(&'static str, &'static str, &'static str)> {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `kybercheck` (bin "kybercheck" test) generated 46 warnings (run `cargo fix --bin "kybercheck" -p kybercheck --tests` to apply 22 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.38s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/kybercheck/7fb0a3149035fa75/deps/kybercheck-7fb0a3149035fa75)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test config::tests::test_default_config ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "5c5b9624625691ee4ce9233d1885fd0ccda5fcbf9bc557c7a456e1cd361ccd2b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5c5b9624625691ee4ce9233d1885fd0ccda5fcbf9bc557c7a456e1cd361ccd2b", kill_on_drop: false }`
[INFO] [stdout] 5c5b9624625691ee4ce9233d1885fd0ccda5fcbf9bc557c7a456e1cd361ccd2b
