| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 services.src.linter; | 5 library services.src.linter; |
| 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/src/lint/registry.dart'; | 9 import 'package:linter/src/rules.dart'; |
| 10 import 'package:yaml/yaml.dart'; | 10 import 'package:yaml/yaml.dart'; |
| 11 | 11 |
| 12 /** | 12 /** |
| 13 * An error code indicating an undefined lint rule. | 13 * An error code indicating an undefined lint rule. |
| 14 * | 14 * |
| 15 * Parameters: | 15 * Parameters: |
| 16 * 0: the rule name | 16 * 0: the rule name |
| 17 */ | 17 */ |
| 18 const AnalysisOptionsWarningCode UNDEFINED_LINT_WARNING = | 18 const AnalysisOptionsWarningCode UNDEFINED_LINT_WARNING = |
| 19 const AnalysisOptionsWarningCode( | 19 const AnalysisOptionsWarningCode( |
| (...skipping 11 matching lines...) Expand all Loading... |
| 31 if (node is YamlMap) { | 31 if (node is YamlMap) { |
| 32 var rules = node.nodes[rulesKey]; | 32 var rules = node.nodes[rulesKey]; |
| 33 validateRules(rules, reporter); | 33 validateRules(rules, reporter); |
| 34 } | 34 } |
| 35 return errors; | 35 return errors; |
| 36 } | 36 } |
| 37 | 37 |
| 38 validateRules(dynamic rules, ErrorReporter reporter) { | 38 validateRules(dynamic rules, ErrorReporter reporter) { |
| 39 if (rules is YamlList) { | 39 if (rules is YamlList) { |
| 40 //TODO(pq): migrate this to a proper API once there is one. | 40 //TODO(pq): migrate this to a proper API once there is one. |
| 41 Iterable<String> registeredLints = | 41 Iterable<String> registeredLints = ruleRegistry.map((r) => r.name); |
| 42 Registry.ruleRegistry.map((r) => r.name); | |
| 43 rules.nodes.forEach((YamlNode ruleNode) { | 42 rules.nodes.forEach((YamlNode ruleNode) { |
| 44 Object value = ruleNode.value; | 43 Object value = ruleNode.value; |
| 45 if (value != null && !registeredLints.contains(value)) { | 44 if (value != null && !registeredLints.contains(value)) { |
| 46 reporter.reportErrorForSpan( | 45 reporter.reportErrorForSpan( |
| 47 UNDEFINED_LINT_WARNING, ruleNode.span, [value]); | 46 UNDEFINED_LINT_WARNING, ruleNode.span, [value]); |
| 48 } | 47 } |
| 49 }); | 48 }); |
| 50 } | 49 } |
| 51 } | 50 } |
| 52 } | 51 } |
| OLD | NEW |