From a181fd318b12d0648d126b81ed031d074c8471cf Mon Sep 17 00:00:00 2001 From: Alan Du Date: Mon, 3 Jun 2019 09:43:06 -0400 Subject: Implement cargo lint to run clippy --- crates/tools/src/lib.rs | 28 ++++++++++++++++++++++++++++ crates/tools/src/main.rs | 4 +++- 2 files changed, 31 insertions(+), 1 deletion(-) (limited to 'crates/tools/src') diff --git a/crates/tools/src/lib.rs b/crates/tools/src/lib.rs index 11b52ccb7..92634655d 100644 --- a/crates/tools/src/lib.rs +++ b/crates/tools/src/lib.rs @@ -133,6 +133,34 @@ pub fn install_format_hook() -> Result<()> { Ok(()) } +pub fn run_clippy() -> Result<()> { + match Command::new("rustup") + .args(&["run", TOOLCHAIN, "--", "cargo", "clippy", "--version"]) + .stderr(Stdio::null()) + .stdout(Stdio::null()) + .status() + { + Ok(status) if status.success() => (), + _ => install_clippy()?, + }; + + let allowed_lints = ["clippy::collapsible_if", "clippy::nonminimal_bool"]; + run( + &format!( + "rustup run {} -- cargo clippy --all-features --all-targets -- -A {}", + TOOLCHAIN, + allowed_lints.join(" -A ") + ), + ".", + )?; + Ok(()) +} + +pub fn install_clippy() -> Result<()> { + run(&format!("rustup install {}", TOOLCHAIN), ".")?; + run(&format!("rustup component add clippy --toolchain {}", TOOLCHAIN), ".") +} + pub fn run_fuzzer() -> Result<()> { match Command::new("cargo") .args(&["fuzz", "--help"]) diff --git a/crates/tools/src/main.rs b/crates/tools/src/main.rs index 0c3339685..cf189bf1c 100644 --- a/crates/tools/src/main.rs +++ b/crates/tools/src/main.rs @@ -3,7 +3,7 @@ use core::str; use failure::bail; use tools::{ generate, gen_tests, install_format_hook, run, run_with_output, run_rustfmt, - Overwrite, Result, run_fuzzer, + Overwrite, Result, run_fuzzer, run_clippy, }; use std::{path::{PathBuf}, env}; @@ -16,6 +16,7 @@ fn main() -> Result<()> { .subcommand(SubCommand::with_name("format")) .subcommand(SubCommand::with_name("format-hook")) .subcommand(SubCommand::with_name("fuzz-tests")) + .subcommand(SubCommand::with_name("lint")) .get_matches(); match matches.subcommand_name().expect("Subcommand must be specified") { "install-code" => { @@ -28,6 +29,7 @@ fn main() -> Result<()> { "gen-syntax" => generate(Overwrite)?, "format" => run_rustfmt(Overwrite)?, "format-hook" => install_format_hook()?, + "lint" => run_clippy()?, "fuzz-tests" => run_fuzzer()?, _ => unreachable!(), } -- cgit v1.2.3 From 557e90c6ca3c4e754ceeea9c08d8d34590334e77 Mon Sep 17 00:00:00 2001 From: Alan Du Date: Tue, 4 Jun 2019 02:21:29 -0400 Subject: Allow clippy::needless_pass_by_value --- crates/tools/src/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'crates/tools/src') diff --git a/crates/tools/src/lib.rs b/crates/tools/src/lib.rs index 92634655d..f00e46a34 100644 --- a/crates/tools/src/lib.rs +++ b/crates/tools/src/lib.rs @@ -144,7 +144,8 @@ pub fn run_clippy() -> Result<()> { _ => install_clippy()?, }; - let allowed_lints = ["clippy::collapsible_if", "clippy::nonminimal_bool"]; + let allowed_lints = + ["clippy::collapsible_if", "clippy::nonminimal_bool", "clippy::needless_pass_by_value"]; run( &format!( "rustup run {} -- cargo clippy --all-features --all-targets -- -A {}", -- cgit v1.2.3 From 07ebf5528eec0b054655a11e426e7f0041bcdf82 Mon Sep 17 00:00:00 2001 From: Alan Du Date: Tue, 4 Jun 2019 02:24:47 -0400 Subject: Allow clippy::map_clone We should turn it on after Iterator::copied stabilizes --- crates/tools/src/lib.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'crates/tools/src') diff --git a/crates/tools/src/lib.rs b/crates/tools/src/lib.rs index f00e46a34..b424eb701 100644 --- a/crates/tools/src/lib.rs +++ b/crates/tools/src/lib.rs @@ -144,8 +144,12 @@ pub fn run_clippy() -> Result<()> { _ => install_clippy()?, }; - let allowed_lints = - ["clippy::collapsible_if", "clippy::nonminimal_bool", "clippy::needless_pass_by_value"]; + let allowed_lints = [ + "clippy::collapsible_if", + "clippy::nonminimal_bool", + "clippy::needless_pass_by_value", + "clippy::map_clone", // FIXME: remove when Iterator::copied stabilizes (1.36.0) + ]; run( &format!( "rustup run {} -- cargo clippy --all-features --all-targets -- -A {}", -- cgit v1.2.3 From 354db651dafd24d93cf0f151d63ad5ecb2e716e2 Mon Sep 17 00:00:00 2001 From: Alan Du Date: Mon, 3 Jun 2019 10:00:51 -0400 Subject: Fix clippy::clone_double_ref --- crates/tools/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/tools/src') diff --git a/crates/tools/src/main.rs b/crates/tools/src/main.rs index cf189bf1c..8027ff833 100644 --- a/crates/tools/src/main.rs +++ b/crates/tools/src/main.rs @@ -84,7 +84,7 @@ fn fix_path_for_mac() -> Result<()> { [ROOT_DIR, &home_dir] .iter() - .map(|dir| String::from(dir.clone()) + COMMON_APP_PATH) + .map(|dir| String::from(*dir) + COMMON_APP_PATH) .map(PathBuf::from) .filter(|path| path.exists()) .collect() -- cgit v1.2.3 From aa30c4909ebb1e85f1591f465c9e2875aa4d394e Mon Sep 17 00:00:00 2001 From: Alan Du Date: Tue, 4 Jun 2019 18:05:38 -0400 Subject: Allow clippy::redundant_pattern_matching --- crates/tools/src/lib.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'crates/tools/src') diff --git a/crates/tools/src/lib.rs b/crates/tools/src/lib.rs index b424eb701..2446fdf28 100644 --- a/crates/tools/src/lib.rs +++ b/crates/tools/src/lib.rs @@ -146,9 +146,10 @@ pub fn run_clippy() -> Result<()> { let allowed_lints = [ "clippy::collapsible_if", - "clippy::nonminimal_bool", - "clippy::needless_pass_by_value", "clippy::map_clone", // FIXME: remove when Iterator::copied stabilizes (1.36.0) + "clippy::needless_pass_by_value", + "clippy::nonminimal_bool", + "clippy::redundant_pattern_matching", ]; run( &format!( -- cgit v1.2.3