about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2024-01-17 09:43:04 +0100
committerLukas Wirth <lukastw97@gmail.com>2024-01-17 09:43:04 +0100
commit21723cb0513a6cba95556822138dd7cb65ea3ac8 (patch)
treef004412d3432de0f00fb3e14468593f0dc3f50df
parent7777a81b6909914d1277eda6910b54d84fea0f76 (diff)
downloadrust-21723cb0513a6cba95556822138dd7cb65ea3ac8.tar.gz
rust-21723cb0513a6cba95556822138dd7cb65ea3ac8.zip
Run metadata on sysroot for CI metrics
-rw-r--r--crates/rust-analyzer/src/cli/analysis_stats.rs1
-rw-r--r--crates/rust-analyzer/src/cli/flags.rs4
-rw-r--r--xtask/src/metrics.rs6
3 files changed, 10 insertions, 1 deletions
diff --git a/crates/rust-analyzer/src/cli/analysis_stats.rs b/crates/rust-analyzer/src/cli/analysis_stats.rs
index e69302dbacc..f601f004420 100644
--- a/crates/rust-analyzer/src/cli/analysis_stats.rs
+++ b/crates/rust-analyzer/src/cli/analysis_stats.rs
@@ -63,6 +63,7 @@ impl flags::AnalysisStats {
             true => None,
             false => Some(RustLibSource::Discover),
         };
+        cargo_config.sysroot_query_metadata = self.query_sysroot_metadata;
         let no_progress = &|_| ();
 
         let mut db_load_sw = self.stop_watch();
diff --git a/crates/rust-analyzer/src/cli/flags.rs b/crates/rust-analyzer/src/cli/flags.rs
index 5633c0c488a..cc9e2a7ce26 100644
--- a/crates/rust-analyzer/src/cli/flags.rs
+++ b/crates/rust-analyzer/src/cli/flags.rs
@@ -71,6 +71,9 @@ xflags::xflags! {
             optional --with-deps
             /// Don't load sysroot crates (`std`, `core` & friends).
             optional --no-sysroot
+            /// Run cargo metadata on the sysroot to analyze its third-pary dependencies.
+            /// Requires --no-sysroot to not be set.
+            optional --query-sysroot-metadata
 
             /// Don't run build scripts or load `OUT_DIR` values by running `cargo check` before analysis.
             optional --disable-build-scripts
@@ -206,6 +209,7 @@ pub struct AnalysisStats {
     pub only: Option<String>,
     pub with_deps: bool,
     pub no_sysroot: bool,
+    pub query_sysroot_metadata: bool,
     pub disable_build_scripts: bool,
     pub disable_proc_macros: bool,
     pub skip_lowering: bool,
diff --git a/xtask/src/metrics.rs b/xtask/src/metrics.rs
index 845928432c4..db4e1b35829 100644
--- a/xtask/src/metrics.rs
+++ b/xtask/src/metrics.rs
@@ -113,7 +113,11 @@ impl Metrics {
     ) -> anyhow::Result<()> {
         assert!(Path::new(path).exists(), "unable to find bench in {path}");
         eprintln!("\nMeasuring analysis-stats/{name}");
-        let output = cmd!(sh, "./target/release/rust-analyzer -q analysis-stats {path}").read()?;
+        let output = cmd!(
+            sh,
+            "./target/release/rust-analyzer -q analysis-stats {path} --query-sysroot-metadata"
+        )
+        .read()?;
         for (metric, value, unit) in parse_metrics(&output) {
             self.report(&format!("analysis-stats/{name}/{metric}"), value, unit.into());
         }