mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-23 13:13:34 +00:00
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:
commit
07f4f7c2dd
4 changed files with 36 additions and 2 deletions
|
@ -7,6 +7,7 @@ use std::path::PathBuf;
|
|||
|
||||
pub mod bless;
|
||||
pub mod fmt;
|
||||
pub mod lint;
|
||||
pub mod new_lint;
|
||||
pub mod serve;
|
||||
pub mod setup;
|
||||
|
|
20
clippy_dev/src/lint.rs
Normal file
20
clippy_dev/src/lint.rs
Normal 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));
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
#![warn(rust_2018_idioms, unused_lifetimes)]
|
||||
|
||||
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() {
|
||||
let matches = get_clap_config();
|
||||
|
||||
|
@ -55,6 +55,10 @@ fn main() {
|
|||
let lint = matches.value_of("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)")),
|
||||
)
|
||||
.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()
|
||||
}
|
||||
|
|
|
@ -157,7 +157,7 @@ Manually testing against an example file can be useful if you have added some
|
|||
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
|
||||
|
|
Loading…
Reference in a new issue