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

Side by Side Diff: pkg/analysis_server/lib/src/context_manager.dart

Issue 2559523005: Remove the AnalysisOptionsProcessor (Closed)
Patch Set: Created 4 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 | « DEPS ('k') | pkg/analyzer/lib/plugin/options.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) 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 context.directory.manager; 5 library context.directory.manager;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 import 'dart:convert'; 9 import 'dart:convert';
10 import 'dart:core'; 10 import 'dart:core';
11 11
12 import 'package:analysis_server/src/analysis_server.dart'; 12 import 'package:analysis_server/src/analysis_server.dart';
13 import 'package:analyzer/exception/exception.dart';
14 import 'package:analyzer/file_system/file_system.dart'; 13 import 'package:analyzer/file_system/file_system.dart';
15 import 'package:analyzer/instrumentation/instrumentation.dart'; 14 import 'package:analyzer/instrumentation/instrumentation.dart';
16 import 'package:analyzer/plugin/options.dart';
17 import 'package:analyzer/plugin/resolver_provider.dart'; 15 import 'package:analyzer/plugin/resolver_provider.dart';
18 import 'package:analyzer/source/analysis_options_provider.dart'; 16 import 'package:analyzer/source/analysis_options_provider.dart';
19 import 'package:analyzer/source/package_map_provider.dart'; 17 import 'package:analyzer/source/package_map_provider.dart';
20 import 'package:analyzer/source/package_map_resolver.dart'; 18 import 'package:analyzer/source/package_map_resolver.dart';
21 import 'package:analyzer/source/path_filter.dart'; 19 import 'package:analyzer/source/path_filter.dart';
22 import 'package:analyzer/source/pub_package_map_provider.dart'; 20 import 'package:analyzer/source/pub_package_map_provider.dart';
23 import 'package:analyzer/source/sdk_ext.dart'; 21 import 'package:analyzer/source/sdk_ext.dart';
24 import 'package:analyzer/src/context/builder.dart'; 22 import 'package:analyzer/src/context/builder.dart';
25 import 'package:analyzer/src/context/context.dart' as context; 23 import 'package:analyzer/src/context/context.dart' as context;
26 import 'package:analyzer/src/dart/analysis/driver.dart'; 24 import 'package:analyzer/src/dart/analysis/driver.dart';
27 import 'package:analyzer/src/dart/sdk/sdk.dart'; 25 import 'package:analyzer/src/dart/sdk/sdk.dart';
28 import 'package:analyzer/src/generated/engine.dart'; 26 import 'package:analyzer/src/generated/engine.dart';
29 import 'package:analyzer/src/generated/java_io.dart'; 27 import 'package:analyzer/src/generated/java_io.dart';
30 import 'package:analyzer/src/generated/sdk.dart'; 28 import 'package:analyzer/src/generated/sdk.dart';
31 import 'package:analyzer/src/generated/source.dart'; 29 import 'package:analyzer/src/generated/source.dart';
32 import 'package:analyzer/src/generated/source_io.dart'; 30 import 'package:analyzer/src/generated/source_io.dart';
33 import 'package:analyzer/src/lint/config.dart';
34 import 'package:analyzer/src/lint/linter.dart';
35 import 'package:analyzer/src/lint/registry.dart';
36 import 'package:analyzer/src/task/options.dart'; 31 import 'package:analyzer/src/task/options.dart';
37 import 'package:analyzer/src/util/absolute_path.dart'; 32 import 'package:analyzer/src/util/absolute_path.dart';
38 import 'package:analyzer/src/util/glob.dart'; 33 import 'package:analyzer/src/util/glob.dart';
39 import 'package:analyzer/src/util/yaml.dart'; 34 import 'package:analyzer/src/util/yaml.dart';
40 import 'package:package_config/packages.dart'; 35 import 'package:package_config/packages.dart';
41 import 'package:package_config/packages_file.dart' as pkgfile show parse; 36 import 'package:package_config/packages_file.dart' as pkgfile show parse;
42 import 'package:package_config/src/packages_impl.dart' show MapPackages; 37 import 'package:package_config/src/packages_impl.dart' show MapPackages;
43 import 'package:path/path.dart' as pathos; 38 import 'package:path/path.dart' as pathos;
44 import 'package:watcher/watcher.dart'; 39 import 'package:watcher/watcher.dart';
45 import 'package:yaml/yaml.dart'; 40 import 'package:yaml/yaml.dart';
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 */ 334 */
340 AnalysisDriver addAnalysisDriver(Folder folder, AnalysisOptions options); 335 AnalysisDriver addAnalysisDriver(Folder folder, AnalysisOptions options);
341 336
342 /** 337 /**
343 * Create and return a new analysis context rooted at the given [folder], with 338 * Create and return a new analysis context rooted at the given [folder], with
344 * the given analysis [options]. 339 * the given analysis [options].
345 */ 340 */
346 AnalysisContext addContext(Folder folder, AnalysisOptions options); 341 AnalysisContext addContext(Folder folder, AnalysisOptions options);
347 342
348 /** 343 /**
349 * The given [file] was removed from the folder analyzed in the [driver].
350 */
351 void applyFileRemoved(AnalysisDriver driver, String file);
352
353 /**
354 * Called when the set of files associated with a context have changed (or 344 * Called when the set of files associated with a context have changed (or
355 * some of those files have been modified). [changeSet] is the set of 345 * some of those files have been modified). [changeSet] is the set of
356 * changes that need to be applied to the context. 346 * changes that need to be applied to the context.
357 */ 347 */
358 void applyChangesToContext(Folder contextFolder, ChangeSet changeSet); 348 void applyChangesToContext(Folder contextFolder, ChangeSet changeSet);
359 349
360 /** 350 /**
351 * The given [file] was removed from the folder analyzed in the [driver].
352 */
353 void applyFileRemoved(AnalysisDriver driver, String file);
354
355 /**
361 * Signals that the context manager has started to compute a package map (if 356 * Signals that the context manager has started to compute a package map (if
362 * [computing] is `true`) or has finished (if [computing] is `false`). 357 * [computing] is `true`) or has finished (if [computing] is `false`).
363 */ 358 */
364 void computingPackageMap(bool computing); 359 void computingPackageMap(bool computing);
365 360
366 /** 361 /**
367 * Create and return a context builder that can be used to create a context 362 * Create and return a context builder that can be used to create a context
368 * for the files in the given [folder] when analyzed using the given [options] . 363 * for the files in the given [folder] when analyzed using the given [options] .
369 */ 364 */
370 ContextBuilder createContextBuilder(Folder folder, AnalysisOptions options); 365 ContextBuilder createContextBuilder(Folder folder, AnalysisOptions options);
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 623
629 /** 624 /**
630 * Process [options] for the given context [info]. 625 * Process [options] for the given context [info].
631 */ 626 */
632 void processOptionsForContext(ContextInfo info, Map<String, Object> options, 627 void processOptionsForContext(ContextInfo info, Map<String, Object> options,
633 {bool optionsRemoved: false}) { 628 {bool optionsRemoved: false}) {
634 if (options == null && !optionsRemoved) { 629 if (options == null && !optionsRemoved) {
635 return; 630 return;
636 } 631 }
637 632
638 // In case options files are removed, revert to defaults. 633 AnalysisOptionsImpl analysisOptions;
639 if (optionsRemoved) { 634 if (optionsRemoved) {
640 // Start with defaults. 635 // In case options files are removed, revert to defaults.
641 info.context.analysisOptions = new AnalysisOptionsImpl(); 636 analysisOptions = new AnalysisOptionsImpl.from(defaultContextOptions);
642
643 // Apply inherited options. 637 // Apply inherited options.
644 options = _toStringMap(_getEmbeddedOptions(info)); 638 options = _toStringMap(_getEmbeddedOptions(info));
645 if (options != null) {
646 configureContextOptions(info.context, options);
647 }
648 } else { 639 } else {
640 analysisOptions =
641 new AnalysisOptionsImpl.from(info.context.analysisOptions);
649 // Check for embedded options. 642 // Check for embedded options.
650 Map embeddedOptions = _getEmbeddedOptions(info); 643 Map embeddedOptions = _getEmbeddedOptions(info);
651 if (embeddedOptions != null) { 644 if (embeddedOptions != null) {
652 options = _toStringMap(new Merger().merge(embeddedOptions, options)); 645 options = _toStringMap(new Merger().merge(embeddedOptions, options));
653 } 646 }
654 } 647 }
655 648 if (options != null) {
656 // Notify options processors. 649 applyToAnalysisOptions(analysisOptions, options);
657 AnalysisEngine.instance.optionsPlugin.optionsProcessors 650 }
658 .forEach((OptionsProcessor p) { 651 info.context.analysisOptions = analysisOptions;
659 try {
660 p.optionsProcessed(info.context, options);
661 } catch (e, stacktrace) {
662 AnalysisEngine.instance.logger.logError(
663 'Error processing analysis options',
664 new CaughtException(e, stacktrace));
665 }
666 });
667
668 configureContextOptions(info.context, options);
669 652
670 // Nothing more to do. 653 // Nothing more to do.
671 if (options == null) { 654 if (options == null) {
672 return; 655 return;
673 } 656 }
674 657
675 var analyzer = options[AnalyzerOptions.analyzer]; 658 var analyzer = options[AnalyzerOptions.analyzer];
676 if (analyzer is Map) { 659 if (analyzer is Map) {
677 // Set ignore patterns. 660 // Set ignore patterns.
678 YamlList exclude = analyzer[AnalyzerOptions.exclude]; 661 YamlList exclude = analyzer[AnalyzerOptions.exclude];
(...skipping 25 matching lines...) Expand all
704 applyToAnalysisOptions(analysisOptions, options); 687 applyToAnalysisOptions(analysisOptions, options);
705 } 688 }
706 } else { 689 } else {
707 // Check for embedded options. 690 // Check for embedded options.
708 Map embeddedOptions = _getEmbeddedOptions(info); 691 Map embeddedOptions = _getEmbeddedOptions(info);
709 if (embeddedOptions != null) { 692 if (embeddedOptions != null) {
710 options = _toStringMap(new Merger().merge(embeddedOptions, options)); 693 options = _toStringMap(new Merger().merge(embeddedOptions, options));
711 } 694 }
712 } 695 }
713 696
714 var lintOptions = options['linter'];
715 if (lintOptions != null) {
716 LintConfig config = new LintConfig.parseMap(lintOptions);
717 Iterable<LintRule> lintRules = Registry.ruleRegistry.enabled(config);
718 if (lintRules.isNotEmpty) {
719 analysisOptions.lint = true;
720 analysisOptions.lintRules = lintRules.toList();
721 }
722 }
723
724 applyToAnalysisOptions(analysisOptions, options); 697 applyToAnalysisOptions(analysisOptions, options);
725 698
726 // Nothing more to do. 699 // Nothing more to do.
727 if (options == null) { 700 if (options == null) {
728 return; 701 return;
729 } 702 }
730 703
731 var analyzer = options[AnalyzerOptions.analyzer]; 704 var analyzer = options[AnalyzerOptions.analyzer];
732 if (analyzer is Map) { 705 if (analyzer is Map) {
733 // Set ignore patterns. 706 // Set ignore patterns.
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 } 970 }
998 971
999 void _checkForPackagespecUpdate( 972 void _checkForPackagespecUpdate(
1000 String path, ContextInfo info, Folder folder) { 973 String path, ContextInfo info, Folder folder) {
1001 // Check to see if this is the .packages file for this context and if so, 974 // Check to see if this is the .packages file for this context and if so,
1002 // update the context's source factory. 975 // update the context's source factory.
1003 if (absolutePathContext.basename(path) == PACKAGE_SPEC_NAME) { 976 if (absolutePathContext.basename(path) == PACKAGE_SPEC_NAME) {
1004 String contextRoot = info.folder.path; 977 String contextRoot = info.folder.path;
1005 ContextBuilder builder = 978 ContextBuilder builder =
1006 callbacks.createContextBuilder(info.folder, defaultContextOptions); 979 callbacks.createContextBuilder(info.folder, defaultContextOptions);
1007 AnalysisOptions options = 980 AnalysisOptions options = builder.getAnalysisOptions(contextRoot);
1008 builder.getAnalysisOptions(info.context, contextRoot);
1009 SourceFactory factory = builder.createSourceFactory(contextRoot, options); 981 SourceFactory factory = builder.createSourceFactory(contextRoot, options);
1010 info.context.analysisOptions = options; 982 info.context.analysisOptions = options;
1011 info.context.sourceFactory = factory; 983 info.context.sourceFactory = factory;
1012 } 984 }
1013 } 985 }
1014 986
1015 /** 987 /**
1016 * Compute the set of files that are being flushed, this is defined as 988 * Compute the set of files that are being flushed, this is defined as
1017 * the set of sources in the removed context (context.sources), that are 989 * the set of sources in the removed context (context.sources), that are
1018 * orphaned by this context being removed (no other context includes this 990 * orphaned by this context being removed (no other context includes this
(...skipping 912 matching lines...) Expand 10 before | Expand all | Expand 10 after
1931 } 1903 }
1932 return _embedderLocator; 1904 return _embedderLocator;
1933 } 1905 }
1934 1906
1935 @override 1907 @override
1936 SdkExtensionFinder getSdkExtensionFinder(ResourceProvider resourceProvider) { 1908 SdkExtensionFinder getSdkExtensionFinder(ResourceProvider resourceProvider) {
1937 return _sdkExtensionFinder ??= 1909 return _sdkExtensionFinder ??=
1938 new SdkExtensionFinder(buildPackageMap(resourceProvider)); 1910 new SdkExtensionFinder(buildPackageMap(resourceProvider));
1939 } 1911 }
1940 } 1912 }
OLDNEW
« no previous file with comments | « DEPS ('k') | pkg/analyzer/lib/plugin/options.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698