Auto merge of #7917 - Alexendoo:cargo-dev-lint, r=giraffate

Add `cargo dev lint` to manually run clippy on a file

I found the manual run command really useful, this makes it a bit easier to type

Not sure if this belongs in the changelog or not

changelog: Add `cargo dev lint` to manually run clippy on a file
This commit is contained in:
bors 2021-11-07 06:06:26 +00:00
commit 07f4f7c2dd
4 changed files with 36 additions and 2 deletions

View file

@ -7,6 +7,7 @@ use std::path::PathBuf;
pub mod bless; pub mod bless;
pub mod fmt; pub mod fmt;
pub mod lint;
pub mod new_lint; pub mod new_lint;
pub mod serve; pub mod serve;
pub mod setup; pub mod setup;

20
clippy_dev/src/lint.rs Normal file
View file

@ -0,0 +1,20 @@
use std::process::{self, Command};
pub fn run(filename: &str) {
let code = Command::new("cargo")
.args(["run", "--bin", "clippy-driver", "--"])
.args(["-L", "./target/debug"])
.args(["-Z", "no-codegen"])
.args(["--edition", "2021"])
.arg(filename)
.env("__CLIPPY_INTERNAL_TESTS", "true")
.status()
.expect("failed to run cargo")
.code();
if code.is_none() {
eprintln!("Killed by signal");
}
process::exit(code.unwrap_or(1));
}

View file

@ -3,7 +3,7 @@
#![warn(rust_2018_idioms, unused_lifetimes)] #![warn(rust_2018_idioms, unused_lifetimes)]
use clap::{App, AppSettings, Arg, ArgMatches, SubCommand}; use clap::{App, AppSettings, Arg, ArgMatches, SubCommand};
use clippy_dev::{bless, fmt, new_lint, serve, setup, update_lints}; use clippy_dev::{bless, fmt, lint, new_lint, serve, setup, update_lints};
fn main() { fn main() {
let matches = get_clap_config(); let matches = get_clap_config();
@ -55,6 +55,10 @@ fn main() {
let lint = matches.value_of("lint"); let lint = matches.value_of("lint");
serve::run(port, lint); serve::run(port, lint);
}, },
("lint", Some(matches)) => {
let filename = matches.value_of("filename").unwrap();
lint::run(filename);
},
_ => {}, _ => {},
} }
} }
@ -219,5 +223,14 @@ fn get_clap_config<'a>() -> ArgMatches<'a> {
) )
.arg(Arg::with_name("lint").help("Which lint's page to load initially (optional)")), .arg(Arg::with_name("lint").help("Which lint's page to load initially (optional)")),
) )
.subcommand(
SubCommand::with_name("lint")
.about("Manually run clippy on a file")
.arg(
Arg::with_name("filename")
.required(true)
.help("The path to a file to lint"),
),
)
.get_matches() .get_matches()
} }

View file

@ -157,7 +157,7 @@ Manually testing against an example file can be useful if you have added some
your local modifications, run your local modifications, run
``` ```
env __CLIPPY_INTERNAL_TESTS=true cargo run --bin clippy-driver -- -L ./target/debug input.rs cargo dev lint input.rs
``` ```
from the working copy root. With tests in place, let's have a look at from the working copy root. With tests in place, let's have a look at