about summary refs log tree commit diff
path: root/clippy_dev
diff options
context:
space:
mode:
authorxFrednet <xFrednet@gmail.com>2022-05-20 20:37:38 +0200
committerxFrednet <xFrednet@gmail.com>2022-05-20 20:47:31 +0200
commit4e6cf0036e5e7afdc4fe86cccc99482ff4cf71bf (patch)
treec0de46a0482ccc460d4789e23b4d2abb5bf17787 /clippy_dev
parent01421e0cbda66655e25d48c1c72c2dcbe77040c2 (diff)
parent6f26383f8ec8dfe89858876eac127161d148eb13 (diff)
downloadrust-4e6cf0036e5e7afdc4fe86cccc99482ff4cf71bf.tar.gz
rust-4e6cf0036e5e7afdc4fe86cccc99482ff4cf71bf.zip
Merge remote-tracking branch 'upstream/master' into rustup
Diffstat (limited to 'clippy_dev')
-rw-r--r--clippy_dev/src/lint.rs5
-rw-r--r--clippy_dev/src/main.rs38
-rw-r--r--clippy_dev/src/new_lint.rs4
-rw-r--r--clippy_dev/src/update_lints.rs15
4 files changed, 52 insertions, 10 deletions
diff --git a/clippy_dev/src/lint.rs b/clippy_dev/src/lint.rs
index 1bc1a39542d..9e463aa741c 100644
--- a/clippy_dev/src/lint.rs
+++ b/clippy_dev/src/lint.rs
@@ -13,7 +13,7 @@ fn exit_if_err(status: io::Result<ExitStatus>) {
     }
 }
 
