Skip to content

Commit

Permalink
add check.ignore to list cargo check diagnostics to ignore (dead_code…
Browse files Browse the repository at this point in the history
…, unused_imports, ...)

fixes #14798
  • Loading branch information
adamse committed Jul 11, 2023
1 parent cabe26c commit 2d9c6bd
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 0 deletions.
5 changes: 5 additions & 0 deletions crates/rust-analyzer/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,10 @@ config_data! {
///
/// Set to `"all"` to pass `--all-features` to Cargo.
check_features | checkOnSave_features: Option<CargoFeaturesDef> = "null",
/// List of check diagnostics to ignore.
///
/// For example: `dead_code`, `unused_imports`, `unused_variables`,...
check_ignore: FxHashSet<String> = "[]",
/// Specifies the working directory for running checks.
/// - "workspace": run checks for workspaces in the corresponding workspaces' root directories.
// FIXME: Ideally we would support this in some way
Expand Down Expand Up @@ -1098,6 +1102,7 @@ impl Config {
remap_prefix: self.data.diagnostics_remapPrefix.clone(),
warnings_as_info: self.data.diagnostics_warningsAsInfo.clone(),
warnings_as_hint: self.data.diagnostics_warningsAsHint.clone(),
check_ignore: self.data.check_ignore.clone(),
}
}

Expand Down
2 changes: 2 additions & 0 deletions crates/rust-analyzer/src/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use std::mem;
use ide::FileId;
use ide_db::FxHashMap;
use nohash_hasher::{IntMap, IntSet};
use rustc_hash::FxHashSet;
use triomphe::Arc;

use crate::lsp_ext;
Expand All @@ -17,6 +18,7 @@ pub struct DiagnosticsMapConfig {
pub remap_prefix: FxHashMap<String, String>,
pub warnings_as_info: Vec<String>,
pub warnings_as_hint: Vec<String>,
pub check_ignore: FxHashSet<String>,
}

#[derive(Debug, Default, Clone)]
Expand Down
7 changes: 7 additions & 0 deletions crates/rust-analyzer/src/diagnostics/to_proto.rs
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,13 @@ pub(crate) fn map_rust_diagnostic_to_lsp(

let mut source = String::from("rustc");
let mut code = rd.code.as_ref().map(|c| c.code.clone());

if let Some(code_val) = &code {
if config.check_ignore.contains(code_val) {
return Vec::new();
}
}

if let Some(code_val) = &code {
// See if this is an RFC #2103 scoped lint (e.g. from Clippy)
let scoped_code: Vec<&str> = code_val.split("::").collect();
Expand Down
7 changes: 7 additions & 0 deletions docs/user/generated_config.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,13 @@ List of features to activate. Defaults to

Set to `"all"` to pass `--all-features` to Cargo.
--
[[rust-analyzer.check.ignore]]rust-analyzer.check.ignore (default: `[]`)::
+
--
List of check diagnostics to ignore.

For example: `dead_code`, `unused_imports`, `unused_variables`,...
--
[[rust-analyzer.check.invocationLocation]]rust-analyzer.check.invocationLocation (default: `"workspace"`)::
+
--
Expand Down
9 changes: 9 additions & 0 deletions editors/code/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -688,6 +688,15 @@
}
]
},
"rust-analyzer.check.ignore": {
"markdownDescription": "List of check diagnostics to ignore.\n\nFor example: `dead_code`, `unused_imports`, `unused_variables`,...",
"default": [],
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"rust-analyzer.check.invocationLocation": {
"markdownDescription": "Specifies the working directory for running checks.\n- \"workspace\": run checks for workspaces in the corresponding workspaces' root directories.\n This falls back to \"root\" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`.\n- \"root\": run checks in the project's root directory.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.",
"default": "workspace",
Expand Down

0 comments on commit 2d9c6bd

Please sign in to comment.