@@ -17,6 +17,19 @@ def parse_args(argv, parserBuilder):
1717 return parserBuilder .add_console_use_arguments ().parse_args (argv )
1818
1919
20+ def maybe_get_existing_exclude (exclude_files , exclude_lines , old_baseline ):
21+ if not old_baseline :
22+ return exclude_files , exclude_lines
23+
24+ previously_included = old_baseline .get ("exclude" , None )
25+ if not previously_included :
26+ return exclude_files , exclude_lines
27+
28+ files = "|" .join (filter (None , (exclude_files , previously_included .get ("files" ,None ))))
29+ lines = "|" .join (filter (None , (exclude_lines , previously_included .get ("lines" ,None ))))
30+
31+ return files , lines
32+
2033def main (argv = None ):
2134 if len (sys .argv ) == 1 : # pragma: no cover
2235 sys .argv .append ('-h' )
@@ -36,6 +49,10 @@ def main(argv=None):
3649 if args .word_list_file :
3750 automaton , word_list_hash = build_automaton (args .word_list_file )
3851
52+ _baseline = _get_existing_baseline (args .import_filename )
53+ if args .plugins_reuse_excludes or (_baseline and _baseline .get ("plugins_reuse_excludes" , False )):
54+ args .exclude_files , args .exclude_lines = maybe_get_existing_exclude (args .exclude_files , args .exclude_lines , _baseline )
55+
3956 # Plugins are *always* rescanned with fresh settings, because
4057 # we want to get the latest updates.
4158 plugins = initialize .from_parser_builder (
@@ -173,13 +190,17 @@ def _perform_scan(args, plugins, automaton, word_list_hash):
173190 if not args .word_list_file and old_baseline .get ('word_list' ):
174191 args .word_list_file = old_baseline ['word_list' ]['file' ]
175192
193+ if not args .plugins_reuse_excludes :
194+ args .plugins_reuse_excludes = old_baseline .get ('plugins_reuse_excludes' , False )
195+
176196 # If we have knowledge of an existing baseline file, we should use
177197 # that knowledge and add it to our exclude_files regex.
178198 if args .import_filename :
179199 _add_baseline_to_exclude_files (args )
180200
181201 new_baseline = baseline .initialize (
182202 plugins = plugins ,
203+ plugins_reuse_exclude = args .plugins_reuse_excludes ,
183204 exclude_files_regex = args .exclude_files ,
184205 exclude_lines_regex = args .exclude_lines ,
185206 word_list_file = args .word_list_file ,
0 commit comments