Skip to content

Commit a2366a4

Browse files
merged
2 parents 4285e6a + bc704c1 commit a2366a4

File tree

3 files changed

+44
-6
lines changed

3 files changed

+44
-6
lines changed

crates/pgt_configuration/src/analyser/linter/rules.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,14 @@ impl Rules {
121121
}
122122
enabled_rules.difference(&disabled_rules).copied().collect()
123123
}
124+
#[doc = r" It returns the disabled rules by configuration."]
125+
pub fn as_disabled_rules(&self) -> FxHashSet<RuleFilter<'static>> {
126+
let mut disabled_rules = FxHashSet::default();
127+
if let Some(group) = self.safety.as_ref() {
128+
disabled_rules.extend(&group.get_disabled_rules());
129+
}
130+
disabled_rules
131+
}
124132
}
125133
#[derive(Clone, Debug, Default, Deserialize, Eq, Merge, PartialEq, Serialize)]
126134
#[cfg_attr(feature = "schema", derive(JsonSchema))]

crates/pgt_workspace/src/workspace/server/analyser.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,13 @@ impl<'a, 'b> LintVisitor<'a, 'b> {
7979
.unwrap_or_default();
8080

8181
self.enabled_rules.extend(enabled_rules);
82+
83+
let disabled_rules = self
84+
.settings
85+
.as_linter_rules()
86+
.map(|rules| rules.as_disabled_rules())
87+
.unwrap_or_default();
88+
self.disabled_rules.extend(disabled_rules);
8289
}
8390

8491
(self.enabled_rules, self.disabled_rules)
@@ -135,6 +142,7 @@ impl RegistryVisitor for LintVisitor<'_, '_> {
135142

136143
#[cfg(test)]
137144
mod tests {
145+
use pgt_analyse::RuleFilter;
138146
use pgt_configuration::{RuleConfiguration, Rules, analyser::Safety};
139147

140148
use crate::{
@@ -143,11 +151,10 @@ mod tests {
143151
};
144152

145153
#[test]
146-
fn identifies_disabled_rules() {
154+
fn recognizes_disabled_rules() {
147155
let settings = Settings {
148156
linter: LinterSettings {
149157
rules: Some(Rules {
150-
recommended: Some(true),
151158
safety: Some(Safety {
152159
ban_drop_column: Some(RuleConfiguration::Plain(
153160
pgt_configuration::RulePlainConfiguration::Off,
@@ -156,17 +163,18 @@ mod tests {
156163
}),
157164
..Default::default()
158165
}),
159-
160166
..Default::default()
161167
},
162168
..Default::default()
163169
};
164170

165-
let (enabled_rules, disabled_rules) = AnalyserVisitorBuilder::new(&settings)
171+
let (_, disabled_rules) = AnalyserVisitorBuilder::new(&settings)
166172
.with_linter_rules(&[], &[])
167173
.finish();
168174

169-
println!("{:#?}", enabled_rules);
170-
println!("{:#?}", disabled_rules);
175+
assert_eq!(
176+
disabled_rules,
177+
vec![RuleFilter::Rule("safety", "banDropColumn")]
178+
)
171179
}
172180
}

xtask/codegen/src/generate_configuration.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ fn generate_for_groups(
6161
let mut group_idents = Vec::with_capacity(groups.len());
6262
let mut group_strings = Vec::with_capacity(groups.len());
6363
let mut group_as_default_rules = Vec::with_capacity(groups.len());
64+
let mut group_as_disabled_rules = Vec::with_capacity(groups.len());
65+
6466
for (group, rules) in groups {
6567
let group_pascal_ident = quote::format_ident!("{}", &Case::Pascal.convert(group));
6668
let group_ident = quote::format_ident!("{}", group);
@@ -95,6 +97,12 @@ fn generate_for_groups(
9597
}
9698
});
9799

100+
group_as_disabled_rules.push(quote! {
101+
if let Some(group) = self.#group_ident.as_ref() {
102+
disabled_rules.extend(&group.get_disabled_rules());
103+
}
104+
});
105+
98106
group_pascal_idents.push(group_pascal_ident);
99107
group_idents.push(group_ident);
100108
group_strings.push(Literal::string(group));
@@ -246,6 +254,13 @@ fn generate_for_groups(
246254
#( #group_as_default_rules )*
247255
enabled_rules
248256
}
257+
258+
/// It returns the disabled rules by configuration.
259+
pub fn as_disabled_rules(&self) -> FxHashSet<RuleFilter<'static>> {
260+
let mut disabled_rules = FxHashSet::default();
261+
#( #group_as_disabled_rules )*
262+
disabled_rules
263+
}
249264
}
250265

251266
#( #struct_groups )*
@@ -358,6 +373,13 @@ fn generate_for_groups(
358373

359374
enabled_rules.difference(&disabled_rules).copied().collect()
360375
}
376+
377+
/// It returns the disabled rules by configuration.
378+
pub fn as_disabled_rules(&self) -> FxHashSet<RuleFilter<'static>> {
379+
let mut disabled_rules = FxHashSet::default();
380+
#( #group_as_disabled_rules )*
381+
disabled_rules
382+
}
361383
}
362384

363385
#( #struct_groups )*

0 commit comments

Comments
 (0)