| OLD | NEW |
| 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 'dart:collection'; |
| 8 |
| 7 import 'package:analyzer/analyzer.dart'; | 9 import 'package:analyzer/analyzer.dart'; |
| 8 import 'package:analyzer/plugin/options.dart'; | 10 import 'package:analyzer/plugin/options.dart'; |
| 9 import 'package:analyzer/source/analysis_options_provider.dart'; | 11 import 'package:analyzer/source/analysis_options_provider.dart'; |
| 10 import 'package:analyzer/src/generated/engine.dart'; | 12 import 'package:analyzer/src/generated/engine.dart'; |
| 11 import 'package:analyzer/src/generated/java_engine.dart'; | 13 import 'package:analyzer/src/generated/java_engine.dart'; |
| 12 import 'package:analyzer/src/generated/source.dart'; | 14 import 'package:analyzer/src/generated/source.dart'; |
| 13 import 'package:analyzer/src/generated/utilities_general.dart'; | 15 import 'package:analyzer/src/generated/utilities_general.dart'; |
| 14 import 'package:analyzer/src/task/general.dart'; | 16 import 'package:analyzer/src/task/general.dart'; |
| 15 import 'package:analyzer/src/task/strong/info.dart'; | 17 import 'package:analyzer/src/task/strong/info.dart'; |
| 16 import 'package:analyzer/task/general.dart'; | 18 import 'package:analyzer/task/general.dart'; |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 } | 121 } |
| 120 } | 122 } |
| 121 | 123 |
| 122 /// Validates `analyzer` error filter options. | 124 /// Validates `analyzer` error filter options. |
| 123 class ErrorFilterOptionValidator extends OptionsValidator { | 125 class ErrorFilterOptionValidator extends OptionsValidator { |
| 124 /// Pretty list of legal includes. | 126 /// Pretty list of legal includes. |
| 125 static final String legalIncludes = StringUtilities.printListOfQuotedNames( | 127 static final String legalIncludes = StringUtilities.printListOfQuotedNames( |
| 126 new List.from(AnalyzerOptions.ignoreSynonyms) | 128 new List.from(AnalyzerOptions.ignoreSynonyms) |
| 127 ..addAll(AnalyzerOptions.includeSynonyms)); | 129 ..addAll(AnalyzerOptions.includeSynonyms)); |
| 128 | 130 |
| 129 bool recognizedErrorCode(String name) => | 131 /// Lazily populated set of error codes (hashed for speedy lookup). |
| 130 ErrorCode.values.any((ErrorCode code) => code.name == name) || | 132 static HashSet<String> _errorCodes; |
| 131 StaticInfo.names.contains(name); | 133 |
| 134 /// Legal error code names. |
| 135 static Set<String> get errorCodes { |
| 136 if (_errorCodes == null) { |
| 137 _errorCodes = new HashSet<String>(); |
| 138 // Engine codes. |
| 139 _errorCodes.addAll(ErrorCode.values.map((ErrorCode code) => code.name)); |
| 140 // Strong-mode codes. |
| 141 _errorCodes.addAll(StaticInfo.names); |
| 142 } |
| 143 return _errorCodes; |
| 144 } |
| 132 | 145 |
| 133 @override | 146 @override |
| 134 void validate(ErrorReporter reporter, Map<String, YamlNode> options) { | 147 void validate(ErrorReporter reporter, Map<String, YamlNode> options) { |
| 135 var analyzer = options[AnalyzerOptions.analyzer]; | 148 var analyzer = options[AnalyzerOptions.analyzer]; |
| 136 if (analyzer is! YamlMap) { | 149 if (analyzer is! YamlMap) { |
| 137 return; | 150 return; |
| 138 } | 151 } |
| 139 | 152 |
| 140 var filters = analyzer[AnalyzerOptions.errors]; | 153 var filters = analyzer[AnalyzerOptions.errors]; |
| 141 if (filters is YamlMap) { | 154 if (filters is YamlMap) { |
| 142 String value; | 155 String value; |
| 143 filters.nodes.forEach((k, v) { | 156 filters.nodes.forEach((k, v) { |
| 144 if (k is YamlScalar) { | 157 if (k is YamlScalar) { |
| 145 value = toUpperCase(k.value); | 158 value = toUpperCase(k.value); |
| 146 if (!recognizedErrorCode(value)) { | 159 if (!errorCodes.contains(value)) { |
| 147 reporter.reportErrorForSpan( | 160 reporter.reportErrorForSpan( |
| 148 AnalysisOptionsWarningCode.UNRECOGNIZED_ERROR_CODE, | 161 AnalysisOptionsWarningCode.UNRECOGNIZED_ERROR_CODE, |
| 149 k.span, | 162 k.span, |
| 150 [k.value?.toString()]); | 163 [k.value?.toString()]); |
| 151 } | 164 } |
| 152 } | 165 } |
| 153 if (v is YamlScalar) { | 166 if (v is YamlScalar) { |
| 154 value = toLowerCase(v.value); | 167 value = toLowerCase(v.value); |
| 155 if (!AnalyzerOptions.ignoreSynonyms.contains(value) && | 168 if (!AnalyzerOptions.ignoreSynonyms.contains(value) && |
| 156 !AnalyzerOptions.includeSynonyms.contains(value)) { | 169 !AnalyzerOptions.includeSynonyms.contains(value)) { |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 450 void setStrongMode(AnalysisContext context, Object strongMode) { | 463 void setStrongMode(AnalysisContext context, Object strongMode) { |
| 451 bool strong = strongMode is bool ? strongMode : false; | 464 bool strong = strongMode is bool ? strongMode : false; |
| 452 if (context.analysisOptions.strongMode != strong) { | 465 if (context.analysisOptions.strongMode != strong) { |
| 453 AnalysisOptionsImpl options = | 466 AnalysisOptionsImpl options = |
| 454 new AnalysisOptionsImpl.from(context.analysisOptions); | 467 new AnalysisOptionsImpl.from(context.analysisOptions); |
| 455 options.strongMode = strong; | 468 options.strongMode = strong; |
| 456 context.analysisOptions = options; | 469 context.analysisOptions = options; |
| 457 } | 470 } |
| 458 } | 471 } |
| 459 } | 472 } |
| OLD | NEW |