about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--clippy_dev/src/crater.rs29
1 files changed, 19 insertions, 10 deletions
diff --git a/clippy_dev/src/crater.rs b/clippy_dev/src/crater.rs
index 3ac62f7ebc7..6b121a79e37 100644
--- a/clippy_dev/src/crater.rs
+++ b/clippy_dev/src/crater.rs
@@ -63,20 +63,26 @@ impl KrateSource {
 }
 
 impl Krate {
-    fn run_clippy_lints(&self, cargo_clippy_path: &PathBuf) -> String {
+    fn run_clippy_lints(&self, cargo_clippy_path: &PathBuf) -> Vec<String> {
         let cargo_clippy_path = std::fs::canonicalize(cargo_clippy_path).unwrap();
         let project_root = &self.path;
         dbg!(&cargo_clippy_path);
         dbg!(&project_root);
 
         let output = std::process::Command::new(cargo_clippy_path)
-            .args(&["--", "--message-format=short","--", "--cap-lints=warn",])
+            .args(&["--", "--message-format=short", "--", "--cap-lints=warn"])
             .current_dir(project_root)
-            .output();
-        let output: String = String::from_utf8_lossy(&output.unwrap().stderr).lines().filter(|line|line.contains(": warning: ")).collect();
-       // output.lines().for_each(|l| println!("{}", l));
-        //dbg!(&output);
-
+            .output()
+            .unwrap();
+        let mut output = String::from_utf8_lossy(&output.stderr);
+        let output: Vec<&str> = output.lines().collect();
+        let mut output: Vec<String> = output
+            .into_iter()
+            .filter(|line| line.contains(": warning: "))
+            .map(|l| l.to_string())
+            .collect();
+
+        output.sort();
         output
     }
 }
@@ -113,10 +119,13 @@ pub fn run() {
     );
 
     // download and extract the crates, then run clippy on them and collect clippys warnings
-    let clippy_lint_results: Vec<String> = krates
+    let clippy_lint_results: Vec<Vec<String>> = krates
         .into_iter()
         .map(|krate| krate.download_and_extract())
         .map(|krate| krate.run_clippy_lints(&cargo_clippy_path))
-        .collect::<Vec<String>>();
-        dbg!(clippy_lint_results);
+        .collect();
+
+    let results: Vec<String> = clippy_lint_results.into_iter().flatten().collect();
+
+    results.iter().for_each(|l| println!("{}", l));
 }