diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-07-11 22:39:03 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-11 22:39:03 +0200 |
| commit | 601c5a2087b5c8acd8491c190e99715e91d020d8 (patch) | |
| tree | 6b1d5ed9f254b9fa2d047d6997db2d2a9abda822 /src/bootstrap | |
| parent | 38b72154ded23847cd08a796d0c6708b5efac265 (diff) | |
| parent | e3d84b2809c630c8f3b9f776174dd9d72ba62e54 (diff) | |
| download | rust-601c5a2087b5c8acd8491c190e99715e91d020d8.tar.gz rust-601c5a2087b5c8acd8491c190e99715e91d020d8.zip | |
Rollup merge of #97210 - Milo123459:clippy-args, r=jyn514
Support `-A`, `-W`, `-D` and `-F` when running `./x.py clippy` Resolves #97059 This PR adds support for `-A`, `-W`, `-D` and `-F` when running `./x.py clippy`.
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/check.rs | 18 | ||||
| -rw-r--r-- | src/bootstrap/flags.rs | 17 |
2 files changed, 32 insertions, 3 deletions
diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs index 4985b054678..9196b78c513 100644 --- a/src/bootstrap/check.rs +++ b/src/bootstrap/check.rs @@ -20,7 +20,15 @@ fn args(builder: &Builder<'_>) -> Vec<String> { arr.iter().copied().map(String::from) } - if let Subcommand::Clippy { fix, .. } = builder.config.cmd { + if let Subcommand::Clippy { + fix, + clippy_lint_allow, + clippy_lint_deny, + clippy_lint_warn, + clippy_lint_forbid, + .. + } = &builder.config.cmd + { // disable the most spammy clippy lints let ignored_lints = vec![ "many_single_char_names", // there are a lot in stdarch @@ -32,7 +40,7 @@ fn args(builder: &Builder<'_>) -> Vec<String> { "wrong_self_convention", ]; let mut args = vec![]; - if fix { + if *fix { #[rustfmt::skip] args.extend(strings(&[ "--fix", "-Zunstable-options", @@ -44,6 +52,12 @@ fn args(builder: &Builder<'_>) -> Vec<String> { } args.extend(strings(&["--", "--cap-lints", "warn"])); args.extend(ignored_lints.iter().map(|lint| format!("-Aclippy::{}", lint))); + let mut clippy_lint_levels: Vec<String> = Vec::new(); + clippy_lint_allow.iter().for_each(|v| clippy_lint_levels.push(format!("-A{}", v))); + clippy_lint_deny.iter().for_each(|v| clippy_lint_levels.push(format!("-D{}", v))); + clippy_lint_warn.iter().for_each(|v| clippy_lint_levels.push(format!("-W{}", v))); + clippy_lint_forbid.iter().for_each(|v| clippy_lint_levels.push(format!("-F{}", v))); + args.extend(clippy_lint_levels); args } else { vec![] diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs index eec19ab4fc9..1822c2936b7 100644 --- a/src/bootstrap/flags.rs +++ b/src/bootstrap/flags.rs @@ -91,6 +91,10 @@ pub enum Subcommand { Clippy { fix: bool, paths: Vec<PathBuf>, + clippy_lint_allow: Vec<String>, + clippy_lint_deny: Vec<String>, + clippy_lint_warn: Vec<String>, + clippy_lint_forbid: Vec<String>, }, Fix { paths: Vec<PathBuf>, @@ -246,6 +250,10 @@ To learn more about a subcommand, run `./x.py <subcommand> -h`", opts.optopt("", "rust-profile-use", "use PGO profile for rustc build", "PROFILE"); opts.optflag("", "llvm-profile-generate", "generate PGO profile with llvm built for rustc"); opts.optopt("", "llvm-profile-use", "use PGO profile for llvm build", "PROFILE"); + opts.optmulti("A", "", "allow certain clippy lints", "OPT"); + opts.optmulti("D", "", "deny certain clippy lints", "OPT"); + opts.optmulti("W", "", "warn about certain clippy lints", "OPT"); + opts.optmulti("F", "", "forbid certain clippy lints", "OPT"); // We can't use getopt to parse the options until we have completed specifying which // options are valid, but under the current implementation, some options are conditional on @@ -544,7 +552,14 @@ Arguments: } Subcommand::Check { paths } } - Kind::Clippy => Subcommand::Clippy { paths, fix: matches.opt_present("fix") }, + Kind::Clippy => Subcommand::Clippy { + paths, + fix: matches.opt_present("fix"), + clippy_lint_allow: matches.opt_strs("A"), + clippy_lint_warn: matches.opt_strs("W"), + clippy_lint_deny: matches.opt_strs("D"), + clippy_lint_forbid: matches.opt_strs("F"), + }, Kind::Fix => Subcommand::Fix { paths }, Kind::Test => Subcommand::Test { paths, |
