[INFO] cloning repository https://github.com/Aaron-Savron/NTScan
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Aaron-Savron/NTScan" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAaron-Savron%2FNTScan", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAaron-Savron%2FNTScan'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] b2654224591a4b41a6a6f91677e0389bbbc543f1
[INFO] checking Aaron-Savron/NTScan against 3d50c25bc66853bf0ad205529d0f305a1d841b5e for pr-159598
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAaron-Savron%2FNTScan" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Aaron-Savron/NTScan
[INFO] finished tweaking git repo https://github.com/Aaron-Savron/NTScan
[INFO] tweaked toml for git repo https://github.com/Aaron-Savron/NTScan written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Aaron-Savron/NTScan on toolchain 3d50c25bc66853bf0ad205529d0f305a1d841b5e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3d50c25bc66853bf0ad205529d0f305a1d841b5e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Aaron-Savron/NTScan 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" "+3d50c25bc66853bf0ad205529d0f305a1d841b5e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tree-sitter-language v0.1.7
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.118
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.118
[INFO] [stderr]   Downloaded json5 v0.4.1
[INFO] [stderr]   Downloaded rust-ini v0.20.0
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.118
[INFO] [stderr]   Downloaded config v0.14.1
[INFO] [stderr]   Downloaded tree-sitter-javascript v0.23.1
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.118
[INFO] [stderr]   Downloaded js-sys v0.3.95
[INFO] [stderr]   Downloaded tree-sitter-java v0.23.5
[INFO] [stderr]   Downloaded yaml-rust2 v0.8.1
[INFO] [stderr]   Downloaded tree-sitter-python v0.23.6
[INFO] [stderr]   Downloaded tree-sitter v0.25.10
[INFO] [stderr]   Downloaded tree-sitter-c v0.23.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 440124e233f149269d7e3a0fde8b87943b4268976b189da7793e087236c27379
[INFO] running `Command { std: "docker" "start" "440124e233f149269d7e3a0fde8b87943b4268976b189da7793e087236c27379", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "440124e233f149269d7e3a0fde8b87943b4268976b189da7793e087236c27379", 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" "440124e233f149269d7e3a0fde8b87943b4268976b189da7793e087236c27379" "/opt/rustwide/cargo-home/bin/cargo" "+3d50c25bc66853bf0ad205529d0f305a1d841b5e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "440124e233f149269d7e3a0fde8b87943b4268976b189da7793e087236c27379", 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" "440124e233f149269d7e3a0fde8b87943b4268976b189da7793e087236c27379" "/opt/rustwide/cargo-home/bin/cargo" "+3d50c25bc66853bf0ad205529d0f305a1d841b5e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling tree-sitter-language v0.1.7
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]     Checking allocator-api2 v0.2.21
[INFO] [stderr]    Compiling cc v1.2.61
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]     Checking anstyle-parse v1.0.0
[INFO] [stderr]    Compiling pest v2.8.6
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]     Checking anstyle-query v1.1.5
[INFO] [stderr]    Compiling portable-atomic v1.13.1
[INFO] [stderr]     Checking regex-syntax v0.8.10
[INFO] [stderr]     Checking anstyle v1.0.14
[INFO] [stderr]     Checking winnow v0.7.15
[INFO] [stderr]     Checking toml_write v0.1.2
[INFO] [stderr]     Checking colorchoice v1.0.5
[INFO] [stderr]     Checking anstream v1.0.0
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking arraydeque v0.5.1
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling pest_meta v2.8.6
[INFO] [stderr]     Checking clap_lex v1.1.0
[INFO] [stderr]     Checking base64 v0.21.7
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]     Checking log v0.4.29
[INFO] [stderr]     Checking inotify-sys v0.1.5
[INFO] [stderr]     Checking unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking inotify v0.9.6
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking filetime v0.2.27
[INFO] [stderr]     Checking clap_builder v4.6.0
[INFO] [stderr]     Checking walkdir v2.5.0
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]     Checking dlv-list v0.5.2
[INFO] [stderr]    Compiling tree-sitter-c v0.23.4
[INFO] [stderr]     Checking bitflags v2.11.1
[INFO] [stderr]    Compiling tree-sitter-java v0.23.5
[INFO] [stderr]    Compiling tree-sitter-javascript v0.23.1
[INFO] [stderr]    Compiling tree-sitter-python v0.23.6
[INFO] [stderr]     Checking convert_case v0.6.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking iana-time-zone v0.1.65
[INFO] [stderr]     Checking number_prefix v0.4.0
[INFO] [stderr]     Checking pathdiff v0.2.3
[INFO] [stderr]     Checking streaming-iterator v0.1.9
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking notify v6.1.1
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking memmap2 v0.9.10
[INFO] [stderr]     Checking term_size v0.3.2
[INFO] [stderr]     Checking ansi_term v0.12.1
[INFO] [stderr]    Compiling pest_generator v2.8.6
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling pest_derive v2.8.6
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling tree-sitter v0.25.10
[INFO] [stderr]     Checking hashlink v0.8.4
[INFO] [stderr]     Checking ordered-multimap v0.7.3
[INFO] [stderr]     Checking rust-ini v0.20.0
[INFO] [stderr]     Checking yaml-rust2 v0.8.1
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking clap v4.6.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking config v0.14.1
[INFO] [stderr]     Checking ntscan v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:513:13
[INFO] [stdout]     |
[INFO] [stdout] 513 |         let mut nullable_vars: HashMap<String, bool> = HashMap::new();
[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: unused variable: `node`
[INFO] [stdout]    --> src/main.rs:789:30
[INFO] [stdout]     |
[INFO] [stdout] 789 |     fn has_size_check(&self, node: &Node, _source: &str) -> bool {
[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/main.rs:513:13
[INFO] [stdout]     |
[INFO] [stdout] 513 |         let mut nullable_vars: HashMap<String, bool> = HashMap::new();
[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: unused variable: `fmt`
[INFO] [stdout]     --> src/main.rs:1399:45
[INFO] [stdout]      |
[INFO] [stdout] 1399 | ...                   let fmt = source[arg.start_byte()..arg.end_byte()].to_string();
[INFO] [stdout]      |                           ^^^ help: if this is intentional, prefix it with an underscore: `_fmt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cond_text`
[INFO] [stdout]     --> src/main.rs:1445:25
[INFO] [stdout]      |
[INFO] [stdout] 1445 |                     let cond_text = source[condition.start_byte()..condition.end_byte()].to_string();
[INFO] [stdout]      |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cond_text`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/main.rs:789:30
[INFO] [stdout]     |
[INFO] [stdout] 789 |     fn has_size_check(&self, node: &Node, _source: &str) -> bool {
[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: unused variable: `node`
[INFO] [stdout]     --> src/main.rs:1494:30
[INFO] [stdout]      |
[INFO] [stdout] 1494 |     fn next_node_checks_null(node: &Node, _source: &str) -> bool {
[INFO] [stdout]      |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `decl`
[INFO] [stdout]     --> src/main.rs:1603:48
[INFO] [stdout]      |
[INFO] [stdout] 1603 | ...                   } else if let Some(decl) = parent.parent() {
[INFO] [stdout]      |                                          ^^^^ help: if this is intentional, prefix it with an underscore: `_decl`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fmt`
[INFO] [stdout]     --> src/main.rs:1399:45
[INFO] [stdout]      |
[INFO] [stdout] 1399 | ...                   let fmt = source[arg.start_byte()..arg.end_byte()].to_string();
[INFO] [stdout]      |                           ^^^ help: if this is intentional, prefix it with an underscore: `_fmt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cond_text`
[INFO] [stdout]     --> src/main.rs:1445:25
[INFO] [stdout]      |
[INFO] [stdout] 1445 |                     let cond_text = source[condition.start_byte()..condition.end_byte()].to_string();
[INFO] [stdout]      |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cond_text`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]     --> src/main.rs:1494:30
[INFO] [stdout]      |
[INFO] [stdout] 1494 |     fn next_node_checks_null(node: &Node, _source: &str) -> bool {
[INFO] [stdout]      |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `decl`
[INFO] [stdout]     --> src/main.rs:1603:48
[INFO] [stdout]      |
[INFO] [stdout] 1603 | ...                   } else if let Some(decl) = parent.parent() {
[INFO] [stdout]      |                                          ^^^^ help: if this is intentional, prefix it with an underscore: `_decl`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `high`
[INFO] [stdout]     --> src/main.rs:2877:13
[INFO] [stdout]      |
[INFO] [stdout] 2877 |         let high = findings.iter().filter(|f| f.severity == Severity::High).count();
[INFO] [stdout]      |             ^^^^ help: if this is intentional, prefix it with an underscore: `_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `root_path`
[INFO] [stdout]     --> src/main.rs:3276:42
[INFO] [stdout]      |
[INFO] [stdout] 3276 | fn generate_sarif(findings: &[&Finding], root_path: &Path) -> serde_json::Value {
[INFO] [stdout]      |                                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_root_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_parser`, `get_dangerous_functions`, `get_alloc_functions`, `get_taint_sources`, and `get_taint_sinks` are never used
[INFO] [stdout]    --> src/main.rs:48:8
[INFO] [stdout]     |
[INFO] [stdout]  31 | impl Language {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  48 |     fn get_parser(&self) -> Option<TSParser> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     fn get_dangerous_functions(&self) -> Vec<(&'static str, Severity, &'static str)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     fn get_alloc_functions(&self) -> Vec<&'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     fn get_taint_sources(&self) -> Vec<&'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     fn get_taint_sinks(&self) -> Vec<&'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `color` is never used
[INFO] [stdout]    --> src/main.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 383 | impl Severity {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 384 |     fn color(&self) -> Colour {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `findings` is never read
[INFO] [stdout]    --> src/main.rs:396:5
[INFO] [stdout]     |
[INFO] [stdout] 394 | struct Scanner {
[INFO] [stdout]     |        ------- field in this struct
[INFO] [stdout] 395 |     parser: TSParser,
[INFO] [stdout] 396 |     findings: Vec<Finding>,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_size_check` is never used
[INFO] [stdout]    --> src/main.rs:789:8
[INFO] [stdout]     |
[INFO] [stdout] 399 | impl Scanner {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 789 |     fn has_size_check(&self, node: &Node, _source: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SymbolicValue` is never used
[INFO] [stdout]    --> src/main.rs:848:6
[INFO] [stdout]     |
[INFO] [stdout] 848 | enum SymbolicValue {
[INFO] [stdout]     |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_null`, `could_be_null`, and `could_exceed` are never used
[INFO] [stdout]    --> src/main.rs:856:8
[INFO] [stdout]     |
[INFO] [stdout] 855 | impl SymbolicValue {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] 856 |     fn is_null(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 860 |     fn could_be_null(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 868 |     fn could_exceed(&self, max_val: i64) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `taint_sources` is never read
[INFO] [stdout]     --> src/main.rs:1199:5
[INFO] [stdout]      |
[INFO] [stdout] 1198 | struct TaintAnalyzer {
[INFO] [stdout]      |        ------------- field in this struct
[INFO] [stdout] 1199 |     taint_sources: HashSet<String>,
[INFO] [stdout]      |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Unknown` is never constructed
[INFO] [stdout]     --> src/main.rs:1538:5
[INFO] [stdout]      |
[INFO] [stdout] 1532 | enum VarState {
[INFO] [stdout]      |      -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1538 |     Unknown,
[INFO] [stdout]      |     ^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `VarState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]     --> src/main.rs:1718:5
[INFO] [stdout]      |
[INFO] [stdout] 1717 | struct FunctionSummary {
[INFO] [stdout]      |        --------------- field in this struct
[INFO] [stdout] 1718 |     name: String,
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `FunctionSummary` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `high`
[INFO] [stdout]     --> src/main.rs:2877:13
[INFO] [stdout]      |
[INFO] [stdout] 2877 |         let high = findings.iter().filter(|f| f.severity == Severity::High).count();
[INFO] [stdout]      |             ^^^^ help: if this is intentional, prefix it with an underscore: `_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `root_path`
[INFO] [stdout]     --> src/main.rs:3276:42
[INFO] [stdout]      |
[INFO] [stdout] 3276 | fn generate_sarif(findings: &[&Finding], root_path: &Path) -> serde_json::Value {
[INFO] [stdout]      |                                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_root_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_parser`, `get_dangerous_functions`, `get_alloc_functions`, `get_taint_sources`, and `get_taint_sinks` are never used
[INFO] [stdout]    --> src/main.rs:48:8
[INFO] [stdout]     |
[INFO] [stdout]  31 | impl Language {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  48 |     fn get_parser(&self) -> Option<TSParser> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     fn get_dangerous_functions(&self) -> Vec<(&'static str, Severity, &'static str)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     fn get_alloc_functions(&self) -> Vec<&'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     fn get_taint_sources(&self) -> Vec<&'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     fn get_taint_sinks(&self) -> Vec<&'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `color` is never used
[INFO] [stdout]    --> src/main.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 383 | impl Severity {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 384 |     fn color(&self) -> Colour {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `findings` is never read
[INFO] [stdout]    --> src/main.rs:396:5
[INFO] [stdout]     |
[INFO] [stdout] 394 | struct Scanner {
[INFO] [stdout]     |        ------- field in this struct
[INFO] [stdout] 395 |     parser: TSParser,
[INFO] [stdout] 396 |     findings: Vec<Finding>,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_size_check` is never used
[INFO] [stdout]    --> src/main.rs:789:8
[INFO] [stdout]     |
[INFO] [stdout] 399 | impl Scanner {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 789 |     fn has_size_check(&self, node: &Node, _source: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SymbolicValue` is never used
[INFO] [stdout]    --> src/main.rs:848:6
[INFO] [stdout]     |
[INFO] [stdout] 848 | enum SymbolicValue {
[INFO] [stdout]     |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_null`, `could_be_null`, and `could_exceed` are never used
[INFO] [stdout]    --> src/main.rs:856:8
[INFO] [stdout]     |
[INFO] [stdout] 855 | impl SymbolicValue {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] 856 |     fn is_null(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 860 |     fn could_be_null(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 868 |     fn could_exceed(&self, max_val: i64) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `taint_sources` is never read
[INFO] [stdout]     --> src/main.rs:1199:5
[INFO] [stdout]      |
[INFO] [stdout] 1198 | struct TaintAnalyzer {
[INFO] [stdout]      |        ------------- field in this struct
[INFO] [stdout] 1199 |     taint_sources: HashSet<String>,
[INFO] [stdout]      |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Unknown` is never constructed
[INFO] [stdout]     --> src/main.rs:1538:5
[INFO] [stdout]      |
[INFO] [stdout] 1532 | enum VarState {
[INFO] [stdout]      |      -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1538 |     Unknown,
[INFO] [stdout]      |     ^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `VarState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]     --> src/main.rs:1718:5
[INFO] [stdout]      |
[INFO] [stdout] 1717 | struct FunctionSummary {
[INFO] [stdout]      |        --------------- field in this struct
[INFO] [stdout] 1718 |     name: String,
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `FunctionSummary` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 27.28s
[INFO] running `Command { std: "docker" "inspect" "440124e233f149269d7e3a0fde8b87943b4268976b189da7793e087236c27379", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "440124e233f149269d7e3a0fde8b87943b4268976b189da7793e087236c27379", kill_on_drop: false }`
[INFO] [stdout] 440124e233f149269d7e3a0fde8b87943b4268976b189da7793e087236c27379
