@@ -36,6 +36,7 @@ class AnalysisOptionsParser {
3636
3737 final mergedRules = < String , Map <String , Object ?>> {};
3838 final disabledRules = < String > {};
39+ final excludedPatterns = < String > {};
3940
4041 final nextSeenPaths = {...seenPaths, path};
4142 _resolveAndMergeIncludes (
@@ -44,11 +45,17 @@ class AnalysisOptionsParser {
4445 nextSeenPaths,
4546 mergedRules,
4647 disabledRules,
48+ excludedPatterns,
4749 );
4850 _parseRuleOptions (yaml, mergedRules, disabledRules);
4951 _parseSuppressedErrors (yaml, mergedRules, disabledRules);
52+ _parseExcludedPatterns (yaml, excludedPatterns);
5053
51- return RulesData (rules: mergedRules, disabledRules: disabledRules);
54+ return RulesData (
55+ rules: mergedRules,
56+ disabledRules: disabledRules,
57+ excludedPatterns: excludedPatterns,
58+ );
5259 }
5360
5461 Map <String , Object ?>? _parseYaml (File file) {
@@ -79,6 +86,7 @@ class AnalysisOptionsParser {
7986 Set <String > seenPaths,
8087 Map <String , Map <String , Object ?>> mergedRules,
8188 Set <String > disabledRules,
89+ Set <String > excludedPatterns,
8290 ) {
8391 final includeOption = yaml['include' ];
8492 switch (includeOption) {
@@ -89,6 +97,7 @@ class AnalysisOptionsParser {
8997 seenPaths,
9098 mergedRules,
9199 disabledRules,
100+ excludedPatterns,
92101 );
93102 case List ():
94103 for (final include in includeOption) {
@@ -99,6 +108,7 @@ class AnalysisOptionsParser {
99108 seenPaths,
100109 mergedRules,
101110 disabledRules,
111+ excludedPatterns,
102112 );
103113 }
104114 }
@@ -111,6 +121,7 @@ class AnalysisOptionsParser {
111121 Set <String > seenPaths,
112122 Map <String , Map <String , Object ?>> mergedRules,
113123 Set <String > disabledRules,
124+ Set <String > excludedPatterns,
114125 ) {
115126 final includedFile = _resolveIncludedFile (baseFile, includePath);
116127 if (includedFile == null ) return ;
@@ -124,6 +135,7 @@ class AnalysisOptionsParser {
124135 };
125136 }
126137 disabledRules.addAll (includedData.disabledRules);
138+ excludedPatterns.addAll (includedData.excludedPatterns);
127139 }
128140
129141 File ? _resolveIncludedFile (File baseFile, String includePath) {
@@ -228,4 +240,21 @@ class AnalysisOptionsParser {
228240 }
229241 }
230242 }
243+
244+ /// Parses file exclusion patterns configured under `analyzer: exclude:` .
245+ void _parseExcludedPatterns (
246+ Map <String , Object ?> yaml,
247+ Set <String > excludedPatterns,
248+ ) {
249+ final analyzer = yaml['analyzer' ];
250+ if (analyzer is ! Map ) return ;
251+
252+ final exclude = analyzer['exclude' ];
253+ switch (exclude) {
254+ case String ():
255+ excludedPatterns.add (exclude);
256+ case Iterable ():
257+ excludedPatterns.addAll (exclude.whereType <String >());
258+ }
259+ }
231260}
0 commit comments