@@ -22,11 +22,12 @@ use crate::{
2222fn check_sql (
2323 sql : & str ,
2424 path : & str ,
25+ included_rules : & [ Rule ] ,
2526 excluded_rules : & [ Rule ] ,
2627 pg_version : Option < Version > ,
2728 assume_in_transaction : bool ,
2829) -> CheckReport {
29- let mut linter = Linter :: without_rules ( excluded_rules) ;
30+ let mut linter = Linter :: with_rules ( included_rules , excluded_rules) ;
3031 if let Some ( pg_version) = pg_version {
3132 linter. settings . pg_version = pg_version;
3233 }
@@ -142,6 +143,7 @@ fn render_lint_error<W: std::io::Write>(
142143pub ( crate ) struct LintArgs {
143144 pub ( crate ) input : Input ,
144145 pub ( crate ) excluded_rules : Vec < Rule > ,
146+ pub ( crate ) included_rules : Vec < Rule > ,
145147 pub ( crate ) pg_version : Option < Version > ,
146148 pub ( crate ) assume_in_transaction : bool ,
147149 pub ( crate ) reporter : Reporter ,
@@ -162,6 +164,7 @@ pub fn lint_files(args: &LintArgs) -> Result<Vec<CheckReport>> {
162164 let content = check_sql (
163165 & sql,
164166 & path,
167+ & args. included_rules ,
165168 & args. excluded_rules ,
166169 args. pg_version ,
167170 args. assume_in_transaction ,
@@ -176,6 +179,7 @@ pub fn lint_files(args: &LintArgs) -> Result<Vec<CheckReport>> {
176179 let content = check_sql (
177180 & sql,
178181 path. to_str ( ) . unwrap ( ) ,
182+ & args. included_rules ,
179183 & args. excluded_rules ,
180184 args. pg_version ,
181185 args. assume_in_transaction ,
@@ -491,7 +495,7 @@ mod test_check_files {
491495select \;
492496 " ;
493497 let mut buff = Vec :: new ( ) ;
494- let res = check_sql ( sql, "test.sql" , & [ ] , None , false ) ;
498+ let res = check_sql ( sql, "test.sql" , & [ ] , & [ ] , None , false ) ;
495499 fmt_json ( & mut buff, vec ! [ res] ) . unwrap ( ) ;
496500
497501 let val: Value = serde_json:: from_slice ( & buff) . unwrap ( ) ;
@@ -502,7 +506,7 @@ select \;
502506 fn skip_lint_on_syntax_error ( ) {
503507 let error_sql = "ALTER TABLE foo ALTER CONSTRAINT bar RENAME TO quux;" ;
504508 let mut buff = vec ! [ ] ;
505- let res = check_sql ( error_sql, "test.sql" , & [ ] , None , false ) ;
509+ let res = check_sql ( error_sql, "test.sql" , & [ ] , & [ ] , None , false ) ;
506510 fmt_json ( & mut buff, vec ! [ res] ) . unwrap ( ) ;
507511 assert_snapshot ! ( String :: from_utf8_lossy( & buff) , @r#"[{"file":"test.sql","line":0,"column":36,"level":"Error","message":"missing comma","help":null,"rule_name":"syntax-error","column_end":36,"line_end":0}]"# ) ;
508512 }
@@ -529,7 +533,7 @@ SELECT 1;
529533
530534 let res = print_violations (
531535 & mut buff,
532- vec ! [ check_sql( sql, filename, & [ ] , None , false ) ] ,
536+ vec ! [ check_sql( sql, filename, & [ ] , & [ ] , None , false ) ] ,
533537 & Reporter :: Gcc ,
534538 false ,
535539 ) ;
@@ -562,7 +566,7 @@ SELECT 1;
562566
563567 let res = print_violations (
564568 & mut buff,
565- vec ! [ check_sql( sql, filename, & [ ] , None , false ) ] ,
569+ vec ! [ check_sql( sql, filename, & [ ] , & [ ] , None , false ) ] ,
566570 & Reporter :: Tty ,
567571 true ,
568572 ) ;
@@ -584,7 +588,7 @@ SELECT 1;
584588
585589 let res = print_violations (
586590 & mut buff,
587- vec ! [ check_sql( sql, filename, & [ ] , None , false ) ] ,
591+ vec ! [ check_sql( sql, filename, & [ ] , & [ ] , None , false ) ] ,
588592 & Reporter :: Tty ,
589593 false ,
590594 ) ;
@@ -600,7 +604,7 @@ SELECT 1;
600604
601605 let res = print_violations (
602606 & mut buff,
603- vec ! [ check_sql( sql, "main.sql" , & [ ] , None , false ) ] ,
607+ vec ! [ check_sql( sql, "main.sql" , & [ ] , & [ ] , None , false ) ] ,
604608 & Reporter :: Tty ,
605609 false ,
606610 ) ;
@@ -622,7 +626,7 @@ SELECT 1;
622626
623627 let res = print_violations (
624628 & mut buff,
625- vec ! [ check_sql( sql, filename, & [ ] , None , false ) ] ,
629+ vec ! [ check_sql( sql, filename, & [ ] , & [ ] , None , false ) ] ,
626630 & Reporter :: Json ,
627631 false ,
628632 ) ;
@@ -643,7 +647,7 @@ SELECT 1;
643647
644648 let res = print_violations (
645649 & mut buff,
646- vec ! [ check_sql( sql, filename, & [ ] , None , false ) ] ,
650+ vec ! [ check_sql( sql, filename, & [ ] , & [ ] , None , false ) ] ,
647651 & Reporter :: Gitlab ,
648652 false ,
649653 ) ;
@@ -662,6 +666,6 @@ ALTER TABLE "core_foo" ADD COLUMN "bar" integer NOT NULL;
662666SELECT 1;
663667"# ;
664668 let filename = "main.sql" ;
665- assert_debug_snapshot ! ( check_sql( sql, filename, & [ ] , None , false ) ) ;
669+ assert_debug_snapshot ! ( check_sql( sql, filename, & [ ] , & [ ] , None , false ) ) ;
666670 }
667671}
0 commit comments