[INFO] updating cached repository stpettersens/ghwcli [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/stpettersens/ghwcli [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/stpettersens/ghwcli" "work/ex/clippy-test-run/sources/stable/gh/stpettersens/ghwcli"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/stpettersens/ghwcli'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/stpettersens/ghwcli" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/stpettersens/ghwcli"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/stpettersens/ghwcli'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] e4e33d727c0382dd4e4168d08d6ac4af6e33f999 [INFO] sha for GitHub repo stpettersens/ghwcli: e4e33d727c0382dd4e4168d08d6ac4af6e33f999 [INFO] validating manifest of stpettersens/ghwcli 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 stpettersens/ghwcli 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 stpettersens/ghwcli [INFO] finished frobbing stpettersens/ghwcli [INFO] frobbed toml for stpettersens/ghwcli written to work/ex/clippy-test-run/sources/stable/gh/stpettersens/ghwcli/Cargo.toml [INFO] started frobbing stpettersens/ghwcli [INFO] finished frobbing stpettersens/ghwcli [INFO] frobbed toml for stpettersens/ghwcli written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/stpettersens/ghwcli/Cargo.toml [INFO] crate stpettersens/ghwcli has a lockfile. skipping [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 stpettersens/ghwcli against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/stpettersens/ghwcli:/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] 412d73ba7587ce22c6065dce52b00b586f196b8eb92a684b8e009e0992382469 [INFO] running `"docker" "start" "-a" "412d73ba7587ce22c6065dce52b00b586f196b8eb92a684b8e009e0992382469"` [INFO] [stderr] Compiling rustc-serialize v0.3.22 [INFO] [stderr] Checking siphasher v0.2.1 [INFO] [stderr] Checking mac v0.1.1 [INFO] [stderr] Checking bit-vec v0.4.3 [INFO] [stderr] Checking rc v0.1.1 [INFO] [stderr] Checking openssl-probe v0.1.0 [INFO] [stderr] Checking clioptions v0.1.0 [INFO] [stderr] Compiling libz-sys v1.0.13 [INFO] [stderr] Compiling openssl-sys v0.9.8 [INFO] [stderr] Compiling curl-sys v0.3.10 [INFO] [stderr] Checking thread-id v3.0.0 [INFO] [stderr] Checking memchr v1.0.1 [INFO] [stderr] Checking phf_shared v0.7.21 [INFO] [stderr] Checking bit-set v0.2.0 [INFO] [stderr] Compiling string_cache v0.2.29 [INFO] [stderr] Checking futf v0.1.3 [INFO] [stderr] Checking aho-corasick v0.6.2 [INFO] [stderr] Checking thread_local v0.3.3 [INFO] [stderr] Checking phf v0.7.21 [INFO] [stderr] Checking text-diff v0.4.0 [INFO] [stderr] Checking tendril v0.1.6 [INFO] [stderr] Checking regex v0.2.1 [INFO] [stderr] Compiling html5ever v0.2.11 [INFO] [stderr] Checking select v0.2.2 [INFO] [stderr] Checking curl v0.4.6 [INFO] [stderr] Checking ghwcli v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused imports: `Difference`, `print_diff` [INFO] [stderr] --> src/main.rs:20:23 [INFO] [stderr] | [INFO] [stderr] 20 | use text_diff::{diff, print_diff, Difference}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `stdout` [INFO] [stderr] --> src/main.rs:27:22 [INFO] [stderr] | [INFO] [stderr] 27 | use std::io::{stdin, stdout, Read, Write}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Difference`, `print_diff` [INFO] [stderr] --> src/main.rs:20:23 [INFO] [stderr] | [INFO] [stderr] 20 | use text_diff::{diff, print_diff, Difference}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `stdout` [INFO] [stderr] --> src/main.rs:27:22 [INFO] [stderr] | [INFO] [stderr] 27 | use std::io::{stdin, stdout, Read, Write}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_url_frag` [INFO] [stderr] --> src/github.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn get_url_frag(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_url_frag` [INFO] [stderr] --> src/project.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | pub fn get_url_frag(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `check_for_diff` [INFO] [stderr] --> src/main.rs:158:1 [INFO] [stderr] | [INFO] [stderr] 158 | fn check_for_diff(orig: &str, edit: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/project.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | format!("{}", self.name) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.name.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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:34:31 [INFO] [stderr] | [INFO] [stderr] 34 | let split = pathstr.split("/"); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:37:12 [INFO] [stderr] | [INFO] [stderr] 37 | if s.to_owned().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.to_owned().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: length comparison to zero [INFO] [stderr] --> src/main.rs:49:12 [INFO] [stderr] | [INFO] [stderr] 49 | if s.to_owned().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.to_owned().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/main.rs:60:12 [INFO] [stderr] | [INFO] [stderr] 60 | if s.to_owned().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.to_owned().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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | / let mut out = format!("{}/{}", pw, file); [INFO] [stderr] 83 | | if index == 2 { [INFO] [stderr] 84 | | out = format!("{}/index.html", pw); [INFO] [stderr] 85 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let out = if index == 2 { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/main.rs:136:32 [INFO] [stderr] | [INFO] [stderr] 136 | let mut p = Regex::new("https://").unwrap(); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivial_regex)] on by default [INFO] [stderr] = help: consider using `str::contains` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/main.rs:140:24 [INFO] [stderr] | [INFO] [stderr] 140 | p = Regex::new("/blob/").unwrap(); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::contains` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_url_frag` [INFO] [stderr] --> src/github.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn get_url_frag(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_url_frag` [INFO] [stderr] --> src/project.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | pub fn get_url_frag(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `check_for_diff` [INFO] [stderr] --> src/main.rs:158:1 [INFO] [stderr] | [INFO] [stderr] 158 | fn check_for_diff(orig: &str, edit: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/project.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | format!("{}", self.name) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.name.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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:34:31 [INFO] [stderr] | [INFO] [stderr] 34 | let split = pathstr.split("/"); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:37:12 [INFO] [stderr] | [INFO] [stderr] 37 | if s.to_owned().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.to_owned().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: length comparison to zero [INFO] [stderr] --> src/main.rs:49:12 [INFO] [stderr] | [INFO] [stderr] 49 | if s.to_owned().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.to_owned().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/main.rs:60:12 [INFO] [stderr] | [INFO] [stderr] 60 | if s.to_owned().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.to_owned().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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | / let mut out = format!("{}/{}", pw, file); [INFO] [stderr] 83 | | if index == 2 { [INFO] [stderr] 84 | | out = format!("{}/index.html", pw); [INFO] [stderr] 85 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let out = if index == 2 { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/main.rs:136:32 [INFO] [stderr] | [INFO] [stderr] 136 | let mut p = Regex::new("https://").unwrap(); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivial_regex)] on by default [INFO] [stderr] = help: consider using `str::contains` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/main.rs:140:24 [INFO] [stderr] | [INFO] [stderr] 140 | p = Regex::new("/blob/").unwrap(); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::contains` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2m 47s [INFO] running `"docker" "inspect" "412d73ba7587ce22c6065dce52b00b586f196b8eb92a684b8e009e0992382469"` [INFO] running `"docker" "rm" "-f" "412d73ba7587ce22c6065dce52b00b586f196b8eb92a684b8e009e0992382469"` [INFO] [stdout] 412d73ba7587ce22c6065dce52b00b586f196b8eb92a684b8e009e0992382469