-pub fn run(path: &str) {
+pub fn run<'a>(path: &str, args: impl Iterator<Item = &'a str>) {
     let is_file = match fs::metadata(path) {
         Ok(metadata) => metadata.is_file(),
         Err(e) => {
@@ -30,6 +30,7 @@ pub fn run(path: &str) {
                 .args(["-Z", "no-codegen"])
                 .args(["--edition", "2021"])
                 .arg(path)
+                .args(args)
                 .status(),
         );
     } else {
@@ -42,6 +43,8 @@ pub fn run(path: &str) {
             .expect("failed to create tempdir");
 
         let status = Command::new(cargo_clippy_path())
+            .arg("clippy")
+            .args(args)
             .current_dir(path)
             .env("CARGO_TARGET_DIR", target.as_ref())
             .status();
diff --git a/clippy_dev/src/main.rs b/clippy_dev/src/main.rs
index ebf8f38d490..8dd2b7f9534 100644
--- a/clippy_dev/src/main.rs
+++ b/clippy_dev/src/main.rs
@@ -76,7 +76,8 @@ fn main() {
         },
         ("lint", Some(matches)) => {
             let path = matches.value_of("path").unwrap();
-            lint::run(path);
+            let args = matches.values_of("args").into_iter().flatten();
+            lint::run(path, args);
         },
         ("rename_lint", Some(matches)) => {
             let old_name = matches.value_of("old_name").unwrap();
@@ -123,7 +124,7 @@ fn get_clap_config<'a>() -> ArgMatches<'a> {
                  * the lint count in README.md is correct\n \
                  * the changelog contains markdown link references at the bottom\n \
                  * all lint groups include the correct lints\n \
-                 * lint modules in `clippy_lints/*` are visible in `src/lifb.rs` via `pub mod`\n \
+                 * lint modules in `clippy_lints/*` are visible in `src/lib.rs` via `pub mod`\n \
                  * all lints are registered in the lint store",
                 )
                 .arg(Arg::with_name("print-only").long("print-only").help(
@@ -278,11 +279,44 @@ fn get_clap_config<'a>() -> ArgMatches<'a> {
                         Lint a package directory:
                             cargo dev lint tests/ui-cargo/wildcard_dependencies/fail
                             cargo dev lint ~/my-project
+
+                        Run rustfix:
+                            cargo dev lint ~/my-project -- --fix
+
+                        Set lint levels:
+                            cargo dev lint file.rs -- -W clippy::pedantic
+                            cargo dev lint ~/my-project -- -- -W clippy::pedantic
                 "})
                 .arg(
                     Arg::with_name("path")
                         .required(true)
                         .help("The path to a file or package directory to lint"),
+                )
+                .arg(
+                    Arg::with_name("args")
+                        .multiple(true)
+                        .help("Pass extra arguments to cargo/clippy-driver"),
+                ),
+        )
+        .subcommand(
+            SubCommand::with_name("rename_lint")
+                .about("Renames the given lint")
+                .arg(
+                    Arg::with_name("old_name")
+                        .index(1)
+                        .required(true)
+                        .help("The name of the lint to rename"),
+                )
+                .arg(
+                    Arg::with_name("new_name")
+                        .index(2)
+                        .required_unless("uplift")
+                        .help("The new name of the lint"),
+                )
+                .arg(
+                    Arg::with_name("uplift")
+                        .long("uplift")
+                        .help("This lint will be uplifted into rustc"),
                 ),
         )
         .subcommand(
diff --git a/clippy_dev/src/new_lint.rs b/clippy_dev/src/new_lint.rs
index 10f67d301f8..07d19638788 100644
--- a/clippy_dev/src/new_lint.rs
+++ b/clippy_dev/src/new_lint.rs
@@ -133,7 +133,7 @@ fn to_camel_case(name: &str) -> String {
         .collect()
 }
 
-fn get_stabilisation_version() -> String {
+fn get_stabilization_version() -> String {
     fn parse_manifest(contents: &str) -> Option<String> {
         let version = contents
             .lines()
@@ -199,7 +199,7 @@ fn get_lint_file_contents(lint: &LintData<'_>, enable_msrv: bool) -> String {
         },
     };
 
-    let version = get_stabilisation_version();
+    let version = get_stabilization_version();
     let lint_name = lint.name;
     let category = lint.category;
     let name_camel = to_camel_case(lint.name);
diff --git a/clippy_dev/src/update_lints.rs b/clippy_dev/src/update_lints.rs
index 1a6a4336da2..5024e63bfa7 100644
--- a/clippy_dev/src/update_lints.rs
+++ b/clippy_dev/src/update_lints.rs
@@ -17,7 +17,7 @@ const GENERATED_FILE_COMMENT: &str = "// This file was generated by `cargo dev u
 
 const DOCS_LINK: &str = "https://rust-lang.github.io/rust-clippy/master/index.html";
 
-#[derive(Clone, Copy, PartialEq)]
+#[derive(Clone, Copy, PartialEq, Eq)]
 pub enum UpdateMode {
     Check,
     Change,
@@ -66,8 +66,13 @@ fn generate_lint_files(
         |res| {
             for lint in usable_lints
                 .iter()
-                .map(|l| &l.name)
-                .chain(deprecated_lints.iter().map(|l| &l.name))
+                .map(|l| &*l.name)
+                .chain(deprecated_lints.iter().map(|l| &*l.name))
+                .chain(
+                    renamed_lints
+                        .iter()
+                        .map(|l| l.old_name.strip_prefix("clippy::").unwrap_or(&l.old_name)),
+                )
                 .sorted()
             {
                 writeln!(res, "[`{}`]: {}#{}", lint, DOCS_LINK, lint).unwrap();
@@ -372,7 +377,7 @@ fn exit_with_failure() {
 }
 
 /// Lint data parsed from the Clippy source code.
-#[derive(Clone, PartialEq, Debug)]
+#[derive(Clone, PartialEq, Eq, Debug)]
 struct Lint {
     name: String,
     group: String,
@@ -414,7 +419,7 @@ impl Lint {
     }
 }
 
-#[derive(Clone, PartialEq, Debug)]
+#[derive(Clone, PartialEq, Eq, Debug)]
 struct DeprecatedLint {
     name: String,
     reason: String,