about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--crates/rust-analyzer/src/cli/analysis_stats.rs37
1 files changed, 17 insertions, 20 deletions
diff --git a/crates/rust-analyzer/src/cli/analysis_stats.rs b/crates/rust-analyzer/src/cli/analysis_stats.rs
index 30811bbbfa5..fd1407e6071 100644
--- a/crates/rust-analyzer/src/cli/analysis_stats.rs
+++ b/crates/rust-analyzer/src/cli/analysis_stats.rs
@@ -58,7 +58,7 @@ impl AnalysisStatsCmd {
         let mut db_load_sw = self.stop_watch();
         let (host, vfs) = load_cargo(&self.path, self.load_output_dirs, self.with_proc_macro)?;
         let db = host.raw_database();
-        eprintln!("Database loaded {}", db_load_sw.elapsed());
+        eprintln!("{:<20} {}", "Database loaded:", db_load_sw.elapsed());
 
         let mut analysis_sw = self.stop_watch();
         let mut num_crates = 0;
@@ -85,7 +85,7 @@ impl AnalysisStatsCmd {
             shuffle(&mut rng, &mut visit_queue);
         }
 
-        eprintln!("Crates in this dir: {}", num_crates);
+        eprint!("  crates: {}", num_crates);
         let mut num_decls = 0;
         let mut funcs = Vec::new();
         while let Some(module) = visit_queue.pop() {
@@ -109,10 +109,8 @@ impl AnalysisStatsCmd {
                 }
             }
         }
-        eprintln!("Total modules found: {}", visited_modules.len());
-        eprintln!("Total declarations: {}", num_decls);
-        eprintln!("Total functions: {}", funcs.len());
-        eprintln!("Item Collection: {}", analysis_sw.elapsed());
+        eprintln!(", mods: {}, decls: {}, fns: {}", visited_modules.len(), num_decls, funcs.len());
+        eprintln!("{:<20} {}", "Item Collection:", analysis_sw.elapsed());
 
         if self.randomize {
             shuffle(&mut rng, &mut funcs);
@@ -135,7 +133,7 @@ impl AnalysisStatsCmd {
                     snap.0.infer(f_id.into());
                 })
                 .count();
-            eprintln!("Parallel Inference: {}", inference_sw.elapsed());
+            eprintln!("{:<20} {}", "Parallel Inference:", inference_sw.elapsed());
         }
 
         let mut inference_sw = self.stop_watch();
@@ -273,27 +271,22 @@ impl AnalysisStatsCmd {
             bar.inc(1);
         }
         bar.finish_and_clear();
-        eprintln!("Total expressions: {}", num_exprs);
         eprintln!(
-            "Expressions of unknown type: {} ({}%)",
+            "  exprs: {}, ??ty: {} ({}%), ?ty: {} ({}%), !ty: {}",
+            num_exprs,
             num_exprs_unknown,
-            if num_exprs > 0 { num_exprs_unknown * 100 / num_exprs } else { 100 }
-        );
-        report_metric("unknown type", num_exprs_unknown, "#");
-
-        eprintln!(
-            "Expressions of partially unknown type: {} ({}%)",
+            percentage(num_exprs_unknown, num_exprs),
             num_exprs_partially_unknown,
-            if num_exprs > 0 { num_exprs_partially_unknown * 100 / num_exprs } else { 100 }
+            percentage(num_exprs_partially_unknown, num_exprs),
+            num_type_mismatches
         );
-
-        eprintln!("Type mismatches: {}", num_type_mismatches);
+        report_metric("unknown type", num_exprs_unknown, "#");
         report_metric("type mismatches", num_type_mismatches, "#");
 
-        eprintln!("Inference: {}", inference_sw.elapsed());
+        eprintln!("{:<20} {}", "Inference:", inference_sw.elapsed());
 
         let total_span = analysis_sw.elapsed();
-        eprintln!("Total: {}", total_span);
+        eprintln!("{:<20} {}", "Total:", total_span);
         report_metric("total time", total_span.time.as_millis() as u64, "ms");
         if let Some(instructions) = total_span.instructions {
             report_metric("total instructions", instructions, "#instr");
@@ -325,3 +318,7 @@ fn shuffle<T>(rng: &mut Rand32, slice: &mut [T]) {
         slice.swap(0, idx);
     }
 }
+
+fn percentage(n: u64, total: u64) -> u64 {
+    (n * 100).checked_div(total).unwrap_or(100)
+}