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

Unified Diff: pkg/analyzer/lib/src/task/options.dart

Issue 1418333002: OptionsValidator plugin extension and linter service. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Review feedback. Created 5 years, 2 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/lib/src/plugin/options_plugin.dart ('k') | pkg/analyzer/test/src/task/options_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/task/options.dart
diff --git a/pkg/analyzer/lib/src/task/options.dart b/pkg/analyzer/lib/src/task/options.dart
index c80687bd88967f86b884e324dc7d2f06a9554716..80ac44f714593cafc19bd5acfeb3558165b3b79b 100644
--- a/pkg/analyzer/lib/src/task/options.dart
+++ b/pkg/analyzer/lib/src/task/options.dart
@@ -5,6 +5,7 @@
library analyzer.src.task.options;
import 'package:analyzer/analyzer.dart';
+import 'package:analyzer/plugin/options.dart';
import 'package:analyzer/source/analysis_options_provider.dart';
import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/source.dart';
@@ -27,6 +28,16 @@ class AnalyzerOptionsValidator extends TopLevelOptionValidator {
: super('analyzer', const ['exclude', 'plugins', 'strong-mode']);
}
+/// Convenience class for composing validators.
+class CompositeValidator extends OptionsValidator {
+ final List<OptionsValidator> validators;
+ CompositeValidator(this.validators);
+
+ @override
+ void validate(ErrorReporter reporter, Map<String, YamlNode> options) =>
+ validators.forEach((v) => v.validate(reporter, options));
+}
+
/// A task that generates errors for an `.analysis_options` file.
class GenerateOptionsErrorsTask extends SourceBasedAnalysisTask {
/// The name of the input whose value is the content of the file.
@@ -96,12 +107,15 @@ class LinterOptionsValidator extends TopLevelOptionValidator {
/// Validates options defined in an `.analysis_options` file.
class OptionsFileValidator {
// TODO(pq): move to an extension point.
- static final List<OptionsValidator> _validators = [
- new AnalyzerOptionsValidator(), new LinterOptionsValidator()
+ final List<OptionsValidator> _validators = [
+ new AnalyzerOptionsValidator(),
+ new LinterOptionsValidator()
];
final Source source;
- OptionsFileValidator(this.source);
+ OptionsFileValidator(this.source) {
+ _validators.addAll(AnalysisEngine.instance.optionsPlugin.optionsValidators);
+ }
List<AnalysisError> validate(Map<String, YamlNode> options) {
RecordingErrorListener recorder = new RecordingErrorListener();
@@ -111,12 +125,6 @@ class OptionsFileValidator {
}
}
-/// Validates options.
-abstract class OptionsValidator {
- /// Validate [options], reporting any errors to the given [reporter].
- void validate(ErrorReporter reporter, Map<String, YamlNode> options);
-}
-
/// Validates top-level options. For example,
/// plugin:
/// top-level-option: true
« no previous file with comments | « pkg/analyzer/lib/src/plugin/options_plugin.dart ('k') | pkg/analyzer/test/src/task/options_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698