[INFO] fetching crate llm-config-devtools 0.5.0... [INFO] linting llm-config-devtools-0.5.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate llm-config-devtools 0.5.0 into /workspace/builds/worker-7-tc1/source [INFO] started tweaking crates.io crate llm-config-devtools 0.5.0 [INFO] finished tweaking crates.io crate llm-config-devtools 0.5.0 [INFO] tweaked toml for crates.io crate llm-config-devtools 0.5.0 written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate llm-config-devtools 0.5.0 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate llm-config-devtools 0.5.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" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded assert_cmd v2.1.1 [INFO] [stderr] Downloaded camino v1.2.1 [INFO] [stderr] Downloaded normalize-line-endings v0.3.0 [INFO] [stderr] Downloaded insta v1.44.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] d8c5d9a2b786cbfb6bc1c819f8791f4c814e2c7d7ac6a9ee245f289b17947dd3 [INFO] running `Command { std: "docker" "start" "-a" "d8c5d9a2b786cbfb6bc1c819f8791f4c814e2c7d7ac6a9ee245f289b17947dd3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d8c5d9a2b786cbfb6bc1c819f8791f4c814e2c7d7ac6a9ee245f289b17947dd3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d8c5d9a2b786cbfb6bc1c819f8791f4c814e2c7d7ac6a9ee245f289b17947dd3", kill_on_drop: false }` [INFO] [stdout] d8c5d9a2b786cbfb6bc1c819f8791f4c814e2c7d7ac6a9ee245f289b17947dd3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 3c0bd921f7cd662661f13c6e89977f579568354b114e4884420db896a03915ce [INFO] running `Command { std: "docker" "start" "-a" "3c0bd921f7cd662661f13c6e89977f579568354b114e4884420db896a03915ce", kill_on_drop: false }` [INFO] [stderr] Compiling icu_properties_data v2.1.1 [INFO] [stderr] Compiling libc v0.2.177 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Compiling camino v1.2.1 [INFO] [stderr] Compiling syn v2.0.110 [INFO] [stderr] Compiling serde_json v1.0.145 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Checking indexmap v2.12.1 [INFO] [stderr] Checking clap_builder v4.5.53 [INFO] [stderr] Checking semver v1.0.27 [INFO] [stderr] Checking nu-ansi-term v0.50.3 [INFO] [stderr] Checking home v0.5.12 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Checking colored v2.2.0 [INFO] [stderr] Checking float-cmp v0.10.0 [INFO] [stderr] Checking normalize-line-endings v0.3.0 [INFO] [stderr] Compiling assert_cmd v2.1.1 [INFO] [stderr] Checking rustix v1.1.2 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking wait-timeout v0.2.1 [INFO] [stderr] Checking console v0.15.11 [INFO] [stderr] Checking insta v1.44.1 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Compiling cc v1.2.47 [INFO] [stderr] Checking tempfile v3.23.0 [INFO] [stderr] Checking which v6.0.3 [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] Checking bstr v1.12.1 [INFO] [stderr] Checking regex v1.12.2 [INFO] [stderr] Checking matchers v0.2.0 [INFO] [stderr] Checking globset v0.4.18 [INFO] [stderr] Checking predicates v3.1.3 [INFO] [stderr] Checking ignore v0.4.25 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.30 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling clap_derive v4.5.49 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking tracing-subscriber v0.3.20 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Checking clap v4.5.53 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking icu_properties v2.1.1 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking cargo-platform v0.1.9 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking chrono v0.4.42 [INFO] [stderr] Checking cargo_metadata v0.18.1 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking url v2.5.7 [INFO] [stderr] Checking git2 v0.18.3 [INFO] [stderr] Checking llm-config-devtools v0.5.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary hashes around raw string literal [INFO] [stdout] --> src/security/secret.rs:43:31 [INFO] [stdout] | [INFO] [stdout] 43 | regex: Regex::new(r#"(?i)bearer\s+([a-zA-Z0-9_\-\.]{20,})"#).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_raw_string_hashes [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> src/lib.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 60 | #![warn(clippy::pedantic)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(clippy::needless_raw_string_hashes)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: remove all the hashes around the string literal [INFO] [stdout] | [INFO] [stdout] 43 - regex: Regex::new(r#"(?i)bearer\s+([a-zA-Z0-9_\-\.]{20,})"#).unwrap(), [INFO] [stdout] 43 + regex: Regex::new(r"(?i)bearer\s+([a-zA-Z0-9_\-\.]{20,})").unwrap(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary hashes around raw string literal [INFO] [stdout] --> src/security/secret.rs:63:31 [INFO] [stdout] | [INFO] [stdout] 63 | regex: Regex::new(r#"-----BEGIN (RSA|DSA|EC) PRIVATE KEY-----"#).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_raw_string_hashes [INFO] [stdout] help: remove all the hashes around the string literal [INFO] [stdout] | [INFO] [stdout] 63 - regex: Regex::new(r#"-----BEGIN (RSA|DSA|EC) PRIVATE KEY-----"#).unwrap(), [INFO] [stdout] 63 + regex: Regex::new(r"-----BEGIN (RSA|DSA|EC) PRIVATE KEY-----").unwrap(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary hashes around raw string literal [INFO] [stdout] --> src/security/secret.rs:68:31 [INFO] [stdout] | [INFO] [stdout] 68 | regex: Regex::new(r#"gh[pousr]_[A-Za-z0-9_]{36,}"#).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_raw_string_hashes [INFO] [stdout] help: remove all the hashes around the string literal [INFO] [stdout] | [INFO] [stdout] 68 - regex: Regex::new(r#"gh[pousr]_[A-Za-z0-9_]{36,}"#).unwrap(), [INFO] [stdout] 68 + regex: Regex::new(r"gh[pousr]_[A-Za-z0-9_]{36,}").unwrap(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary hashes around raw string literal [INFO] [stdout] --> src/security/sql.rs:38:31 [INFO] [stdout] | [INFO] [stdout] 38 | regex: Regex::new(r#"SELECT.*\+.*"#).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_raw_string_hashes [INFO] [stdout] help: remove all the hashes around the string literal [INFO] [stdout] | [INFO] [stdout] 38 - regex: Regex::new(r#"SELECT.*\+.*"#).unwrap(), [INFO] [stdout] 38 + regex: Regex::new(r"SELECT.*\+.*").unwrap(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary hashes around raw string literal [INFO] [stdout] --> src/security/sql.rs:43:31 [INFO] [stdout] | [INFO] [stdout] 43 | regex: Regex::new(r#"INSERT.*\+.*"#).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_raw_string_hashes [INFO] [stdout] help: remove all the hashes around the string literal [INFO] [stdout] | [INFO] [stdout] 43 - regex: Regex::new(r#"INSERT.*\+.*"#).unwrap(), [INFO] [stdout] 43 + regex: Regex::new(r"INSERT.*\+.*").unwrap(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary hashes around raw string literal [INFO] [stdout] --> src/security/secret.rs:43:31 [INFO] [stdout] | [INFO] [stdout] 43 | regex: Regex::new(r#"(?i)bearer\s+([a-zA-Z0-9_\-\.]{20,})"#).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_raw_string_hashes [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> src/lib.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 60 | #![warn(clippy::pedantic)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(clippy::needless_raw_string_hashes)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: remove all the hashes around the string literal [INFO] [stdout] | [INFO] [stdout] 43 - regex: Regex::new(r#"(?i)bearer\s+([a-zA-Z0-9_\-\.]{20,})"#).unwrap(), [INFO] [stdout] 43 + regex: Regex::new(r"(?i)bearer\s+([a-zA-Z0-9_\-\.]{20,})").unwrap(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary hashes around raw string literal [INFO] [stdout] --> src/security/secret.rs:63:31 [INFO] [stdout] | [INFO] [stdout] 63 | regex: Regex::new(r#"-----BEGIN (RSA|DSA|EC) PRIVATE KEY-----"#).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_raw_string_hashes [INFO] [stdout] help: remove all the hashes around the string literal [INFO] [stdout] | [INFO] [stdout] 63 - regex: Regex::new(r#"-----BEGIN (RSA|DSA|EC) PRIVATE KEY-----"#).unwrap(), [INFO] [stdout] 63 + regex: Regex::new(r"-----BEGIN (RSA|DSA|EC) PRIVATE KEY-----").unwrap(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary hashes around raw string literal [INFO] [stdout] --> src/security/secret.rs:68:31 [INFO] [stdout] | [INFO] [stdout] 68 | regex: Regex::new(r#"gh[pousr]_[A-Za-z0-9_]{36,}"#).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_raw_string_hashes [INFO] [stdout] help: remove all the hashes around the string literal [INFO] [stdout] | [INFO] [stdout] 68 - regex: Regex::new(r#"gh[pousr]_[A-Za-z0-9_]{36,}"#).unwrap(), [INFO] [stdout] 68 + regex: Regex::new(r"gh[pousr]_[A-Za-z0-9_]{36,}").unwrap(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary hashes around raw string literal [INFO] [stdout] --> src/security/sql.rs:38:31 [INFO] [stdout] | [INFO] [stdout] 38 | regex: Regex::new(r#"SELECT.*\+.*"#).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_raw_string_hashes [INFO] [stdout] help: remove all the hashes around the string literal [INFO] [stdout] | [INFO] [stdout] 38 - regex: Regex::new(r#"SELECT.*\+.*"#).unwrap(), [INFO] [stdout] 38 + regex: Regex::new(r"SELECT.*\+.*").unwrap(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary hashes around raw string literal [INFO] [stdout] --> src/security/sql.rs:43:31 [INFO] [stdout] | [INFO] [stdout] 43 | regex: Regex::new(r#"INSERT.*\+.*"#).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_raw_string_hashes [INFO] [stdout] help: remove all the hashes around the string literal [INFO] [stdout] | [INFO] [stdout] 43 - regex: Regex::new(r#"INSERT.*\+.*"#).unwrap(), [INFO] [stdout] 43 + regex: Regex::new(r"INSERT.*\+.*").unwrap(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/error.rs:83:9 [INFO] [stdout] | [INFO] [stdout] 83 | DevtoolsError::Ignore(err.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> src/lib.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 61 | #![warn(clippy::nursery)] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(clippy::use_self)]` implied by `#[warn(clippy::nursery)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/error.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | DevtoolsError::Serialization(err.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/error.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | DevtoolsError::Serialization(err.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/report/json.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn generate(report: &SecurityReport) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] = note: `#[warn(clippy::missing_errors_doc)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/error.rs:83:9 [INFO] [stdout] | [INFO] [stdout] 83 | DevtoolsError::Ignore(err.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> src/lib.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 61 | #![warn(clippy::nursery)] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(clippy::use_self)]` implied by `#[warn(clippy::nursery)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/error.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | DevtoolsError::Serialization(err.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/error.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | DevtoolsError::Serialization(err.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/report/json.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn generate(report: &SecurityReport) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] = note: `#[warn(clippy::missing_errors_doc)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/report/markdown.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn generate(report: &SecurityReport) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/report/markdown.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn generate(report: &SecurityReport) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | md.push_str(&format!("**Generated**: {}\n", report.timestamp.format("%Y-%m-%d %H:%M:%S UTC"))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] = note: `#[warn(clippy::format_push_string)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 14 - md.push_str(&format!("**Generated**: {}\n", report.timestamp.format("%Y-%m-%d %H:%M:%S UTC"))); [INFO] [stdout] 14 + let _ = write!(md, "**Generated**: {}\n", report.timestamp.format("%Y-%m-%d %H:%M:%S UTC")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | md.push_str(&format!("**Generated**: {}\n", report.timestamp.format("%Y-%m-%d %H:%M:%S UTC"))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] = note: `#[warn(clippy::format_push_string)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 14 - md.push_str(&format!("**Generated**: {}\n", report.timestamp.format("%Y-%m-%d %H:%M:%S UTC"))); [INFO] [stdout] 14 + let _ = write!(md, "**Generated**: {}\n", report.timestamp.format("%Y-%m-%d %H:%M:%S UTC")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | md.push_str(&format!("**Project**: {}\n", report.project_root.display())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 15 - md.push_str(&format!("**Project**: {}\n", report.project_root.display())); [INFO] [stdout] 15 + let _ = write!(md, "**Project**: {}\n", report.project_root.display()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | md.push_str(&format!("**Project**: {}\n", report.project_root.display())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 15 - md.push_str(&format!("**Project**: {}\n", report.project_root.display())); [INFO] [stdout] 15 + let _ = write!(md, "**Project**: {}\n", report.project_root.display()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | md.push_str(&format!("**Commit**: `{}`\n", commit)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 18 - md.push_str(&format!("**Commit**: `{}`\n", commit)); [INFO] [stdout] 18 + let _ = write!(md, "**Commit**: `{}`\n", commit); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/markdown.rs:18:22 [INFO] [stdout] | [INFO] [stdout] 18 | md.push_str(&format!("**Commit**: `{}`\n", commit)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] = note: `#[warn(clippy::uninlined_format_args)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 18 - md.push_str(&format!("**Commit**: `{}`\n", commit)); [INFO] [stdout] 18 + md.push_str(&format!("**Commit**: `{commit}`\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | md.push_str(&format!("**Commit**: `{}`\n", commit)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 18 - md.push_str(&format!("**Commit**: `{}`\n", commit)); [INFO] [stdout] 18 + let _ = write!(md, "**Commit**: `{}`\n", commit); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 21 | md.push_str(&format!("**Branch**: `{}`\n", branch)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 21 - md.push_str(&format!("**Branch**: `{}`\n", branch)); [INFO] [stdout] 21 + let _ = write!(md, "**Branch**: `{}`\n", branch); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/markdown.rs:18:22 [INFO] [stdout] | [INFO] [stdout] 18 | md.push_str(&format!("**Commit**: `{}`\n", commit)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] = note: `#[warn(clippy::uninlined_format_args)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 18 - md.push_str(&format!("**Commit**: `{}`\n", commit)); [INFO] [stdout] 18 + md.push_str(&format!("**Commit**: `{commit}`\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/markdown.rs:21:22 [INFO] [stdout] | [INFO] [stdout] 21 | md.push_str(&format!("**Branch**: `{}`\n", branch)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 21 - md.push_str(&format!("**Branch**: `{}`\n", branch)); [INFO] [stdout] 21 + md.push_str(&format!("**Branch**: `{branch}`\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 21 | md.push_str(&format!("**Branch**: `{}`\n", branch)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 21 - md.push_str(&format!("**Branch**: `{}`\n", branch)); [INFO] [stdout] 21 + let _ = write!(md, "**Branch**: `{}`\n", branch); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/markdown.rs:21:22 [INFO] [stdout] | [INFO] [stdout] 21 | md.push_str(&format!("**Branch**: `{}`\n", branch)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 21 - md.push_str(&format!("**Branch**: `{}`\n", branch)); [INFO] [stdout] 21 + md.push_str(&format!("**Branch**: `{branch}`\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | md.push_str(&format!("- **Total Findings**: {}\n", report.summary.total)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 28 - md.push_str(&format!("- **Total Findings**: {}\n", report.summary.total)); [INFO] [stdout] 28 + let _ = write!(md, "- **Total Findings**: {}\n", report.summary.total); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | md.push_str(&format!("- **Total Findings**: {}\n", report.summary.total)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 28 - md.push_str(&format!("- **Total Findings**: {}\n", report.summary.total)); [INFO] [stdout] 28 + let _ = write!(md, "- **Total Findings**: {}\n", report.summary.total); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | md.push_str(&format!("- **Critical**: {} 🔴\n", report.summary.critical)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 29 - md.push_str(&format!("- **Critical**: {} 🔴\n", report.summary.critical)); [INFO] [stdout] 29 + let _ = write!(md, "- **Critical**: {} 🔴\n", report.summary.critical); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | md.push_str(&format!("- **Critical**: {} 🔴\n", report.summary.critical)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 29 - md.push_str(&format!("- **Critical**: {} 🔴\n", report.summary.critical)); [INFO] [stdout] 29 + let _ = write!(md, "- **Critical**: {} 🔴\n", report.summary.critical); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | md.push_str(&format!("- **High**: {} 🟠\n", report.summary.high)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 30 - md.push_str(&format!("- **High**: {} 🟠\n", report.summary.high)); [INFO] [stdout] 30 + let _ = write!(md, "- **High**: {} 🟠\n", report.summary.high); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | md.push_str(&format!("- **High**: {} 🟠\n", report.summary.high)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 30 - md.push_str(&format!("- **High**: {} 🟠\n", report.summary.high)); [INFO] [stdout] 30 + let _ = write!(md, "- **High**: {} 🟠\n", report.summary.high); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | md.push_str(&format!("- **Medium**: {} 🟡\n", report.summary.medium)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 31 - md.push_str(&format!("- **Medium**: {} 🟡\n", report.summary.medium)); [INFO] [stdout] 31 + let _ = write!(md, "- **Medium**: {} 🟡\n", report.summary.medium); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | md.push_str(&format!("- **Medium**: {} 🟡\n", report.summary.medium)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 31 - md.push_str(&format!("- **Medium**: {} 🟡\n", report.summary.medium)); [INFO] [stdout] 31 + let _ = write!(md, "- **Medium**: {} 🟡\n", report.summary.medium); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | md.push_str(&format!("- **Low**: {} 🟢\n", report.summary.low)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 32 - md.push_str(&format!("- **Low**: {} 🟢\n", report.summary.low)); [INFO] [stdout] 32 + let _ = write!(md, "- **Low**: {} 🟢\n", report.summary.low); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | md.push_str(&format!("- **Low**: {} 🟢\n", report.summary.low)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 32 - md.push_str(&format!("- **Low**: {} 🟢\n", report.summary.low)); [INFO] [stdout] 32 + let _ = write!(md, "- **Low**: {} 🟢\n", report.summary.low); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | md.push_str(&format!("- **Scan Duration**: {:.2}s\n", report.summary.duration_seconds)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 33 - md.push_str(&format!("- **Scan Duration**: {:.2}s\n", report.summary.duration_seconds)); [INFO] [stdout] 33 + let _ = write!(md, "- **Scan Duration**: {:.2}s\n", report.summary.duration_seconds); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | md.push_str(&format!("- **Scan Duration**: {:.2}s\n", report.summary.duration_seconds)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 33 - md.push_str(&format!("- **Scan Duration**: {:.2}s\n", report.summary.duration_seconds)); [INFO] [stdout] 33 + let _ = write!(md, "- **Scan Duration**: {:.2}s\n", report.summary.duration_seconds); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/report/markdown.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | md.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `md.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> src/lib.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | #![warn(clippy::all)] [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` implied by `#[warn(clippy::all)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/report/markdown.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | md.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `md.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> src/lib.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | #![warn(clippy::all)] [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` implied by `#[warn(clippy::all)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | md.push_str(&format!("## {} {} Severity Findings\n\n", emoji, severity)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 73 - md.push_str(&format!("## {} {} Severity Findings\n\n", emoji, severity)); [INFO] [stdout] 73 + let _ = write!(md, "## {} {} Severity Findings\n\n", emoji, severity); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/markdown.rs:73:22 [INFO] [stdout] | [INFO] [stdout] 73 | md.push_str(&format!("## {} {} Severity Findings\n\n", emoji, severity)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 73 - md.push_str(&format!("## {} {} Severity Findings\n\n", emoji, severity)); [INFO] [stdout] 73 + md.push_str(&format!("## {emoji} {severity} Severity Findings\n\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | md.push_str(&format!("## {} {} Severity Findings\n\n", emoji, severity)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 73 - md.push_str(&format!("## {} {} Severity Findings\n\n", emoji, severity)); [INFO] [stdout] 73 + let _ = write!(md, "## {} {} Severity Findings\n\n", emoji, severity); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/markdown.rs:73:22 [INFO] [stdout] | [INFO] [stdout] 73 | md.push_str(&format!("## {} {} Severity Findings\n\n", emoji, severity)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 73 - md.push_str(&format!("## {} {} Severity Findings\n\n", emoji, severity)); [INFO] [stdout] 73 + md.push_str(&format!("## {emoji} {severity} Severity Findings\n\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:76:13 [INFO] [stdout] | [INFO] [stdout] 76 | md.push_str(&format!("### {}.{} {}\n\n", severity, i + 1, finding.title)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 76 - md.push_str(&format!("### {}.{} {}\n\n", severity, i + 1, finding.title)); [INFO] [stdout] 76 + let _ = write!(md, "### {}.{} {}\n\n", severity, i + 1, finding.title); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:76:13 [INFO] [stdout] | [INFO] [stdout] 76 | md.push_str(&format!("### {}.{} {}\n\n", severity, i + 1, finding.title)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 76 - md.push_str(&format!("### {}.{} {}\n\n", severity, i + 1, finding.title)); [INFO] [stdout] 76 + let _ = write!(md, "### {}.{} {}\n\n", severity, i + 1, finding.title); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:78:13 [INFO] [stdout] | [INFO] [stdout] 78 | md.push_str(&format!("- **Category**: `{}`\n", finding.category)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 78 - md.push_str(&format!("- **Category**: `{}`\n", finding.category)); [INFO] [stdout] 78 + let _ = write!(md, "- **Category**: `{}`\n", finding.category); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:78:13 [INFO] [stdout] | [INFO] [stdout] 78 | md.push_str(&format!("- **Category**: `{}`\n", finding.category)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 78 - md.push_str(&format!("- **Category**: `{}`\n", finding.category)); [INFO] [stdout] 78 + let _ = write!(md, "- **Category**: `{}`\n", finding.category); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:79:13 [INFO] [stdout] | [INFO] [stdout] 79 | md.push_str(&format!("- **Severity**: {}\n", severity)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 79 - md.push_str(&format!("- **Severity**: {}\n", severity)); [INFO] [stdout] 79 + let _ = write!(md, "- **Severity**: {}\n", severity); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:79:13 [INFO] [stdout] | [INFO] [stdout] 79 | md.push_str(&format!("- **Severity**: {}\n", severity)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 79 - md.push_str(&format!("- **Severity**: {}\n", severity)); [INFO] [stdout] 79 + let _ = write!(md, "- **Severity**: {}\n", severity); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/markdown.rs:79:26 [INFO] [stdout] | [INFO] [stdout] 79 | md.push_str(&format!("- **Severity**: {}\n", severity)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 79 - md.push_str(&format!("- **Severity**: {}\n", severity)); [INFO] [stdout] 79 + md.push_str(&format!("- **Severity**: {severity}\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/markdown.rs:79:26 [INFO] [stdout] | [INFO] [stdout] 79 | md.push_str(&format!("- **Severity**: {}\n", severity)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 79 - md.push_str(&format!("- **Severity**: {}\n", severity)); [INFO] [stdout] 79 + md.push_str(&format!("- **Severity**: {severity}\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:80:13 [INFO] [stdout] | [INFO] [stdout] 80 | md.push_str(&format!("- **File**: `{}`\n", finding.file.display())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 80 - md.push_str(&format!("- **File**: `{}`\n", finding.file.display())); [INFO] [stdout] 80 + let _ = write!(md, "- **File**: `{}`\n", finding.file.display()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:83:17 [INFO] [stdout] | [INFO] [stdout] 83 | md.push_str(&format!("- **Line**: {}\n", line)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 83 - md.push_str(&format!("- **Line**: {}\n", line)); [INFO] [stdout] 83 + let _ = write!(md, "- **Line**: {}\n", line); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:80:13 [INFO] [stdout] | [INFO] [stdout] 80 | md.push_str(&format!("- **File**: `{}`\n", finding.file.display())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 80 - md.push_str(&format!("- **File**: `{}`\n", finding.file.display())); [INFO] [stdout] 80 + let _ = write!(md, "- **File**: `{}`\n", finding.file.display()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:83:17 [INFO] [stdout] | [INFO] [stdout] 83 | md.push_str(&format!("- **Line**: {}\n", line)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 83 - md.push_str(&format!("- **Line**: {}\n", line)); [INFO] [stdout] 83 + let _ = write!(md, "- **Line**: {}\n", line); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/markdown.rs:83:30 [INFO] [stdout] | [INFO] [stdout] 83 | md.push_str(&format!("- **Line**: {}\n", line)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 83 - md.push_str(&format!("- **Line**: {}\n", line)); [INFO] [stdout] 83 + md.push_str(&format!("- **Line**: {line}\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/markdown.rs:83:30 [INFO] [stdout] | [INFO] [stdout] 83 | md.push_str(&format!("- **Line**: {}\n", line)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 83 - md.push_str(&format!("- **Line**: {}\n", line)); [INFO] [stdout] 83 + md.push_str(&format!("- **Line**: {line}\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:86:13 [INFO] [stdout] | [INFO] [stdout] 86 | md.push_str(&format!("\n**Message**: {}\n\n", finding.message)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 86 - md.push_str(&format!("\n**Message**: {}\n\n", finding.message)); [INFO] [stdout] 86 + let _ = write!(md, "\n**Message**: {}\n\n", finding.message); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:96:17 [INFO] [stdout] | [INFO] [stdout] 96 | md.push_str(&format!("**Recommendation**: {}\n\n", recommendation)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 96 - md.push_str(&format!("**Recommendation**: {}\n\n", recommendation)); [INFO] [stdout] 96 + let _ = write!(md, "**Recommendation**: {}\n\n", recommendation); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/markdown.rs:96:30 [INFO] [stdout] | [INFO] [stdout] 96 | md.push_str(&format!("**Recommendation**: {}\n\n", recommendation)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 96 - md.push_str(&format!("**Recommendation**: {}\n\n", recommendation)); [INFO] [stdout] 96 + md.push_str(&format!("**Recommendation**: {recommendation}\n\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:86:13 [INFO] [stdout] | [INFO] [stdout] 86 | md.push_str(&format!("\n**Message**: {}\n\n", finding.message)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 86 - md.push_str(&format!("\n**Message**: {}\n\n", finding.message)); [INFO] [stdout] 86 + let _ = write!(md, "\n**Message**: {}\n\n", finding.message); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/report/markdown.rs:96:17 [INFO] [stdout] | [INFO] [stdout] 96 | md.push_str(&format!("**Recommendation**: {}\n\n", recommendation)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 96 - md.push_str(&format!("**Recommendation**: {}\n\n", recommendation)); [INFO] [stdout] 96 + let _ = write!(md, "**Recommendation**: {}\n\n", recommendation); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/markdown.rs:96:30 [INFO] [stdout] | [INFO] [stdout] 96 | md.push_str(&format!("**Recommendation**: {}\n\n", recommendation)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 96 - md.push_str(&format!("**Recommendation**: {}\n\n", recommendation)); [INFO] [stdout] 96 + md.push_str(&format!("**Recommendation**: {recommendation}\n\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should put bare URLs between `<`/`>` or make a proper Markdown link [INFO] [stdout] --> src/report/sarif.rs:4:20 [INFO] [stdout] | [INFO] [stdout] 4 | //! Specification: https://sarifweb.azurewebsites.net/ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] = note: `#[warn(clippy::doc_markdown)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/report/sarif.rs:11:1 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn generate(report: &SecurityReport) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should put bare URLs between `<`/`>` or make a proper Markdown link [INFO] [stdout] --> src/report/sarif.rs:4:20 [INFO] [stdout] | [INFO] [stdout] 4 | //! Specification: https://sarifweb.azurewebsites.net/ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] = note: `#[warn(clippy::doc_markdown)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/report/sarif.rs:11:1 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn generate(report: &SecurityReport) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: these match arms have identical bodies [INFO] [stdout] --> src/report/sarif.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 18 | Severity::Critical => "error", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 19 | Severity::High => "error", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is unintentional make the arms return different values [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms [INFO] [stdout] = note: `#[warn(clippy::match_same_arms)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: otherwise merge the patterns into a single arm [INFO] [stdout] | [INFO] [stdout] 18 - Severity::Critical => "error", [INFO] [stdout] 19 - Severity::High => "error", [INFO] [stdout] 18 + Severity::Critical | Severity::High => "error", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: these match arms have identical bodies [INFO] [stdout] --> src/report/sarif.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 18 | Severity::Critical => "error", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 19 | Severity::High => "error", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is unintentional make the arms return different values [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms [INFO] [stdout] = note: `#[warn(clippy::match_same_arms)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: otherwise merge the patterns into a single arm [INFO] [stdout] | [INFO] [stdout] 18 - Severity::Critical => "error", [INFO] [stdout] 19 - Severity::High => "error", [INFO] [stdout] 18 + Severity::Critical | Severity::High => "error", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/report/yaml.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn generate(report: &SecurityReport) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/mod.rs:41:44 [INFO] [stdout] | [INFO] [stdout] 41 | _ => Err(DevtoolsError::Config(format!("Unknown output format: {}", s))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 41 - _ => Err(DevtoolsError::Config(format!("Unknown output format: {}", s))), [INFO] [stdout] 41 + _ => Err(DevtoolsError::Config(format!("Unknown output format: {s}"))), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/report/mod.rs:47:1 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn generate_report(report: &SecurityReport, format: OutputFormat) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/report/mod.rs:57:1 [INFO] [stdout] | [INFO] [stdout] 57 | pub fn write_report(report: &SecurityReport, format: OutputFormat, path: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/clippy.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] = note: `#[warn(clippy::must_use_candidate)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 17 ~ #[must_use] [INFO] [stdout] 18 ~ pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/security/clippy.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn scan(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/report/yaml.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn generate(report: &SecurityReport) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/report/mod.rs:41:44 [INFO] [stdout] | [INFO] [stdout] 41 | _ => Err(DevtoolsError::Config(format!("Unknown output format: {}", s))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 41 - _ => Err(DevtoolsError::Config(format!("Unknown output format: {}", s))), [INFO] [stdout] 41 + _ => Err(DevtoolsError::Config(format!("Unknown output format: {s}"))), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/report/mod.rs:47:1 [INFO] [stdout] | [INFO] [stdout] 47 | pub fn generate_report(report: &SecurityReport, format: OutputFormat) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/report/mod.rs:57:1 [INFO] [stdout] | [INFO] [stdout] 57 | pub fn write_report(report: &SecurityReport, format: OutputFormat, path: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/security/clippy.rs:70:28 [INFO] [stdout] | [INFO] [stdout] 70 | fn is_clippy_available(&self) -> bool { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] = note: `#[warn(clippy::unused_self)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function's return value is unnecessarily wrapped by `Result` [INFO] [stdout] --> src/security/clippy.rs:78:5 [INFO] [stdout] | [INFO] [stdout] 78 | fn parse_clippy_output(&self, output: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_wraps [INFO] [stdout] = note: `#[warn(clippy::unnecessary_wraps)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: remove `Result` from the return type... [INFO] [stdout] | [INFO] [stdout] 78 - fn parse_clippy_output(&self, output: &str) -> Result> { [INFO] [stdout] 78 + fn parse_clippy_output(&self, output: &str) -> std::vec::Vec { [INFO] [stdout] | [INFO] [stdout] help: ...and then remove the surrounding `Ok()` from returning expressions [INFO] [stdout] | [INFO] [stdout] 96 - Ok(findings) [INFO] [stdout] 96 + findings [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/clippy.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] = note: `#[warn(clippy::must_use_candidate)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 17 ~ #[must_use] [INFO] [stdout] 18 ~ pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/security/clippy.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn scan(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/security/clippy.rs:99:29 [INFO] [stdout] | [INFO] [stdout] 99 | fn parse_clippy_message(&self, msg: &serde_json::Value) -> Option { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/security/clippy.rs:114:52 [INFO] [stdout] | [INFO] [stdout] 114 | let line = span.get("line_start").and_then(|l| l.as_u64()).map(|l| l as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the method itself: `serde_json::Value::as_u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] = note: `#[warn(clippy::redundant_closure_for_method_calls)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `u64` to `usize` may truncate the value on targets with 32-bit wide pointers [INFO] [stdout] --> src/security/clippy.rs:114:76 [INFO] [stdout] | [INFO] [stdout] 114 | let line = span.get("line_start").and_then(|l| l.as_u64()).map(|l| l as usize); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] = note: `#[warn(clippy::cast_possible_truncation)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: ... or use `try_from` and handle the error accordingly [INFO] [stdout] | [INFO] [stdout] 114 - let line = span.get("line_start").and_then(|l| l.as_u64()).map(|l| l as usize); [INFO] [stdout] 114 + let line = span.get("line_start").and_then(|l| l.as_u64()).map(|l| usize::try_from(l)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/security/clippy.rs:115:56 [INFO] [stdout] | [INFO] [stdout] 115 | let column = span.get("column_start").and_then(|c| c.as_u64()).map(|c| c as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the method itself: `serde_json::Value::as_u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `u64` to `usize` may truncate the value on targets with 32-bit wide pointers [INFO] [stdout] --> src/security/clippy.rs:115:80 [INFO] [stdout] | [INFO] [stdout] 115 | let column = span.get("column_start").and_then(|c| c.as_u64()).map(|c| c as usize); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] help: ... or use `try_from` and handle the error accordingly [INFO] [stdout] | [INFO] [stdout] 115 - let column = span.get("column_start").and_then(|c| c.as_u64()).map(|c| c as usize); [INFO] [stdout] 115 + let column = span.get("column_start").and_then(|c| c.as_u64()).map(|c| usize::try_from(c)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/security/clippy.rs:123:18 [INFO] [stdout] | [INFO] [stdout] 123 | .map(|s| s.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::string::ToString::to_string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/security/clippy.rs:136:20 [INFO] [stdout] | [INFO] [stdout] 136 | title: format!("Clippy: {}", code), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 136 - title: format!("Clippy: {}", code), [INFO] [stdout] 136 + title: format!("Clippy: {code}"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/security/clippy.rs:70:28 [INFO] [stdout] | [INFO] [stdout] 70 | fn is_clippy_available(&self) -> bool { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] = note: `#[warn(clippy::unused_self)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function's return value is unnecessarily wrapped by `Result` [INFO] [stdout] --> src/security/clippy.rs:78:5 [INFO] [stdout] | [INFO] [stdout] 78 | fn parse_clippy_output(&self, output: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_wraps [INFO] [stdout] = note: `#[warn(clippy::unnecessary_wraps)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: remove `Result` from the return type... [INFO] [stdout] | [INFO] [stdout] 78 - fn parse_clippy_output(&self, output: &str) -> Result> { [INFO] [stdout] 78 + fn parse_clippy_output(&self, output: &str) -> std::vec::Vec { [INFO] [stdout] | [INFO] [stdout] help: ...and then remove the surrounding `Ok()` from returning expressions [INFO] [stdout] | [INFO] [stdout] 96 - Ok(findings) [INFO] [stdout] 96 + findings [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/secret.rs:93:12 [INFO] [stdout] | [INFO] [stdout] 93 | pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 93 ~ #[must_use] [INFO] [stdout] 94 ~ pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/security/secret.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 100 | pub fn scan(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/security/clippy.rs:99:29 [INFO] [stdout] | [INFO] [stdout] 99 | fn parse_clippy_message(&self, msg: &serde_json::Value) -> Option { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/security/clippy.rs:114:52 [INFO] [stdout] | [INFO] [stdout] 114 | let line = span.get("line_start").and_then(|l| l.as_u64()).map(|l| l as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the method itself: `serde_json::Value::as_u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] = note: `#[warn(clippy::redundant_closure_for_method_calls)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `u64` to `usize` may truncate the value on targets with 32-bit wide pointers [INFO] [stdout] --> src/security/clippy.rs:114:76 [INFO] [stdout] | [INFO] [stdout] 114 | let line = span.get("line_start").and_then(|l| l.as_u64()).map(|l| l as usize); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] = note: `#[warn(clippy::cast_possible_truncation)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] help: ... or use `try_from` and handle the error accordingly [INFO] [stdout] | [INFO] [stdout] 114 - let line = span.get("line_start").and_then(|l| l.as_u64()).map(|l| l as usize); [INFO] [stdout] 114 + let line = span.get("line_start").and_then(|l| l.as_u64()).map(|l| usize::try_from(l)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/security/clippy.rs:115:56 [INFO] [stdout] | [INFO] [stdout] 115 | let column = span.get("column_start").and_then(|c| c.as_u64()).map(|c| c as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the method itself: `serde_json::Value::as_u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `u64` to `usize` may truncate the value on targets with 32-bit wide pointers [INFO] [stdout] --> src/security/clippy.rs:115:80 [INFO] [stdout] | [INFO] [stdout] 115 | let column = span.get("column_start").and_then(|c| c.as_u64()).map(|c| c as usize); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] help: ... or use `try_from` and handle the error accordingly [INFO] [stdout] | [INFO] [stdout] 115 - let column = span.get("column_start").and_then(|c| c.as_u64()).map(|c| c as usize); [INFO] [stdout] 115 + let column = span.get("column_start").and_then(|c| c.as_u64()).map(|c| usize::try_from(c)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/security/clippy.rs:123:18 [INFO] [stdout] | [INFO] [stdout] 123 | .map(|s| s.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::string::ToString::to_string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/security/clippy.rs:136:20 [INFO] [stdout] | [INFO] [stdout] 136 | title: format!("Clippy: {}", code), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 136 - title: format!("Clippy: {}", code), [INFO] [stdout] 136 + title: format!("Clippy: {code}"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use Option::map_or instead of an if let/else [INFO] [stdout] --> src/security/secret.rs:134:9 [INFO] [stdout] | [INFO] [stdout] 134 | / if let Some(ext) = path.extension().and_then(|s| s.to_str()) { [INFO] [stdout] 135 | | matches!( [INFO] [stdout] 136 | | ext, [INFO] [stdout] 137 | | "rs" | "toml" | "yaml" | "yml" | "json" | "env" | "sh" | "py" | "js" | "ts" [INFO] [stdout] ... | [INFO] [stdout] 140 | | false [INFO] [stdout] 141 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else [INFO] [stdout] = note: `#[warn(clippy::option_if_let_else)]` implied by `#[warn(clippy::nursery)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 134 ~ path.extension().and_then(|s| s.to_str()).map_or(false, |ext| matches!( [INFO] [stdout] 135 + ext, [INFO] [stdout] 136 + "rs" | "toml" | "yaml" | "yml" | "json" | "env" | "sh" | "py" | "js" | "ts" [INFO] [stdout] 137 + )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function's return value is unnecessarily wrapped by `Result` [INFO] [stdout] --> src/security/secret.rs:144:5 [INFO] [stdout] | [INFO] [stdout] 144 | fn scan_file(&self, path: &Path, content: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_wraps [INFO] [stdout] help: remove `Result` from the return type... [INFO] [stdout] | [INFO] [stdout] 144 - fn scan_file(&self, path: &Path, content: &str) -> Result> { [INFO] [stdout] 144 + fn scan_file(&self, path: &Path, content: &str) -> std::vec::Vec { [INFO] [stdout] | [INFO] [stdout] help: ...and then remove the surrounding `Ok()` from returning expressions [INFO] [stdout] | [INFO] [stdout] 192 - Ok(findings) [INFO] [stdout] 192 + findings [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/secret.rs:93:12 [INFO] [stdout] | [INFO] [stdout] 93 | pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 93 ~ #[must_use] [INFO] [stdout] 94 ~ pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/security/secret.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 100 | pub fn scan(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use Option::map_or instead of an if let/else [INFO] [stdout] --> src/security/secret.rs:134:9 [INFO] [stdout] | [INFO] [stdout] 134 | / if let Some(ext) = path.extension().and_then(|s| s.to_str()) { [INFO] [stdout] 135 | | matches!( [INFO] [stdout] 136 | | ext, [INFO] [stdout] 137 | | "rs" | "toml" | "yaml" | "yml" | "json" | "env" | "sh" | "py" | "js" | "ts" [INFO] [stdout] ... | [INFO] [stdout] 140 | | false [INFO] [stdout] 141 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else [INFO] [stdout] = note: `#[warn(clippy::option_if_let_else)]` implied by `#[warn(clippy::nursery)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 134 ~ path.extension().and_then(|s| s.to_str()).map_or(false, |ext| matches!( [INFO] [stdout] 135 + ext, [INFO] [stdout] 136 + "rs" | "toml" | "yaml" | "yml" | "json" | "env" | "sh" | "py" | "js" | "ts" [INFO] [stdout] 137 + )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function's return value is unnecessarily wrapped by `Result` [INFO] [stdout] --> src/security/secret.rs:144:5 [INFO] [stdout] | [INFO] [stdout] 144 | fn scan_file(&self, path: &Path, content: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_wraps [INFO] [stdout] help: remove `Result` from the return type... [INFO] [stdout] | [INFO] [stdout] 144 - fn scan_file(&self, path: &Path, content: &str) -> Result> { [INFO] [stdout] 144 + fn scan_file(&self, path: &Path, content: &str) -> std::vec::Vec { [INFO] [stdout] | [INFO] [stdout] help: ...and then remove the surrounding `Ok()` from returning expressions [INFO] [stdout] | [INFO] [stdout] 192 - Ok(findings) [INFO] [stdout] 192 + findings [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/security/secret.rs:217:66 [INFO] [stdout] | [INFO] [stdout] 217 | redacted = redacted.replace(secret_str, &format!("{}{}",visible, masked)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 217 - redacted = redacted.replace(secret_str, &format!("{}{}",visible, masked)); [INFO] [stdout] 217 + redacted = redacted.replace(secret_str, &format!("{visible}{masked}")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/sql.rs:68:12 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 68 ~ #[must_use] [INFO] [stdout] 69 ~ pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/security/sql.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | pub fn scan(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function's return value is unnecessarily wrapped by `Result` [INFO] [stdout] --> src/security/sql.rs:104:5 [INFO] [stdout] | [INFO] [stdout] 104 | fn scan_file(&self, path: &Path, content: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_wraps [INFO] [stdout] help: remove `Result` from the return type... [INFO] [stdout] | [INFO] [stdout] 104 - fn scan_file(&self, path: &Path, content: &str) -> Result> { [INFO] [stdout] 104 + fn scan_file(&self, path: &Path, content: &str) -> std::vec::Vec { [INFO] [stdout] | [INFO] [stdout] help: ...and then remove the surrounding `Ok()` from returning expressions [INFO] [stdout] | [INFO] [stdout] 141 - Ok(findings) [INFO] [stdout] 141 + findings [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/security/secret.rs:217:66 [INFO] [stdout] | [INFO] [stdout] 217 | redacted = redacted.replace(secret_str, &format!("{}{}",visible, masked)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 217 - redacted = redacted.replace(secret_str, &format!("{}{}",visible, masked)); [INFO] [stdout] 217 + redacted = redacted.replace(secret_str, &format!("{visible}{masked}")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/unsafe_code.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 18 ~ #[must_use] [INFO] [stdout] 19 ~ pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/security/unsafe_code.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | pub fn scan(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/sql.rs:68:12 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 68 ~ #[must_use] [INFO] [stdout] 69 ~ pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/security/sql.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | pub fn scan(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function's return value is unnecessarily wrapped by `Result` [INFO] [stdout] --> src/security/unsafe_code.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | fn scan_file(&self, path: &Path, content: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_wraps [INFO] [stdout] help: remove `Result` from the return type... [INFO] [stdout] | [INFO] [stdout] 54 - fn scan_file(&self, path: &Path, content: &str) -> Result> { [INFO] [stdout] 54 + fn scan_file(&self, path: &Path, content: &str) -> std::vec::Vec { [INFO] [stdout] | [INFO] [stdout] help: ...and then remove the surrounding `Ok()` from returning expressions [INFO] [stdout] | [INFO] [stdout] 80 - Ok(findings) [INFO] [stdout] 80 + findings [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: more than 3 bools in a struct [INFO] [stdout] --> src/security/mod.rs:21:1 [INFO] [stdout] | [INFO] [stdout] 21 | / pub struct ScanConfig { [INFO] [stdout] 22 | | /// Project root directory. [INFO] [stdout] 23 | | pub project_root: PathBuf, [INFO] [stdout] ... | [INFO] [stdout] 38 | | pub max_workers: Option, [INFO] [stdout] 39 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: consider using a state machine or refactoring bools into two-variant enums [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#struct_excessive_bools [INFO] [stdout] = note: `#[warn(clippy::struct_excessive_bools)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function's return value is unnecessarily wrapped by `Result` [INFO] [stdout] --> src/security/sql.rs:104:5 [INFO] [stdout] | [INFO] [stdout] 104 | fn scan_file(&self, path: &Path, content: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_wraps [INFO] [stdout] help: remove `Result` from the return type... [INFO] [stdout] | [INFO] [stdout] 104 - fn scan_file(&self, path: &Path, content: &str) -> Result> { [INFO] [stdout] 104 + fn scan_file(&self, path: &Path, content: &str) -> std::vec::Vec { [INFO] [stdout] | [INFO] [stdout] help: ...and then remove the surrounding `Ok()` from returning expressions [INFO] [stdout] | [INFO] [stdout] 141 - Ok(findings) [INFO] [stdout] 141 + findings [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/security/sql.rs:167:17 [INFO] [stdout] | [INFO] [stdout] 167 | assert!(findings.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!findings.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` implied by `#[warn(clippy::all)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/unsafe_code.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 18 ~ #[must_use] [INFO] [stdout] 19 ~ pub fn new(project_root: &Path) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/security/unsafe_code.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | pub fn scan(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function's return value is unnecessarily wrapped by `Result` [INFO] [stdout] --> src/security/unsafe_code.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | fn scan_file(&self, path: &Path, content: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_wraps [INFO] [stdout] help: remove `Result` from the return type... [INFO] [stdout] | [INFO] [stdout] 54 - fn scan_file(&self, path: &Path, content: &str) -> Result> { [INFO] [stdout] 54 + fn scan_file(&self, path: &Path, content: &str) -> std::vec::Vec { [INFO] [stdout] | [INFO] [stdout] help: ...and then remove the surrounding `Ok()` from returning expressions [INFO] [stdout] | [INFO] [stdout] 80 - Ok(findings) [INFO] [stdout] 80 + findings [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/security/mod.rs:71:13 [INFO] [stdout] | [INFO] [stdout] 71 | Severity::Low => write!(f, "LOW"), [INFO] [stdout] | ^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: more than 3 bools in a struct [INFO] [stdout] --> src/security/mod.rs:21:1 [INFO] [stdout] | [INFO] [stdout] 21 | / pub struct ScanConfig { [INFO] [stdout] 22 | | /// Project root directory. [INFO] [stdout] 23 | | pub project_root: PathBuf, [INFO] [stdout] ... | [INFO] [stdout] 38 | | pub max_workers: Option, [INFO] [stdout] 39 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: consider using a state machine or refactoring bools into two-variant enums [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#struct_excessive_bools [INFO] [stdout] = note: `#[warn(clippy::struct_excessive_bools)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/security/mod.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | Severity::Medium => write!(f, "MEDIUM"), [INFO] [stdout] | ^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/security/mod.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 73 | Severity::High => write!(f, "HIGH"), [INFO] [stdout] | ^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/security/mod.rs:74:13 [INFO] [stdout] | [INFO] [stdout] 74 | Severity::Critical => write!(f, "CRITICAL"), [INFO] [stdout] | ^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/security/mod.rs:85:34 [INFO] [stdout] | [INFO] [stdout] 85 | /// Finding category (e.g., "unsafe_code", "secret", "sql_injection"). [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 85 - /// Finding category (e.g., "unsafe_code", "secret", "sql_injection"). [INFO] [stdout] 85 + /// Finding category (e.g., "`unsafe_code`", "secret", "sql_injection"). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/security/mod.rs:85:59 [INFO] [stdout] | [INFO] [stdout] 85 | /// Finding category (e.g., "unsafe_code", "secret", "sql_injection"). [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 85 - /// Finding category (e.g., "unsafe_code", "secret", "sql_injection"). [INFO] [stdout] 85 + /// Finding category (e.g., "unsafe_code", "secret", "`sql_injection`"). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/security/mod.rs:71:13 [INFO] [stdout] | [INFO] [stdout] 71 | Severity::Low => write!(f, "LOW"), [INFO] [stdout] | ^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/security/mod.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | Severity::Medium => write!(f, "MEDIUM"), [INFO] [stdout] | ^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/security/mod.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 73 | Severity::High => write!(f, "HIGH"), [INFO] [stdout] | ^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/security/mod.rs:74:13 [INFO] [stdout] | [INFO] [stdout] 74 | Severity::Critical => write!(f, "CRITICAL"), [INFO] [stdout] | ^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/security/mod.rs:85:34 [INFO] [stdout] | [INFO] [stdout] 85 | /// Finding category (e.g., "unsafe_code", "secret", "sql_injection"). [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 85 - /// Finding category (e.g., "unsafe_code", "secret", "sql_injection"). [INFO] [stdout] 85 + /// Finding category (e.g., "`unsafe_code`", "secret", "sql_injection"). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/security/mod.rs:85:59 [INFO] [stdout] | [INFO] [stdout] 85 | /// Finding category (e.g., "unsafe_code", "secret", "sql_injection"). [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 85 - /// Finding category (e.g., "unsafe_code", "secret", "sql_injection"). [INFO] [stdout] 85 + /// Finding category (e.g., "unsafe_code", "secret", "`sql_injection`"). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/mod.rs:159:12 [INFO] [stdout] | [INFO] [stdout] 159 | pub fn new(project_root: PathBuf, findings: Vec) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 159 ~ #[must_use] [INFO] [stdout] 160 ~ pub fn new(project_root: PathBuf, findings: Vec) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/mod.rs:220:12 [INFO] [stdout] | [INFO] [stdout] 220 | pub fn has_high_severity(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 220 ~ #[must_use] [INFO] [stdout] 221 ~ pub fn has_high_severity(&self) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be a `const fn` [INFO] [stdout] --> src/security/mod.rs:220:5 [INFO] [stdout] | [INFO] [stdout] 220 | / pub fn has_high_severity(&self) -> bool { [INFO] [stdout] 221 | | self.summary.critical > 0 || self.summary.high > 0 [INFO] [stdout] 222 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn [INFO] [stdout] = note: `#[warn(clippy::missing_const_for_fn)]` implied by `#[warn(clippy::nursery)]` [INFO] [stdout] help: make the function `const` [INFO] [stdout] | [INFO] [stdout] 220 | pub const fn has_high_severity(&self) -> bool { [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/mod.rs:232:12 [INFO] [stdout] | [INFO] [stdout] 232 | pub fn new(config: ScanConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 232 ~ #[must_use] [INFO] [stdout] 233 ~ pub fn new(config: ScanConfig) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be a `const fn` [INFO] [stdout] --> src/security/mod.rs:232:5 [INFO] [stdout] | [INFO] [stdout] 232 | / pub fn new(config: ScanConfig) -> Self { [INFO] [stdout] 233 | | Self { config } [INFO] [stdout] 234 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn [INFO] [stdout] help: make the function `const` [INFO] [stdout] | [INFO] [stdout] 232 | pub const fn new(config: ScanConfig) -> Self { [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/security/mod.rs:237:5 [INFO] [stdout] | [INFO] [stdout] 237 | pub fn scan(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/mod.rs:159:12 [INFO] [stdout] | [INFO] [stdout] 159 | pub fn new(project_root: PathBuf, findings: Vec) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 159 ~ #[must_use] [INFO] [stdout] 160 ~ pub fn new(project_root: PathBuf, findings: Vec) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/mod.rs:220:12 [INFO] [stdout] | [INFO] [stdout] 220 | pub fn has_high_severity(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 220 ~ #[must_use] [INFO] [stdout] 221 ~ pub fn has_high_severity(&self) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be a `const fn` [INFO] [stdout] --> src/security/mod.rs:220:5 [INFO] [stdout] | [INFO] [stdout] 220 | / pub fn has_high_severity(&self) -> bool { [INFO] [stdout] 221 | | self.summary.critical > 0 || self.summary.high > 0 [INFO] [stdout] 222 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn [INFO] [stdout] = note: `#[warn(clippy::missing_const_for_fn)]` implied by `#[warn(clippy::nursery)]` [INFO] [stdout] help: make the function `const` [INFO] [stdout] | [INFO] [stdout] 220 | pub const fn has_high_severity(&self) -> bool { [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method could have a `#[must_use]` attribute [INFO] [stdout] --> src/security/mod.rs:232:12 [INFO] [stdout] | [INFO] [stdout] 232 | pub fn new(config: ScanConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate [INFO] [stdout] help: add the attribute [INFO] [stdout] | [INFO] [stdout] 232 ~ #[must_use] [INFO] [stdout] 233 ~ pub fn new(config: ScanConfig) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be a `const fn` [INFO] [stdout] --> src/security/mod.rs:232:5 [INFO] [stdout] | [INFO] [stdout] 232 | / pub fn new(config: ScanConfig) -> Self { [INFO] [stdout] 233 | | Self { config } [INFO] [stdout] 234 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn [INFO] [stdout] help: make the function `const` [INFO] [stdout] | [INFO] [stdout] 232 | pub const fn new(config: ScanConfig) -> Self { [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function returning `Result` missing `# Errors` section [INFO] [stdout] --> src/security/mod.rs:237:5 [INFO] [stdout] | [INFO] [stdout] 237 | pub fn scan(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/dependency_scan.rs:139:8 [INFO] [stdout] | [INFO] [stdout] 139 | if !Command::new("cargo") [INFO] [stdout] | ________^ [INFO] [stdout] 140 | | .arg("outdated") [INFO] [stdout] 141 | | .arg("--version") [INFO] [stdout] 142 | | .output() [INFO] [stdout] 143 | | .is_ok() [INFO] [stdout] | |________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 139 ~ if Command::new("cargo") [INFO] [stdout] 140 + .arg("outdated") [INFO] [stdout] 141 + .arg("--version") [INFO] [stdout] 142 + .output().is_err() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/dependency_scan.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | if !Command::new("cargo") [INFO] [stdout] | ________^ [INFO] [stdout] 165 | | .arg("+nightly") [INFO] [stdout] 166 | | .arg("udeps") [INFO] [stdout] 167 | | .arg("--version") [INFO] [stdout] 168 | | .output() [INFO] [stdout] 169 | | .is_ok() [INFO] [stdout] | |________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 164 ~ if Command::new("cargo") [INFO] [stdout] 165 + .arg("+nightly") [INFO] [stdout] 166 + .arg("udeps") [INFO] [stdout] 167 + .arg("--version") [INFO] [stdout] 168 + .output().is_err() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/dependency_scan.rs:139:8 [INFO] [stdout] | [INFO] [stdout] 139 | if !Command::new("cargo") [INFO] [stdout] | ________^ [INFO] [stdout] 140 | | .arg("outdated") [INFO] [stdout] 141 | | .arg("--version") [INFO] [stdout] 142 | | .output() [INFO] [stdout] 143 | | .is_ok() [INFO] [stdout] | |________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 139 ~ if Command::new("cargo") [INFO] [stdout] 140 + .arg("outdated") [INFO] [stdout] 141 + .arg("--version") [INFO] [stdout] 142 + .output().is_err() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/bin/dependency_scan.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | if !Command::new("cargo") [INFO] [stdout] | ________^ [INFO] [stdout] 165 | | .arg("+nightly") [INFO] [stdout] 166 | | .arg("udeps") [INFO] [stdout] 167 | | .arg("--version") [INFO] [stdout] 168 | | .output() [INFO] [stdout] 169 | | .is_ok() [INFO] [stdout] | |________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 164 ~ if Command::new("cargo") [INFO] [stdout] 165 + .arg("+nightly") [INFO] [stdout] 166 + .arg("udeps") [INFO] [stdout] 167 + .arg("--version") [INFO] [stdout] 168 + .output().is_err() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 42.19s [INFO] running `Command { std: "docker" "inspect" "3c0bd921f7cd662661f13c6e89977f579568354b114e4884420db896a03915ce", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3c0bd921f7cd662661f13c6e89977f579568354b114e4884420db896a03915ce", kill_on_drop: false }` [INFO] [stdout] 3c0bd921f7cd662661f13c6e89977f579568354b114e4884420db896a03915ce