[INFO] crate fac 0.4.0 is already in cache [INFO] extracting crate fac 0.4.0 into work/ex/clippy-test-run/sources/stable/reg/fac/0.4.0 [INFO] extracting crate fac 0.4.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/fac/0.4.0 [INFO] validating manifest of fac-0.4.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of fac-0.4.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing fac-0.4.0 [INFO] finished frobbing fac-0.4.0 [INFO] frobbed toml for fac-0.4.0 written to work/ex/clippy-test-run/sources/stable/reg/fac/0.4.0/Cargo.toml [INFO] started frobbing fac-0.4.0 [INFO] finished frobbing fac-0.4.0 [INFO] frobbed toml for fac-0.4.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/fac/0.4.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting fac-0.4.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/fac/0.4.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] f61c876f9944d06d37777b73ab26c3f5e2d0ec8b626ac563b8f0f94ce0ced38b [INFO] running `"docker" "start" "-a" "f61c876f9944d06d37777b73ab26c3f5e2d0ec8b626ac563b8f0f94ce0ced38b"` [INFO] [stderr] Compiling fac v0.4.0 (/opt/crater/workdir) [INFO] [stderr] Checking metrohash v1.0.6 [INFO] [stderr] Compiling seccomp-droundy-sys v0.1.2 [INFO] [stderr] Checking crude-profiler v0.1.7 [INFO] [stderr] Checking tinyset v0.0.12 [INFO] [stderr] Checking clap v2.23.3 [INFO] [stderr] Checking inotify v0.6.1 [INFO] [stderr] Checking notify v4.0.7 [INFO] [stderr] Checking seccomp-droundy v0.1.0 [INFO] [stderr] Checking bigbro v0.4.0 [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/flags.rs:224:9 [INFO] [stderr] | [INFO] [stderr] 224 | strictness: strictness, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `strictness` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/flags.rs:225:9 [INFO] [stderr] | [INFO] [stderr] 225 | targets: targets, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `targets` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/flags.rs:234:9 [INFO] [stderr] | [INFO] [stderr] 234 | include_in_tar: include_in_tar, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `include_in_tar` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/mod.rs:1087:13 [INFO] [stderr] | [INFO] [stderr] 1087 | is_in_git: is_in_git, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_in_git` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/mod.rs:1132:13 [INFO] [stderr] | [INFO] [stderr] 1132 | cache_prefixes: cache_prefixes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `cache_prefixes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/mod.rs:1133:13 [INFO] [stderr] | [INFO] [stderr] 1133 | cache_suffixes: cache_suffixes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `cache_suffixes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/mod.rs:1136:13 [INFO] [stderr] | [INFO] [stderr] 1136 | facfile: facfile, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `facfile` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/mod.rs:1137:13 [INFO] [stderr] | [INFO] [stderr] 1137 | linenum: linenum, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `linenum` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/mod.rs:1139:13 [INFO] [stderr] | [INFO] [stderr] 1139 | is_default: is_default, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_default` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/build/mod.rs:1526:21 [INFO] [stderr] | [INFO] [stderr] 1526 | write!(f, "B {:.0}\n", 1000.0*duration_to_f64(self.rule(r).build_time))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/build/mod.rs:1599:9 [INFO] [stderr] | [INFO] [stderr] 1599 | write!(f, ".PHONY: all clean\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/flags.rs:224:9 [INFO] [stderr] | [INFO] [stderr] 224 | strictness: strictness, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `strictness` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/flags.rs:225:9 [INFO] [stderr] | [INFO] [stderr] 225 | targets: targets, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `targets` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/flags.rs:234:9 [INFO] [stderr] | [INFO] [stderr] 234 | include_in_tar: include_in_tar, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `include_in_tar` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/mod.rs:1087:13 [INFO] [stderr] | [INFO] [stderr] 1087 | is_in_git: is_in_git, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_in_git` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/mod.rs:1132:13 [INFO] [stderr] | [INFO] [stderr] 1132 | cache_prefixes: cache_prefixes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `cache_prefixes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/mod.rs:1133:13 [INFO] [stderr] | [INFO] [stderr] 1133 | cache_suffixes: cache_suffixes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `cache_suffixes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/mod.rs:1136:13 [INFO] [stderr] | [INFO] [stderr] 1136 | facfile: facfile, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `facfile` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/mod.rs:1137:13 [INFO] [stderr] | [INFO] [stderr] 1137 | linenum: linenum, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `linenum` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/build/mod.rs:1139:13 [INFO] [stderr] | [INFO] [stderr] 1139 | is_default: is_default, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_default` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/build/mod.rs:1526:21 [INFO] [stderr] | [INFO] [stderr] 1526 | write!(f, "B {:.0}\n", 1000.0*duration_to_f64(self.rule(r).build_time))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/build/mod.rs:1599:9 [INFO] [stderr] | [INFO] [stderr] 1599 | write!(f, ".PHONY: all clean\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:1175:25 [INFO] [stderr] | [INFO] [stderr] 1175 | / return Err( [INFO] [stderr] 1176 | | io::Error::new( [INFO] [stderr] 1177 | | io::ErrorKind::Other, [INFO] [stderr] 1178 | | format!("error: {}:{}: {}", &fp, lineno, [INFO] [stderr] 1179 | | &format!("'{}' line must follow '|' or '?'",c)))), [INFO] [stderr] | |_________________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 1175 | Err( [INFO] [stderr] 1176 | io::Error::new( [INFO] [stderr] 1177 | io::ErrorKind::Other, [INFO] [stderr] 1178 | format!("error: {}:{}: {}", &fp, lineno, [INFO] [stderr] 1179 | &format!("'{}' line must follow '|' or '?'",c)))), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/build/mod.rs:1339:28 [INFO] [stderr] | [INFO] [stderr] 1339 | } else { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 1340 | | if !self[f].is_in_git { [INFO] [stderr] 1341 | | // looks like a stray output that deserves [INFO] [stderr] 1342 | | // to be cleaned up before we forget about [INFO] [stderr] ... | [INFO] [stderr] 1345 | | } [INFO] [stderr] 1346 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1339 | } else if !self[f].is_in_git { [INFO] [stderr] 1340 | // looks like a stray output that deserves [INFO] [stderr] 1341 | // to be cleaned up before we forget about [INFO] [stderr] 1342 | // it! [INFO] [stderr] 1343 | self[f].unlink(); [INFO] [stderr] 1344 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/build/mod.rs:2245:25 [INFO] [stderr] | [INFO] [stderr] 2245 | / if !self.rule(r).inputs.contains(&i) { [INFO] [stderr] 2246 | | if self[i].rule.is_some() { [INFO] [stderr] 2247 | | let mut have_rule = false; [INFO] [stderr] 2248 | | for &j in self.rule(r).inputs.iter() { [INFO] [stderr] ... | [INFO] [stderr] 2257 | | } [INFO] [stderr] 2258 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2245 | if !self.rule(r).inputs.contains(&i) && self[i].rule.is_some() { [INFO] [stderr] 2246 | let mut have_rule = false; [INFO] [stderr] 2247 | for &j in self.rule(r).inputs.iter() { [INFO] [stderr] 2248 | have_rule = have_rule || (self[j].rule == self[i].rule) [INFO] [stderr] 2249 | } [INFO] [stderr] 2250 | if !have_rule { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/build/mod.rs:2298:9 [INFO] [stderr] | [INFO] [stderr] 2298 | / if !self.flags.dry_run { [INFO] [stderr] 2299 | | if self.process_killers.len() != self.statuses[Status::Building].len() { [INFO] [stderr] 2300 | | for &k in self.process_killers.keys() { [INFO] [stderr] 2301 | | println!("process killer for {}", self.pretty_rule(k)); [INFO] [stderr] ... | [INFO] [stderr] 2307 | | // assert_eq!(self.process_killers.len(), self.statuses[Status::Building].len()); [INFO] [stderr] 2308 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2298 | if !self.flags.dry_run && self.process_killers.len() != self.statuses[Status::Building].len() { [INFO] [stderr] 2299 | for &k in self.process_killers.keys() { [INFO] [stderr] 2300 | println!("process killer for {}", self.pretty_rule(k)); [INFO] [stderr] 2301 | } [INFO] [stderr] 2302 | for r in self.statuses[Status::Building].iter() { [INFO] [stderr] 2303 | println!("building {}", self.pretty_rule(r)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:1175:25 [INFO] [stderr] | [INFO] [stderr] 1175 | / return Err( [INFO] [stderr] 1176 | | io::Error::new( [INFO] [stderr] 1177 | | io::ErrorKind::Other, [INFO] [stderr] 1178 | | format!("error: {}:{}: {}", &fp, lineno, [INFO] [stderr] 1179 | | &format!("'{}' line must follow '|' or '?'",c)))), [INFO] [stderr] | |_________________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 1175 | Err( [INFO] [stderr] 1176 | io::Error::new( [INFO] [stderr] 1177 | io::ErrorKind::Other, [INFO] [stderr] 1178 | format!("error: {}:{}: {}", &fp, lineno, [INFO] [stderr] 1179 | &format!("'{}' line must follow '|' or '?'",c)))), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/build/mod.rs:1339:28 [INFO] [stderr] | [INFO] [stderr] 1339 | } else { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 1340 | | if !self[f].is_in_git { [INFO] [stderr] 1341 | | // looks like a stray output that deserves [INFO] [stderr] 1342 | | // to be cleaned up before we forget about [INFO] [stderr] ... | [INFO] [stderr] 1345 | | } [INFO] [stderr] 1346 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1339 | } else if !self[f].is_in_git { [INFO] [stderr] 1340 | // looks like a stray output that deserves [INFO] [stderr] 1341 | // to be cleaned up before we forget about [INFO] [stderr] 1342 | // it! [INFO] [stderr] 1343 | self[f].unlink(); [INFO] [stderr] 1344 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/build/mod.rs:2245:25 [INFO] [stderr] | [INFO] [stderr] 2245 | / if !self.rule(r).inputs.contains(&i) { [INFO] [stderr] 2246 | | if self[i].rule.is_some() { [INFO] [stderr] 2247 | | let mut have_rule = false; [INFO] [stderr] 2248 | | for &j in self.rule(r).inputs.iter() { [INFO] [stderr] ... | [INFO] [stderr] 2257 | | } [INFO] [stderr] 2258 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2245 | if !self.rule(r).inputs.contains(&i) && self[i].rule.is_some() { [INFO] [stderr] 2246 | let mut have_rule = false; [INFO] [stderr] 2247 | for &j in self.rule(r).inputs.iter() { [INFO] [stderr] 2248 | have_rule = have_rule || (self[j].rule == self[i].rule) [INFO] [stderr] 2249 | } [INFO] [stderr] 2250 | if !have_rule { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/build/mod.rs:2298:9 [INFO] [stderr] | [INFO] [stderr] 2298 | / if !self.flags.dry_run { [INFO] [stderr] 2299 | | if self.process_killers.len() != self.statuses[Status::Building].len() { [INFO] [stderr] 2300 | | for &k in self.process_killers.keys() { [INFO] [stderr] 2301 | | println!("process killer for {}", self.pretty_rule(k)); [INFO] [stderr] ... | [INFO] [stderr] 2307 | | // assert_eq!(self.process_killers.len(), self.statuses[Status::Building].len()); [INFO] [stderr] 2308 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2298 | if !self.flags.dry_run && self.process_killers.len() != self.statuses[Status::Building].len() { [INFO] [stderr] 2299 | for &k in self.process_killers.keys() { [INFO] [stderr] 2300 | println!("process killer for {}", self.pretty_rule(k)); [INFO] [stderr] 2301 | } [INFO] [stderr] 2302 | for r in self.statuses[Status::Building].iter() { [INFO] [stderr] 2303 | println!("building {}", self.pretty_rule(r)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/git.rs:71:12 [INFO] [stderr] | [INFO] [stderr] 71 | if s.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is used to index `out` [INFO] [stderr] --> src/build/hashstat.rs:59:14 [INFO] [stderr] | [INFO] [stderr] 59 | for x in 0..16 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 59 | for (x, ) in out.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is used to index `i` [INFO] [stderr] --> src/build/hashstat.rs:73:14 [INFO] [stderr] | [INFO] [stderr] 73 | for x in 0..16 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 73 | for (x, ) in i.iter().enumerate().take(16) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/build/hashstat.rs:79:16 [INFO] [stderr] | [INFO] [stderr] 79 | out += (hexit as u64) << (x*4); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(hexit)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/build/hashstat.rs:87:39 [INFO] [stderr] | [INFO] [stderr] 87 | let mut v = Vec::from(&encode(self.size as u64 + ((self.time_ns as u64) << 32))[..]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u64::from(self.size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/build/hashstat.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | / match hashstat(f) { [INFO] [stderr] 177 | | Ok(h) => { [INFO] [stderr] 178 | | *self = h; [INFO] [stderr] 179 | | }, [INFO] [stderr] ... | [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 176 | if let Ok(h) = hashstat(f) { [INFO] [stderr] 177 | *self = h; [INFO] [stderr] 178 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/build/flags.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn args<'a>() -> Flags { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:218:50 [INFO] [stderr] | [INFO] [stderr] 218 | log_output: m.value_of("log-output").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:226:50 [INFO] [stderr] | [INFO] [stderr] 226 | parse_only: m.value_of("parse-only").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:228:46 [INFO] [stderr] | [INFO] [stderr] 228 | makefile: m.value_of("makefile").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:229:44 [INFO] [stderr] | [INFO] [stderr] 229 | tupfile: m.value_of("tupfile").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:230:40 [INFO] [stderr] | [INFO] [stderr] 230 | ninja: m.value_of("ninja").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:231:44 [INFO] [stderr] | [INFO] [stderr] 231 | dotfile: m.value_of("dotfile").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:232:42 [INFO] [stderr] | [INFO] [stderr] 232 | script: m.value_of("script").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:233:36 [INFO] [stderr] | [INFO] [stderr] 233 | tar: m.value_of("tar").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/build/mod.rs:281:9 [INFO] [stderr] | [INFO] [stderr] 281 | self.0 as u64 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(self.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/build/mod.rs:337:16 [INFO] [stderr] | [INFO] [stderr] 337 | fn is_file(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/build/mod.rs:341:15 [INFO] [stderr] | [INFO] [stderr] 341 | fn is_dir(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/build/mod.rs:362:9 [INFO] [stderr] | [INFO] [stderr] 362 | self.0 as u64 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(self.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/mod.rs:532:34 [INFO] [stderr] | [INFO] [stderr] 532 | statuses: StatusMap::new(|| Set64::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Set64::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/build/mod.rs:542:9 [INFO] [stderr] | [INFO] [stderr] 542 | for ref f in git::ls_files() { [INFO] [stderr] | ^^^^^ --------------- help: try: `let f = &git::ls_files();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/mod.rs:556:38 [INFO] [stderr] | [INFO] [stderr] 556 | statuses: StatusMap::new(|| Set64::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Set64::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/build/mod.rs:566:13 [INFO] [stderr] | [INFO] [stderr] 566 | for ref f in git::ls_files() { [INFO] [stderr] | ^^^^^ --------------- help: try: `let f = &git::ls_files();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 47 [INFO] [stderr] --> src/build/mod.rs:573:5 [INFO] [stderr] | [INFO] [stderr] 573 | / pub fn build(mut self) -> i32 { [INFO] [stderr] 574 | | let _g = crude_profiler::push("init"); [INFO] [stderr] 575 | | if self.flags.parse_only.is_some() { [INFO] [stderr] 576 | | let p = self.flags.run_from_directory.join(self.flags.parse_only [INFO] [stderr] ... | [INFO] [stderr] 831 | | 0 [INFO] [stderr] 832 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:609:12 [INFO] [stderr] | [INFO] [stderr] 609 | if self.rulerefs().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.rulerefs().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/mod.rs:642:38 [INFO] [stderr] | [INFO] [stderr] 642 | let dirs: Vec = self.filerefs().iter() [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 643 | | .map(|&o| o) [INFO] [stderr] | |____________________________^ help: Consider calling the dedicated `cloned` method: `self.filerefs().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 36 [INFO] [stderr] --> src/build/mod.rs:834:5 [INFO] [stderr] | [INFO] [stderr] 834 | / fn build_dirty(&mut self) { [INFO] [stderr] 835 | | while self.statuses[Status::Dirty].len() > 0 [INFO] [stderr] 836 | | || self.statuses[Status::Unready].len() > 0 [INFO] [stderr] 837 | | || self.statuses[Status::Marked].len() > 0 [INFO] [stderr] ... | [INFO] [stderr] 983 | | } [INFO] [stderr] 984 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/build/mod.rs:1109:5 [INFO] [stderr] | [INFO] [stderr] 1109 | / pub fn new_rule(&mut self, [INFO] [stderr] 1110 | | command: &OsStr, [INFO] [stderr] 1111 | | working_directory: &Path, [INFO] [stderr] 1112 | | facfile: FileRef, [INFO] [stderr] ... | [INFO] [stderr] 1144 | | Ok(r) [INFO] [stderr] 1145 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build/mod.rs:1365:45 [INFO] [stderr] | [INFO] [stderr] 1365 | &format!("H must be after a file!")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"H must be after a file!".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1403:32 [INFO] [stderr] | [INFO] [stderr] 1403 | if current_name.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1419:24 [INFO] [stderr] | [INFO] [stderr] 1419 | if current_name.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1429:24 [INFO] [stderr] | [INFO] [stderr] 1429 | if current_name.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1450:32 [INFO] [stderr] | [INFO] [stderr] 1450 | if current_name.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1466:24 [INFO] [stderr] | [INFO] [stderr] 1466 | if current_name.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1521:17 [INFO] [stderr] | [INFO] [stderr] 1521 | f.write(b"\n| ")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1522:17 [INFO] [stderr] | [INFO] [stderr] 1522 | f.write(hashstat::osstr_to_bytes(&self.rule(r).command))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1523:17 [INFO] [stderr] | [INFO] [stderr] 1523 | f.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1529:21 [INFO] [stderr] | [INFO] [stderr] 1529 | f.write(b"< ")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1530:21 [INFO] [stderr] | [INFO] [stderr] 1530 | f.write(hashstat::osstr_to_bytes(self.pretty_path(i).as_os_str()))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1532:25 [INFO] [stderr] | [INFO] [stderr] 1532 | f.write(b"\nH ")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1533:25 [INFO] [stderr] | [INFO] [stderr] 1533 | f.write(&st.encode())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1535:21 [INFO] [stderr] | [INFO] [stderr] 1535 | f.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1538:21 [INFO] [stderr] | [INFO] [stderr] 1538 | f.write(b"> ")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1539:21 [INFO] [stderr] | [INFO] [stderr] 1539 | f.write(hashstat::osstr_to_bytes(self.pretty_path(o).as_os_str()))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1540:21 [INFO] [stderr] | [INFO] [stderr] 1540 | f.write(b"\nH ")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1541:21 [INFO] [stderr] | [INFO] [stderr] 1541 | f.write(&self[o].hashstat.encode())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1542:21 [INFO] [stderr] | [INFO] [stderr] 1542 | f.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build/mod.rs:1590:54 [INFO] [stderr] | [INFO] [stderr] 1590 | Err(io::Error::new(io::ErrorKind::Other, format!("Error running tar!"))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Error running tar!".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1660:9 [INFO] [stderr] | [INFO] [stderr] 1660 | f.write(b"#!/bin/sh\n\nset -ev\n\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1824:19 [INFO] [stderr] | [INFO] [stderr] 1824 | while to_mark.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!to_mark.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1847:34 [INFO] [stderr] | [INFO] [stderr] 1847 | let to_mark: Vec<_> = if self.flags.targets.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.flags.targets.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 38 [INFO] [stderr] --> src/build/mod.rs:1886:5 [INFO] [stderr] | [INFO] [stderr] 1886 | / fn check_cleanliness(&mut self, r: RuleRef) { [INFO] [stderr] 1887 | | vvvprintln!("check_cleanliness {} (currently {:?})", [INFO] [stderr] 1888 | | self.pretty_rule(r), self.rule(r).status); [INFO] [stderr] 1889 | | let old_status = self.rule(r).status; [INFO] [stderr] ... | [INFO] [stderr] 2098 | | } [INFO] [stderr] 2099 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/mod.rs:1907:46 [INFO] [stderr] | [INFO] [stderr] 1907 | let r_other_inputs: Set64 = r_inputs.iter().map(|&i| i).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `r_inputs.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:1975:53 [INFO] [stderr] | [INFO] [stderr] 1975 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 1976 | | Some(format!("input {:?} has no rule", [INFO] [stderr] 1977 | | self.pretty_display_path(i)))); [INFO] [stderr] | |___________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1975 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("input {:?} has no rule", [INFO] [stderr] 1976 | self.pretty_display_path(i)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/mod.rs:1985:38 [INFO] [stderr] | [INFO] [stderr] 1985 | if let Some(istat) = self.rule(r).hashstats.get(&i).map(|s| *s) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.rule(r).hashstats.get(&i).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:1999:65 [INFO] [stderr] | [INFO] [stderr] 1999 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _________________________________________________________________^ [INFO] [stderr] 2000 | | Some(format!("{:?} has been rebuilt", [INFO] [stderr] 2001 | | self.pretty_display_path(i)))); [INFO] [stderr] | |_______________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1999 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("{:?} has been rebuilt", [INFO] [stderr] 2000 | self.pretty_display_path(i)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2020:57 [INFO] [stderr] | [INFO] [stderr] 2020 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 2021 | | Some(format!("{:?} has been modified", [INFO] [stderr] 2022 | | self.pretty_display_path(i)))); [INFO] [stderr] | |_______________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 2020 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("{:?} has been modified", [INFO] [stderr] 2021 | self.pretty_display_path(i)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2033:53 [INFO] [stderr] | [INFO] [stderr] 2033 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 2034 | | Some(format!("have no information on {:?}", [INFO] [stderr] 2035 | | self.pretty_display_path(i)))); [INFO] [stderr] | |___________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 2033 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("have no information on {:?}", [INFO] [stderr] 2034 | self.pretty_display_path(i)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:2044:16 [INFO] [stderr] | [INFO] [stderr] 2044 | if r_all_outputs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `r_all_outputs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2045:49 [INFO] [stderr] | [INFO] [stderr] 2045 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _________________________________________________^ [INFO] [stderr] 2046 | | Some(format!("it has never been run"))); [INFO] [stderr] | |___________________________________________________________^ help: try this: `or_else(|| Some(format!("it has never been run")))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build/mod.rs:2046:26 [INFO] [stderr] | [INFO] [stderr] 2046 | Some(format!("it has never been run"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"it has never been run".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/mod.rs:2050:38 [INFO] [stderr] | [INFO] [stderr] 2050 | if let Some(ostat) = self.rule(r).hashstats.get(&o).map(|s| *s) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.rule(r).hashstats.get(&o).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2053:57 [INFO] [stderr] | [INFO] [stderr] 2053 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 2054 | | Some(format!("output {:?} does not exist", [INFO] [stderr] 2055 | | self.pretty_display_path(o)))); [INFO] [stderr] | |_______________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 2053 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("output {:?} does not exist", [INFO] [stderr] 2054 | self.pretty_display_path(o)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2074:57 [INFO] [stderr] | [INFO] [stderr] 2074 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 2075 | | Some(format!("output {:?} has been modified", [INFO] [stderr] 2076 | | self.pretty_display_path(o)))); [INFO] [stderr] | |_______________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 2074 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("output {:?} has been modified", [INFO] [stderr] 2075 | self.pretty_display_path(o)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2081:53 [INFO] [stderr] | [INFO] [stderr] 2081 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 2082 | | Some(format!("have never built {:?}", [INFO] [stderr] 2083 | | self.pretty_display_path(o)))); [INFO] [stderr] | |___________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 2081 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("have never built {:?}", [INFO] [stderr] 2082 | self.pretty_display_path(o)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2092:38 [INFO] [stderr] | [INFO] [stderr] 2092 | rebuild_excuse.unwrap_or(String::from("I am confused?"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| String::from("I am confused?"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:2123:19 [INFO] [stderr] | [INFO] [stderr] 2123 | while children.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!children.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:2143:19 [INFO] [stderr] | [INFO] [stderr] 2143 | while children.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!children.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/mod.rs:2165:31 [INFO] [stderr] | [INFO] [stderr] 2165 | let outputs: Vec<_> = self.rule(r).outputs.iter().map(|&o| o) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.rule(r).outputs.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/build/mod.rs:2577:32 [INFO] [stderr] | [INFO] [stderr] 2577 | if rr.starts_with(&self.flags.root) [INFO] [stderr] | ________________________________^ [INFO] [stderr] 2578 | | && !self[fr].rule.is_some() [INFO] [stderr] 2579 | | && !self[fr].is_in_git [INFO] [stderr] 2580 | | && !self.is_git_path(&rr) [INFO] [stderr] | |_________________________________________________________^ help: try: `rr.starts_with(&self.flags.root) && self[fr].rule.is_none() && !self[fr].is_in_git && !self.is_git_path(&rr)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 41 [INFO] [stderr] --> src/build/mod.rs:2463:5 [INFO] [stderr] | [INFO] [stderr] 2463 | / pub fn finish_rule(&mut self, r: RuleRef, mut stat: bigbro::Status) -> io::Result<()> { [INFO] [stderr] 2464 | | self.process_killers.remove(&r); [INFO] [stderr] 2465 | | let num_built = 1 + self.statuses[Status::Failed].len() [INFO] [stderr] 2466 | | + self.statuses[Status::Built].len(); [INFO] [stderr] ... | [INFO] [stderr] 2730 | | Ok(()) [INFO] [stderr] 2731 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:2723:16 [INFO] [stderr] | [INFO] [stderr] 2723 | if contents.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!contents.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:2803:12 [INFO] [stderr] | [INFO] [stderr] 2803 | if self.rule(r).outputs.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.rule(r).outputs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/build/mod.rs:2893:23 [INFO] [stderr] | [INFO] [stderr] 2893 | output += (b - b'0') as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(b - b'0')` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/build/mod.rs:2959:26 [INFO] [stderr] | [INFO] [stderr] 2959 | t.as_secs() as f64 + (t.subsec_nanos() as f64)*1e-9 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(t.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build/mod.rs:2967:9 [INFO] [stderr] | [INFO] [stderr] 2967 | format!("0s") [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `"0s".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] error: aborting due to 14 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `fac`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/git.rs:71:12 [INFO] [stderr] | [INFO] [stderr] 71 | if s.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is used to index `out` [INFO] [stderr] --> src/build/hashstat.rs:59:14 [INFO] [stderr] | [INFO] [stderr] 59 | for x in 0..16 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 59 | for (x, ) in out.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is used to index `i` [INFO] [stderr] --> src/build/hashstat.rs:73:14 [INFO] [stderr] | [INFO] [stderr] 73 | for x in 0..16 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 73 | for (x, ) in i.iter().enumerate().take(16) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/build/hashstat.rs:79:16 [INFO] [stderr] | [INFO] [stderr] 79 | out += (hexit as u64) << (x*4); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(hexit)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/build/hashstat.rs:87:39 [INFO] [stderr] | [INFO] [stderr] 87 | let mut v = Vec::from(&encode(self.size as u64 + ((self.time_ns as u64) << 32))[..]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u64::from(self.size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/build/hashstat.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | / match hashstat(f) { [INFO] [stderr] 177 | | Ok(h) => { [INFO] [stderr] 178 | | *self = h; [INFO] [stderr] 179 | | }, [INFO] [stderr] ... | [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 176 | if let Ok(h) = hashstat(f) { [INFO] [stderr] 177 | *self = h; [INFO] [stderr] 178 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/build/flags.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn args<'a>() -> Flags { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:218:50 [INFO] [stderr] | [INFO] [stderr] 218 | log_output: m.value_of("log-output").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:226:50 [INFO] [stderr] | [INFO] [stderr] 226 | parse_only: m.value_of("parse-only").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:228:46 [INFO] [stderr] | [INFO] [stderr] 228 | makefile: m.value_of("makefile").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:229:44 [INFO] [stderr] | [INFO] [stderr] 229 | tupfile: m.value_of("tupfile").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:230:40 [INFO] [stderr] | [INFO] [stderr] 230 | ninja: m.value_of("ninja").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:231:44 [INFO] [stderr] | [INFO] [stderr] 231 | dotfile: m.value_of("dotfile").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:232:42 [INFO] [stderr] | [INFO] [stderr] 232 | script: m.value_of("script").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/flags.rs:233:36 [INFO] [stderr] | [INFO] [stderr] 233 | tar: m.value_of("tar").map(|s| PathBuf::from(s)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `PathBuf::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `==` [INFO] [stderr] --> src/build/mod.rs:245:9 [INFO] [stderr] | [INFO] [stderr] 245 | s == s [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/build/mod.rs:281:9 [INFO] [stderr] | [INFO] [stderr] 281 | self.0 as u64 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(self.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/build/mod.rs:337:16 [INFO] [stderr] | [INFO] [stderr] 337 | fn is_file(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/build/mod.rs:341:15 [INFO] [stderr] | [INFO] [stderr] 341 | fn is_dir(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/build/mod.rs:362:9 [INFO] [stderr] | [INFO] [stderr] 362 | self.0 as u64 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(self.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/mod.rs:532:34 [INFO] [stderr] | [INFO] [stderr] 532 | statuses: StatusMap::new(|| Set64::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Set64::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/build/mod.rs:542:9 [INFO] [stderr] | [INFO] [stderr] 542 | for ref f in git::ls_files() { [INFO] [stderr] | ^^^^^ --------------- help: try: `let f = &git::ls_files();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/build/mod.rs:556:38 [INFO] [stderr] | [INFO] [stderr] 556 | statuses: StatusMap::new(|| Set64::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Set64::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/build/mod.rs:566:13 [INFO] [stderr] | [INFO] [stderr] 566 | for ref f in git::ls_files() { [INFO] [stderr] | ^^^^^ --------------- help: try: `let f = &git::ls_files();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 47 [INFO] [stderr] --> src/build/mod.rs:573:5 [INFO] [stderr] | [INFO] [stderr] 573 | / pub fn build(mut self) -> i32 { [INFO] [stderr] 574 | | let _g = crude_profiler::push("init"); [INFO] [stderr] 575 | | if self.flags.parse_only.is_some() { [INFO] [stderr] 576 | | let p = self.flags.run_from_directory.join(self.flags.parse_only [INFO] [stderr] ... | [INFO] [stderr] 831 | | 0 [INFO] [stderr] 832 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:609:12 [INFO] [stderr] | [INFO] [stderr] 609 | if self.rulerefs().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.rulerefs().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/mod.rs:642:38 [INFO] [stderr] | [INFO] [stderr] 642 | let dirs: Vec = self.filerefs().iter() [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 643 | | .map(|&o| o) [INFO] [stderr] | |____________________________^ help: Consider calling the dedicated `cloned` method: `self.filerefs().iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 36 [INFO] [stderr] --> src/build/mod.rs:834:5 [INFO] [stderr] | [INFO] [stderr] 834 | / fn build_dirty(&mut self) { [INFO] [stderr] 835 | | while self.statuses[Status::Dirty].len() > 0 [INFO] [stderr] 836 | | || self.statuses[Status::Unready].len() > 0 [INFO] [stderr] 837 | | || self.statuses[Status::Marked].len() > 0 [INFO] [stderr] ... | [INFO] [stderr] 983 | | } [INFO] [stderr] 984 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/build/mod.rs:1109:5 [INFO] [stderr] | [INFO] [stderr] 1109 | / pub fn new_rule(&mut self, [INFO] [stderr] 1110 | | command: &OsStr, [INFO] [stderr] 1111 | | working_directory: &Path, [INFO] [stderr] 1112 | | facfile: FileRef, [INFO] [stderr] ... | [INFO] [stderr] 1144 | | Ok(r) [INFO] [stderr] 1145 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build/mod.rs:1365:45 [INFO] [stderr] | [INFO] [stderr] 1365 | &format!("H must be after a file!")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"H must be after a file!".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1403:32 [INFO] [stderr] | [INFO] [stderr] 1403 | if current_name.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1419:24 [INFO] [stderr] | [INFO] [stderr] 1419 | if current_name.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1429:24 [INFO] [stderr] | [INFO] [stderr] 1429 | if current_name.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1450:32 [INFO] [stderr] | [INFO] [stderr] 1450 | if current_name.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1466:24 [INFO] [stderr] | [INFO] [stderr] 1466 | if current_name.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!current_name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1521:17 [INFO] [stderr] | [INFO] [stderr] 1521 | f.write(b"\n| ")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1522:17 [INFO] [stderr] | [INFO] [stderr] 1522 | f.write(hashstat::osstr_to_bytes(&self.rule(r).command))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1523:17 [INFO] [stderr] | [INFO] [stderr] 1523 | f.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1529:21 [INFO] [stderr] | [INFO] [stderr] 1529 | f.write(b"< ")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1530:21 [INFO] [stderr] | [INFO] [stderr] 1530 | f.write(hashstat::osstr_to_bytes(self.pretty_path(i).as_os_str()))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1532:25 [INFO] [stderr] | [INFO] [stderr] 1532 | f.write(b"\nH ")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1533:25 [INFO] [stderr] | [INFO] [stderr] 1533 | f.write(&st.encode())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1535:21 [INFO] [stderr] | [INFO] [stderr] 1535 | f.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1538:21 [INFO] [stderr] | [INFO] [stderr] 1538 | f.write(b"> ")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1539:21 [INFO] [stderr] | [INFO] [stderr] 1539 | f.write(hashstat::osstr_to_bytes(self.pretty_path(o).as_os_str()))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1540:21 [INFO] [stderr] | [INFO] [stderr] 1540 | f.write(b"\nH ")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1541:21 [INFO] [stderr] | [INFO] [stderr] 1541 | f.write(&self[o].hashstat.encode())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1542:21 [INFO] [stderr] | [INFO] [stderr] 1542 | f.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build/mod.rs:1590:54 [INFO] [stderr] | [INFO] [stderr] 1590 | Err(io::Error::new(io::ErrorKind::Other, format!("Error running tar!"))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Error running tar!".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/build/mod.rs:1660:9 [INFO] [stderr] | [INFO] [stderr] 1660 | f.write(b"#!/bin/sh\n\nset -ev\n\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1824:19 [INFO] [stderr] | [INFO] [stderr] 1824 | while to_mark.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!to_mark.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:1847:34 [INFO] [stderr] | [INFO] [stderr] 1847 | let to_mark: Vec<_> = if self.flags.targets.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.flags.targets.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 38 [INFO] [stderr] --> src/build/mod.rs:1886:5 [INFO] [stderr] | [INFO] [stderr] 1886 | / fn check_cleanliness(&mut self, r: RuleRef) { [INFO] [stderr] 1887 | | vvvprintln!("check_cleanliness {} (currently {:?})", [INFO] [stderr] 1888 | | self.pretty_rule(r), self.rule(r).status); [INFO] [stderr] 1889 | | let old_status = self.rule(r).status; [INFO] [stderr] ... | [INFO] [stderr] 2098 | | } [INFO] [stderr] 2099 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/mod.rs:1907:46 [INFO] [stderr] | [INFO] [stderr] 1907 | let r_other_inputs: Set64 = r_inputs.iter().map(|&i| i).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `r_inputs.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:1975:53 [INFO] [stderr] | [INFO] [stderr] 1975 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 1976 | | Some(format!("input {:?} has no rule", [INFO] [stderr] 1977 | | self.pretty_display_path(i)))); [INFO] [stderr] | |___________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1975 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("input {:?} has no rule", [INFO] [stderr] 1976 | self.pretty_display_path(i)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/mod.rs:1985:38 [INFO] [stderr] | [INFO] [stderr] 1985 | if let Some(istat) = self.rule(r).hashstats.get(&i).map(|s| *s) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.rule(r).hashstats.get(&i).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:1999:65 [INFO] [stderr] | [INFO] [stderr] 1999 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _________________________________________________________________^ [INFO] [stderr] 2000 | | Some(format!("{:?} has been rebuilt", [INFO] [stderr] 2001 | | self.pretty_display_path(i)))); [INFO] [stderr] | |_______________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1999 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("{:?} has been rebuilt", [INFO] [stderr] 2000 | self.pretty_display_path(i)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2020:57 [INFO] [stderr] | [INFO] [stderr] 2020 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 2021 | | Some(format!("{:?} has been modified", [INFO] [stderr] 2022 | | self.pretty_display_path(i)))); [INFO] [stderr] | |_______________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 2020 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("{:?} has been modified", [INFO] [stderr] 2021 | self.pretty_display_path(i)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2033:53 [INFO] [stderr] | [INFO] [stderr] 2033 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 2034 | | Some(format!("have no information on {:?}", [INFO] [stderr] 2035 | | self.pretty_display_path(i)))); [INFO] [stderr] | |___________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 2033 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("have no information on {:?}", [INFO] [stderr] 2034 | self.pretty_display_path(i)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:2044:16 [INFO] [stderr] | [INFO] [stderr] 2044 | if r_all_outputs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `r_all_outputs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2045:49 [INFO] [stderr] | [INFO] [stderr] 2045 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _________________________________________________^ [INFO] [stderr] 2046 | | Some(format!("it has never been run"))); [INFO] [stderr] | |___________________________________________________________^ help: try this: `or_else(|| Some(format!("it has never been run")))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build/mod.rs:2046:26 [INFO] [stderr] | [INFO] [stderr] 2046 | Some(format!("it has never been run"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"it has never been run".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/mod.rs:2050:38 [INFO] [stderr] | [INFO] [stderr] 2050 | if let Some(ostat) = self.rule(r).hashstats.get(&o).map(|s| *s) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.rule(r).hashstats.get(&o).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2053:57 [INFO] [stderr] | [INFO] [stderr] 2053 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 2054 | | Some(format!("output {:?} does not exist", [INFO] [stderr] 2055 | | self.pretty_display_path(o)))); [INFO] [stderr] | |_______________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 2053 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("output {:?} does not exist", [INFO] [stderr] 2054 | self.pretty_display_path(o)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2074:57 [INFO] [stderr] | [INFO] [stderr] 2074 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 2075 | | Some(format!("output {:?} has been modified", [INFO] [stderr] 2076 | | self.pretty_display_path(o)))); [INFO] [stderr] | |_______________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 2074 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("output {:?} has been modified", [INFO] [stderr] 2075 | self.pretty_display_path(o)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2081:53 [INFO] [stderr] | [INFO] [stderr] 2081 | rebuild_excuse = rebuild_excuse.or( [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 2082 | | Some(format!("have never built {:?}", [INFO] [stderr] 2083 | | self.pretty_display_path(o)))); [INFO] [stderr] | |___________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 2081 | rebuild_excuse = rebuild_excuse.or_else(|| Some(format!("have never built {:?}", [INFO] [stderr] 2082 | self.pretty_display_path(o)))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:2092:38 [INFO] [stderr] | [INFO] [stderr] 2092 | rebuild_excuse.unwrap_or(String::from("I am confused?"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| String::from("I am confused?"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:2123:19 [INFO] [stderr] | [INFO] [stderr] 2123 | while children.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!children.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:2143:19 [INFO] [stderr] | [INFO] [stderr] 2143 | while children.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!children.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/mod.rs:2165:31 [INFO] [stderr] | [INFO] [stderr] 2165 | let outputs: Vec<_> = self.rule(r).outputs.iter().map(|&o| o) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.rule(r).outputs.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/build/mod.rs:2577:32 [INFO] [stderr] | [INFO] [stderr] 2577 | if rr.starts_with(&self.flags.root) [INFO] [stderr] | ________________________________^ [INFO] [stderr] 2578 | | && !self[fr].rule.is_some() [INFO] [stderr] 2579 | | && !self[fr].is_in_git [INFO] [stderr] 2580 | | && !self.is_git_path(&rr) [INFO] [stderr] | |_________________________________________________________^ help: try: `rr.starts_with(&self.flags.root) && self[fr].rule.is_none() && !self[fr].is_in_git && !self.is_git_path(&rr)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 41 [INFO] [stderr] --> src/build/mod.rs:2463:5 [INFO] [stderr] | [INFO] [stderr] 2463 | / pub fn finish_rule(&mut self, r: RuleRef, mut stat: bigbro::Status) -> io::Result<()> { [INFO] [stderr] 2464 | | self.process_killers.remove(&r); [INFO] [stderr] 2465 | | let num_built = 1 + self.statuses[Status::Failed].len() [INFO] [stderr] 2466 | | + self.statuses[Status::Built].len(); [INFO] [stderr] ... | [INFO] [stderr] 2730 | | Ok(()) [INFO] [stderr] 2731 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:2723:16 [INFO] [stderr] | [INFO] [stderr] 2723 | if contents.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!contents.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:2803:12 [INFO] [stderr] | [INFO] [stderr] 2803 | if self.rule(r).outputs.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.rule(r).outputs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/build/mod.rs:2893:23 [INFO] [stderr] | [INFO] [stderr] 2893 | output += (b - b'0') as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(b - b'0')` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/build/mod.rs:2959:26 [INFO] [stderr] | [INFO] [stderr] 2959 | t.as_secs() as f64 + (t.subsec_nanos() as f64)*1e-9 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(t.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build/mod.rs:2967:9 [INFO] [stderr] | [INFO] [stderr] 2967 | format!("0s") [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `"0s".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] error: aborting due to 15 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `fac`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "f61c876f9944d06d37777b73ab26c3f5e2d0ec8b626ac563b8f0f94ce0ced38b"` [INFO] running `"docker" "rm" "-f" "f61c876f9944d06d37777b73ab26c3f5e2d0ec8b626ac563b8f0f94ce0ced38b"` [INFO] [stdout] f61c876f9944d06d37777b73ab26c3f5e2d0ec8b626ac563b8f0f94ce0ced38b