flowscope_core/linter/rules/
mod.rs1use 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
85pub 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}