mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-25 12:33:33 +00:00
Implement cargo lint to run clippy
This commit is contained in:
parent
d1b9fa446a
commit
a181fd318b
3 changed files with 34 additions and 1 deletions
|
@ -12,6 +12,9 @@ install-code = "run --package tools --bin tools -- install-code"
|
|||
# Formats the full repository or installs the git hook to do it automatically.
|
||||
format = "run --package tools --bin tools -- format"
|
||||
format-hook = "run --package tools --bin tools -- format-hook"
|
||||
# Run clippy
|
||||
lint = "run --package tools --bin tools -- lint"
|
||||
|
||||
# Runs the fuzzing test suite (currently only parser)
|
||||
fuzz-tests = "run --package tools --bin tools -- fuzz-tests"
|
||||
|
||||
|
|
|
@ -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"])
|
||||
|
|
|
@ -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!(),
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue