Skip to main content

flowscope_core/linter/rules/
mod.rs

1//! Lint rule implementations and registry.
2
3use super::config::LintConfig;
4use super::rule::LintRule;
5
6pub mod al_001;
7pub mod al_002;
8pub mod al_003;
9pub mod al_004;
10pub mod al_005;
11pub mod al_006;
12pub mod al_007;
13pub mod al_008;
14pub mod al_009;
15pub mod am_001;
16pub mod am_002;
17pub mod am_003;
18pub mod am_004;
19pub mod am_005;
20pub mod am_006;
21pub mod am_007;
22pub mod am_008;
23pub mod am_009;
24pub(crate) mod capitalisation_policy_helpers;
25pub(crate) mod column_count_helpers;
26pub mod cp_001;
27pub mod cp_002;
28pub mod cp_003;
29pub mod cp_004;
30pub mod cp_005;
31pub mod cv_001;
32pub mod cv_002;
33pub mod cv_003;
34pub mod cv_004;
35pub mod cv_005;
36pub mod cv_006;
37pub mod cv_007;
38pub mod cv_008;
39pub mod cv_009;
40pub mod cv_010;
41pub mod cv_011;
42pub mod cv_012;
43pub(crate) mod identifier_candidates_helpers;
44pub mod jj_001;
45pub mod lt_001;
46pub mod lt_002;
47pub mod lt_003;
48pub mod lt_004;
49pub mod lt_005;
50pub mod lt_006;
51pub mod lt_007;
52pub mod lt_008;
53pub mod lt_009;
54pub mod lt_010;
55pub mod lt_011;
56pub mod lt_012;
57pub mod lt_013;
58pub mod lt_014;
59pub mod lt_015;
60#[allow(dead_code)]
61pub(crate) mod references_quoted_helpers;
62pub mod rf_001;
63pub mod rf_002;
64pub mod rf_003;
65pub mod rf_004;
66pub mod rf_005;
67pub mod rf_006;
68pub(crate) mod semantic_helpers;
69pub mod st_001;
70pub mod st_002;
71pub mod st_003;
72pub mod st_004;
73pub mod st_005;
74pub mod st_006;
75pub mod st_007;
76pub mod st_008;
77pub mod st_009;
78pub mod st_010;
79pub mod st_011;
80pub mod st_012;
81pub mod tq_001;
82pub mod tq_002;
83pub mod tq_003;
84
85/// Returns all available lint rules.
86pub fn all_rules(config: &LintConfig) -> Vec<Box<dyn LintRule>> {
87    let rules: Vec<Box<dyn LintRule>> = vec![
88        Box::new(am_002::BareUnion),
89        Box::new(am_009::LimitOffsetWithoutOrderBy),
90        Box::new(am_001::DistinctWithGroupBy),
91        Box::new(am_004::AmbiguousColumnCount),
92        Box::new(am_003::AmbiguousOrderBy),
93        Box::new(am_005::AmbiguousJoinStyle::from_config(config)),
94        Box::new(am_006::AmbiguousColumnRefs::from_config(config)),
95        Box::new(am_007::AmbiguousSetColumns),
96        Box::new(am_008::AmbiguousJoinCondition),
97        Box::new(al_001::AliasingTableStyle::from_config(config)),
98        Box::new(al_002::AliasingColumnStyle::from_config(config)),
99        Box::new(al_003::ImplicitAlias::from_config(config)),
100        Box::new(al_004::AliasingUniqueTable::from_config(config)),
101        Box::new(al_005::UnusedTableAlias::from_config(config)),
102        Box::new(al_006::AliasingLength::from_config(config)),
103        Box::new(al_007::AliasingForbidSingleTable::from_config(config)),
104        Box::new(al_008::AliasingUniqueColumn::from_config(config)),
105        Box::new(al_009::AliasingSelfAliasColumn::from_config(config)),
106        Box::new(cp_001::CapitalisationKeywords::from_config(config)),
107        Box::new(cp_002::CapitalisationIdentifiers::from_config(config)),
108        Box::new(cp_003::CapitalisationFunctions::from_config(config)),
109        Box::new(cp_004::CapitalisationLiterals::from_config(config)),
110        Box::new(cp_005::CapitalisationTypes::from_config(config)),
111        Box::new(cv_001::ConventionNotEqual::from_config(config)),
112        Box::new(cv_002::CoalesceConvention),
113        Box::new(cv_003::ConventionSelectTrailingComma::from_config(config)),
114        Box::new(cv_004::CountStyle::from_config(config)),
115        Box::new(cv_005::NullComparison),
116        Box::new(cv_006::ConventionTerminator::from_config(config)),
117        Box::new(cv_007::ConventionStatementBrackets),
118        Box::new(cv_008::LeftJoinOverRightJoin),
119        Box::new(cv_009::ConventionBlockedWords::from_config(config)),
120        Box::new(cv_010::ConventionQuotedLiterals::from_config(config)),
121        Box::new(cv_011::ConventionCastingStyle::from_config(config)),
122        Box::new(cv_012::ConventionJoinCondition),
123        Box::new(jj_001::JinjaPadding),
124        Box::new(lt_001::LayoutSpacing::from_config(config)),
125        Box::new(lt_002::LayoutIndent::from_config(config)),
126        Box::new(lt_003::LayoutOperators::from_config(config)),
127        Box::new(lt_004::LayoutCommas::from_config(config)),
128        Box::new(lt_005::LayoutLongLines::from_config(config)),
129        Box::new(lt_006::LayoutFunctions),
130        Box::new(lt_007::LayoutCteBracket),
131        Box::new(lt_008::LayoutCteNewline::from_config(config)),
132        Box::new(lt_009::LayoutSelectTargets::from_config(config)),
133        Box::new(lt_010::LayoutSelectModifiers),
134        Box::new(lt_011::LayoutSetOperators::from_config(config)),
135        Box::new(lt_012::LayoutEndOfFile),
136        Box::new(lt_013::LayoutStartOfFile),
137        Box::new(lt_014::LayoutKeywordNewline::from_config(config)),
138        Box::new(lt_015::LayoutNewlines::from_config(config)),
139        Box::new(rf_001::ReferencesFrom::from_config(config)),
140        Box::new(rf_002::ReferencesQualification::from_config(config)),
141        Box::new(rf_003::ReferencesConsistent::from_config(config)),
142        Box::new(rf_004::ReferencesKeywords::from_config(config)),
143        Box::new(rf_005::ReferencesSpecialChars::from_config(config)),
144        Box::new(rf_006::ReferencesQuoting::from_config(config)),
145        Box::new(st_003::UnusedCte),
146        Box::new(st_001::UnnecessaryElseNull),
147        Box::new(st_002::StructureSimpleCase),
148        Box::new(st_004::FlattenableNestedCase),
149        Box::new(st_005::StructureSubquery::from_config(config)),
150        Box::new(st_006::StructureColumnOrder),
151        Box::new(st_007::AvoidUsingJoin),
152        Box::new(st_008::StructureDistinct),
153        Box::new(st_009::StructureJoinConditionOrder::from_config(config)),
154        Box::new(st_010::StructureConstantExpression),
155        Box::new(st_011::StructureUnusedJoin),
156        Box::new(st_012::StructureConsecutiveSemicolons),
157        Box::new(tq_001::TsqlSpPrefix),
158        Box::new(tq_002::TsqlProcedureBeginEnd),
159        Box::new(tq_003::TsqlEmptyBatch),
160    ];
161    rules
162}