Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(359)

Side by Side Diff: pkg/analyzer/lib/src/task/options.dart

Issue 1501633003: Strong-mode error code validation "enum" (#25117). (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: cleanup Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/task/strong/info.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analyzer.src.task.options; 5 library analyzer.src.task.options;
6 6
7 import 'package:analyzer/analyzer.dart'; 7 import 'package:analyzer/analyzer.dart';
8 import 'package:analyzer/plugin/options.dart'; 8 import 'package:analyzer/plugin/options.dart';
9 import 'package:analyzer/source/analysis_options_provider.dart'; 9 import 'package:analyzer/source/analysis_options_provider.dart';
10 import 'package:analyzer/src/generated/engine.dart'; 10 import 'package:analyzer/src/generated/engine.dart';
11 import 'package:analyzer/src/generated/java_engine.dart'; 11 import 'package:analyzer/src/generated/java_engine.dart';
12 import 'package:analyzer/src/generated/source.dart'; 12 import 'package:analyzer/src/generated/source.dart';
13 import 'package:analyzer/src/generated/utilities_general.dart'; 13 import 'package:analyzer/src/generated/utilities_general.dart';
14 import 'package:analyzer/src/task/general.dart'; 14 import 'package:analyzer/src/task/general.dart';
15 import 'package:analyzer/src/task/strong/info.dart';
15 import 'package:analyzer/task/general.dart'; 16 import 'package:analyzer/task/general.dart';
16 import 'package:analyzer/task/model.dart'; 17 import 'package:analyzer/task/model.dart';
17 import 'package:source_span/source_span.dart'; 18 import 'package:source_span/source_span.dart';
18 import 'package:yaml/yaml.dart'; 19 import 'package:yaml/yaml.dart';
19 20
20 /// The errors produced while parsing `.analysis_options` files. 21 /// The errors produced while parsing `.analysis_options` files.
21 /// 22 ///
22 /// The list will be empty if there were no errors, but will not be `null`. 23 /// The list will be empty if there were no errors, but will not be `null`.
23 final ListResultDescriptor<AnalysisError> ANALYSIS_OPTIONS_ERRORS = 24 final ListResultDescriptor<AnalysisError> ANALYSIS_OPTIONS_ERRORS =
24 new ListResultDescriptor<AnalysisError>( 25 new ListResultDescriptor<AnalysisError>(
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 } 119 }
119 } 120 }
120 121
121 /// Validates `analyzer` error filter options. 122 /// Validates `analyzer` error filter options.
122 class ErrorFilterOptionValidator extends OptionsValidator { 123 class ErrorFilterOptionValidator extends OptionsValidator {
123 /// Pretty list of legal includes. 124 /// Pretty list of legal includes.
124 static final String legalIncludes = StringUtilities.printListOfQuotedNames( 125 static final String legalIncludes = StringUtilities.printListOfQuotedNames(
125 new List.from(AnalyzerOptions.ignoreSynonyms) 126 new List.from(AnalyzerOptions.ignoreSynonyms)
126 ..addAll(AnalyzerOptions.includeSynonyms)); 127 ..addAll(AnalyzerOptions.includeSynonyms));
127 128
129 bool recognizedErrorCode(String name) =>
130 ErrorCode.values.any((ErrorCode code) => code.name == name) ||
131 StaticInfo.names.contains(name);
132
128 @override 133 @override
129 void validate(ErrorReporter reporter, Map<String, YamlNode> options) { 134 void validate(ErrorReporter reporter, Map<String, YamlNode> options) {
130 var analyzer = options[AnalyzerOptions.analyzer]; 135 var analyzer = options[AnalyzerOptions.analyzer];
131 if (analyzer is! YamlMap) { 136 if (analyzer is! YamlMap) {
132 return; 137 return;
133 } 138 }
134 139
135 var filters = analyzer[AnalyzerOptions.errors]; 140 var filters = analyzer[AnalyzerOptions.errors];
136 if (filters is YamlMap) { 141 if (filters is YamlMap) {
137 String value; 142 String value;
138 filters.nodes.forEach((k, v) { 143 filters.nodes.forEach((k, v) {
139 if (k is YamlScalar) { 144 if (k is YamlScalar) {
140 value = toUpperCase(k.value); 145 value = toUpperCase(k.value);
141 if (!ErrorCode.values.any((ErrorCode code) => code.name == value)) { 146 if (!recognizedErrorCode(value)) {
142 reporter.reportErrorForSpan( 147 reporter.reportErrorForSpan(
143 AnalysisOptionsWarningCode.UNRECOGNIZED_ERROR_CODE, 148 AnalysisOptionsWarningCode.UNRECOGNIZED_ERROR_CODE,
144 k.span, 149 k.span,
145 [k.value?.toString()]); 150 [k.value?.toString()]);
146 } 151 }
147 } 152 }
148 if (v is YamlScalar) { 153 if (v is YamlScalar) {
149 value = toLowerCase(v.value); 154 value = toLowerCase(v.value);
150 if (!AnalyzerOptions.ignoreSynonyms.contains(value) && 155 if (!AnalyzerOptions.ignoreSynonyms.contains(value) &&
151 !AnalyzerOptions.includeSynonyms.contains(value)) { 156 !AnalyzerOptions.includeSynonyms.contains(value)) {
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 void setStrongMode(AnalysisContext context, Object strongMode) { 450 void setStrongMode(AnalysisContext context, Object strongMode) {
446 bool strong = strongMode is bool ? strongMode : false; 451 bool strong = strongMode is bool ? strongMode : false;
447 if (context.analysisOptions.strongMode != strong) { 452 if (context.analysisOptions.strongMode != strong) {
448 AnalysisOptionsImpl options = 453 AnalysisOptionsImpl options =
449 new AnalysisOptionsImpl.from(context.analysisOptions); 454 new AnalysisOptionsImpl.from(context.analysisOptions);
450 options.strongMode = strong; 455 options.strongMode = strong;
451 context.analysisOptions = options; 456 context.analysisOptions = options;
452 } 457 }
453 } 458 }
454 } 459 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/task/strong/info.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698