mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-10 15:14:32 +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.
|
# Formats the full repository or installs the git hook to do it automatically.
|
||||||
format = "run --package tools --bin tools -- format"
|
format = "run --package tools --bin tools -- format"
|
||||||
format-hook = "run --package tools --bin tools -- format-hook"
|
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)
|
# Runs the fuzzing test suite (currently only parser)
|
||||||
fuzz-tests = "run --package tools --bin tools -- fuzz-tests"
|
fuzz-tests = "run --package tools --bin tools -- fuzz-tests"
|
||||||
|
|
||||||
|
|
|
@ -133,6 +133,34 @@ pub fn install_format_hook() -> Result<()> {
|
||||||
Ok(())
|
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<()> {
|
pub fn run_fuzzer() -> Result<()> {
|
||||||
match Command::new("cargo")
|
match Command::new("cargo")
|
||||||
.args(&["fuzz", "--help"])
|
.args(&["fuzz", "--help"])
|
||||||
|
|
|
@ -3,7 +3,7 @@ use core::str;
|
||||||
use failure::bail;
|
use failure::bail;
|
||||||
use tools::{
|
use tools::{
|
||||||
generate, gen_tests, install_format_hook, run, run_with_output, run_rustfmt,
|
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};
|
use std::{path::{PathBuf}, env};
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ fn main() -> Result<()> {
|
||||||
.subcommand(SubCommand::with_name("format"))
|
.subcommand(SubCommand::with_name("format"))
|
||||||
.subcommand(SubCommand::with_name("format-hook"))
|
.subcommand(SubCommand::with_name("format-hook"))
|
||||||
.subcommand(SubCommand::with_name("fuzz-tests"))
|
.subcommand(SubCommand::with_name("fuzz-tests"))
|
||||||
|
.subcommand(SubCommand::with_name("lint"))
|
||||||
.get_matches();
|
.get_matches();
|
||||||
match matches.subcommand_name().expect("Subcommand must be specified") {
|
match matches.subcommand_name().expect("Subcommand must be specified") {
|
||||||
"install-code" => {
|
"install-code" => {
|
||||||
|
@ -28,6 +29,7 @@ fn main() -> Result<()> {
|
||||||
"gen-syntax" => generate(Overwrite)?,
|
"gen-syntax" => generate(Overwrite)?,
|
||||||
"format" => run_rustfmt(Overwrite)?,
|
"format" => run_rustfmt(Overwrite)?,
|
||||||
"format-hook" => install_format_hook()?,
|
"format-hook" => install_format_hook()?,
|
||||||
|
"lint" => run_clippy()?,
|
||||||
"fuzz-tests" => run_fuzzer()?,
|
"fuzz-tests" => run_fuzzer()?,
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue