diff options
Diffstat (limited to 'crates/tools/src/lib.rs')
-rw-r--r-- | crates/tools/src/lib.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/crates/tools/src/lib.rs b/crates/tools/src/lib.rs index 11b52ccb7..2446fdf28 100644 --- a/crates/tools/src/lib.rs +++ b/crates/tools/src/lib.rs | |||
@@ -133,6 +133,40 @@ pub fn install_format_hook() -> Result<()> { | |||
133 | Ok(()) | 133 | Ok(()) |
134 | } | 134 | } |
135 | 135 | ||
136 | pub fn run_clippy() -> Result<()> { | ||
137 | match Command::new("rustup") | ||
138 | .args(&["run", TOOLCHAIN, "--", "cargo", "clippy", "--version"]) | ||
139 | .stderr(Stdio::null()) | ||
140 | .stdout(Stdio::null()) | ||
141 | .status() | ||
142 | { | ||
143 | Ok(status) if status.success() => (), | ||
144 | _ => install_clippy()?, | ||
145 | }; | ||
146 | |||
147 | let allowed_lints = [ | ||
148 | "clippy::collapsible_if", | ||
149 | "clippy::map_clone", // FIXME: remove when Iterator::copied stabilizes (1.36.0) | ||
150 | "clippy::needless_pass_by_value", | ||
151 | "clippy::nonminimal_bool", | ||
152 | "clippy::redundant_pattern_matching", | ||
153 | ]; | ||
154 | run( | ||
155 | &format!( | ||
156 | "rustup run {} -- cargo clippy --all-features --all-targets -- -A {}", | ||
157 | TOOLCHAIN, | ||
158 | allowed_lints.join(" -A ") | ||
159 | ), | ||
160 | ".", | ||
161 | )?; | ||
162 | Ok(()) | ||
163 | } | ||
164 | |||
165 | pub fn install_clippy() -> Result<()> { | ||
166 | run(&format!("rustup install {}", TOOLCHAIN), ".")?; | ||
167 | run(&format!("rustup component add clippy --toolchain {}", TOOLCHAIN), ".") | ||
168 | } | ||
169 | |||
136 | pub fn run_fuzzer() -> Result<()> { | 170 | pub fn run_fuzzer() -> Result<()> { |
137 | match Command::new("cargo") | 171 | match Command::new("cargo") |
138 | .args(&["fuzz", "--help"]) | 172 | .args(&["fuzz", "--help"]) |